From 9ba9cbc6a6e95663c2f59f6f504d0c170899d0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= <72651575+BreizhHardware@users.noreply.github.com> Date: Wed, 25 Jun 2025 16:19:43 +0200 Subject: [PATCH] =?UTF-8?q?TP4=20Exo=203=20(Affichage=20d'un=20nombre=20su?= =?UTF-8?q?r=20l=E2=80=99=C3=A9cran=20graphique=20TFT)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TP4_INIT_TFT/.cproject | 182 + TP4_INIT_TFT/.mxproject | 25 + TP4_INIT_TFT/.project | 32 + .../com.st.stm32cube.ide.mcu.sfrview.prefs | 2 + TP4_INIT_TFT/.settings/language.settings.xml | 25 + .../.settings/org.eclipse.cdt.core.prefs | 6 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/stm32cubeide.project.prefs | 5 + TP4_INIT_TFT/Core/Inc/main.h | 69 + TP4_INIT_TFT/Core/Inc/stm32l1xx_hal_conf.h | 318 + TP4_INIT_TFT/Core/Inc/stm32l1xx_it.h | 66 + TP4_INIT_TFT/Core/Src/main.c | 310 + TP4_INIT_TFT/Core/Src/stm32l1xx_hal_msp.c | 151 + TP4_INIT_TFT/Core/Src/stm32l1xx_it.c | 203 + TP4_INIT_TFT/Core/Src/syscalls.c | 176 + TP4_INIT_TFT/Core/Src/sysmem.c | 79 + TP4_INIT_TFT/Core/Src/system_stm32l1xx.c | 428 + .../Core/Startup/startup_stm32l152retx.s | 413 + TP4_INIT_TFT/Debug/Core/Src/main.cyclo | 6 + TP4_INIT_TFT/Debug/Core/Src/main.d | 55 + TP4_INIT_TFT/Debug/Core/Src/main.o | Bin 0 -> 739848 bytes TP4_INIT_TFT/Debug/Core/Src/main.su | 6 + .../Debug/Core/Src/stm32l1xx_hal_msp.cyclo | 3 + .../Debug/Core/Src/stm32l1xx_hal_msp.d | 52 + .../Debug/Core/Src/stm32l1xx_hal_msp.o | Bin 0 -> 712016 bytes .../Debug/Core/Src/stm32l1xx_hal_msp.su | 3 + .../Debug/Core/Src/stm32l1xx_it.cyclo | 9 + TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.d | 54 + TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.o | Bin 0 -> 708860 bytes TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.su | 9 + TP4_INIT_TFT/Debug/Core/Src/subdir.mk | 42 + TP4_INIT_TFT/Debug/Core/Src/syscalls.cyclo | 18 + TP4_INIT_TFT/Debug/Core/Src/syscalls.d | 1 + TP4_INIT_TFT/Debug/Core/Src/syscalls.o | Bin 0 -> 83424 bytes TP4_INIT_TFT/Debug/Core/Src/syscalls.su | 18 + TP4_INIT_TFT/Debug/Core/Src/sysmem.cyclo | 1 + TP4_INIT_TFT/Debug/Core/Src/sysmem.d | 1 + TP4_INIT_TFT/Debug/Core/Src/sysmem.o | Bin 0 -> 55892 bytes TP4_INIT_TFT/Debug/Core/Src/sysmem.su | 1 + .../Debug/Core/Src/system_stm32l1xx.cyclo | 2 + .../Debug/Core/Src/system_stm32l1xx.d | 51 + .../Debug/Core/Src/system_stm32l1xx.o | Bin 0 -> 709044 bytes .../Debug/Core/Src/system_stm32l1xx.su | 2 + .../Core/Startup/startup_stm32l152retx.d | 2 + .../Core/Startup/startup_stm32l152retx.o | Bin 0 -> 6044 bytes TP4_INIT_TFT/Debug/Core/Startup/subdir.mk | 27 + .../Debug/Drivers/7Seg_MAX7219/max7219.cyclo | 12 + .../Debug/Drivers/7Seg_MAX7219/max7219.d | 54 + .../Debug/Drivers/7Seg_MAX7219/max7219.o | Bin 0 -> 715952 bytes .../Debug/Drivers/7Seg_MAX7219/max7219.su | 12 + .../Debug/Drivers/7Seg_MAX7219/subdir.mk | 27 + .../Src/stm32l1xx_hal.cyclo | 25 + .../STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.d | 52 + .../STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o | Bin 0 -> 720128 bytes .../STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.su | 25 + .../Src/stm32l1xx_hal_cortex.cyclo | 34 + .../Src/stm32l1xx_hal_cortex.d | 52 + .../Src/stm32l1xx_hal_cortex.o | Bin 0 -> 726224 bytes .../Src/stm32l1xx_hal_cortex.su | 34 + .../Src/stm32l1xx_hal_dma.cyclo | 13 + .../Src/stm32l1xx_hal_dma.d | 52 + .../Src/stm32l1xx_hal_dma.o | Bin 0 -> 717096 bytes .../Src/stm32l1xx_hal_dma.su | 13 + .../Src/stm32l1xx_hal_exti.cyclo | 9 + .../Src/stm32l1xx_hal_exti.d | 52 + .../Src/stm32l1xx_hal_exti.o | Bin 0 -> 712800 bytes .../Src/stm32l1xx_hal_exti.su | 9 + .../Src/stm32l1xx_hal_flash.cyclo | 13 + .../Src/stm32l1xx_hal_flash.d | 52 + .../Src/stm32l1xx_hal_flash.o | Bin 0 -> 714792 bytes .../Src/stm32l1xx_hal_flash.su | 13 + .../Src/stm32l1xx_hal_flash_ex.cyclo | 31 + .../Src/stm32l1xx_hal_flash_ex.d | 52 + .../Src/stm32l1xx_hal_flash_ex.o | Bin 0 -> 728060 bytes .../Src/stm32l1xx_hal_flash_ex.su | 31 + .../Src/stm32l1xx_hal_flash_ramfunc.cyclo | 10 + .../Src/stm32l1xx_hal_flash_ramfunc.d | 52 + .../Src/stm32l1xx_hal_flash_ramfunc.o | Bin 0 -> 713660 bytes .../Src/stm32l1xx_hal_flash_ramfunc.su | 10 + .../Src/stm32l1xx_hal_gpio.cyclo | 8 + .../Src/stm32l1xx_hal_gpio.d | 52 + .../Src/stm32l1xx_hal_gpio.o | Bin 0 -> 713432 bytes .../Src/stm32l1xx_hal_gpio.su | 8 + .../Src/stm32l1xx_hal_pwr.cyclo | 17 + .../Src/stm32l1xx_hal_pwr.d | 52 + .../Src/stm32l1xx_hal_pwr.o | Bin 0 -> 715676 bytes .../Src/stm32l1xx_hal_pwr.su | 17 + .../Src/stm32l1xx_hal_pwr_ex.cyclo | 7 + .../Src/stm32l1xx_hal_pwr_ex.d | 52 + .../Src/stm32l1xx_hal_pwr_ex.o | Bin 0 -> 710336 bytes .../Src/stm32l1xx_hal_pwr_ex.su | 7 + .../Src/stm32l1xx_hal_rcc.cyclo | 15 + .../Src/stm32l1xx_hal_rcc.d | 52 + .../Src/stm32l1xx_hal_rcc.o | Bin 0 -> 722576 bytes .../Src/stm32l1xx_hal_rcc.su | 15 + .../Src/stm32l1xx_hal_rcc_ex.cyclo | 8 + .../Src/stm32l1xx_hal_rcc_ex.d | 52 + .../Src/stm32l1xx_hal_rcc_ex.o | Bin 0 -> 712324 bytes .../Src/stm32l1xx_hal_rcc_ex.su | 8 + .../Src/stm32l1xx_hal_spi.cyclo | 55 + .../Src/stm32l1xx_hal_spi.d | 52 + .../Src/stm32l1xx_hal_spi.o | Bin 0 -> 748204 bytes .../Src/stm32l1xx_hal_spi.su | 55 + .../STM32L1xx_HAL_Driver/Src/subdir.mk | 63 + .../Debug/Drivers/TFT_ST7735/fonc_tft.cyclo | 12 + .../Debug/Drivers/TFT_ST7735/fonc_tft.d | 54 + .../Debug/Drivers/TFT_ST7735/fonc_tft.o | Bin 0 -> 723760 bytes .../Debug/Drivers/TFT_ST7735/fonc_tft.su | 12 + .../Debug/Drivers/TFT_ST7735/subdir.mk | 27 + TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.list | 5454 ++++++++++ TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.map | 2896 ++++++ TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.list | 5427 ++++++++++ TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.map | 2895 ++++++ TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.list | 7251 +++++++++++++ TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.map | 3420 ++++++ TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.list | 8291 +++++++++++++++ TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.map | 3419 ++++++ TP4_INIT_TFT/Debug/TP3_PWM_LED.list | 8719 ++++++++++++++++ TP4_INIT_TFT/Debug/TP3_PWM_LED.map | 3436 ++++++ TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.list | 9179 +++++++++++++++++ TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.map | 3477 +++++++ TP4_INIT_TFT/Debug/TP4_GAMME.list | 8029 ++++++++++++++ TP4_INIT_TFT/Debug/TP4_GAMME.map | 3423 ++++++ TP4_INIT_TFT/Debug/TP4_INIT_TFT.elf | Bin 0 -> 735008 bytes TP4_INIT_TFT/Debug/TP4_INIT_TFT.list | 6808 ++++++++++++ TP4_INIT_TFT/Debug/TP4_INIT_TFT.map | 3104 ++++++ TP4_INIT_TFT/Debug/TP4_MELODIE.list | 8000 ++++++++++++++ TP4_INIT_TFT/Debug/TP4_MELODIE.map | 3415 ++++++ TP4_INIT_TFT/Debug/makefile | 96 + TP4_INIT_TFT/Debug/objects.list | 22 + TP4_INIT_TFT/Debug/objects.mk | 9 + TP4_INIT_TFT/Debug/sources.mk | 30 + TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.c | 269 + TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.h | 15 + .../Device/ST/STM32L1xx/Include/stm32l152xe.h | 9022 ++++++++++++++++ .../Device/ST/STM32L1xx/Include/stm32l1xx.h | 299 + .../ST/STM32L1xx/Include/system_stm32l1xx.h | 107 + .../CMSIS/Device/ST/STM32L1xx/LICENSE.txt | 6 + .../CMSIS/Device/ST/STM32L1xx/License.md | 83 + .../Drivers/CMSIS/Include/cmsis_armcc.h | 865 ++ .../Drivers/CMSIS/Include/cmsis_armclang.h | 1869 ++++ .../Drivers/CMSIS/Include/cmsis_compiler.h | 266 + .../Drivers/CMSIS/Include/cmsis_gcc.h | 2085 ++++ .../Drivers/CMSIS/Include/cmsis_iccarm.h | 935 ++ .../Drivers/CMSIS/Include/cmsis_version.h | 39 + .../Drivers/CMSIS/Include/core_armv8mbl.h | 1918 ++++ .../Drivers/CMSIS/Include/core_armv8mml.h | 2927 ++++++ TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0.h | 949 ++ .../Drivers/CMSIS/Include/core_cm0plus.h | 1083 ++ TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm1.h | 976 ++ .../Drivers/CMSIS/Include/core_cm23.h | 1993 ++++ TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm3.h | 1941 ++++ .../Drivers/CMSIS/Include/core_cm33.h | 3002 ++++++ TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm4.h | 2129 ++++ TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm7.h | 2671 +++++ .../Drivers/CMSIS/Include/core_sc000.h | 1022 ++ .../Drivers/CMSIS/Include/core_sc300.h | 1915 ++++ .../Drivers/CMSIS/Include/mpu_armv7.h | 270 + .../Drivers/CMSIS/Include/mpu_armv8.h | 333 + .../Drivers/CMSIS/Include/tz_context.h | 70 + TP4_INIT_TFT/Drivers/CMSIS/LICENSE.txt | 201 + .../Inc/Legacy/stm32_hal_legacy.h | 4422 ++++++++ .../STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h | 995 ++ .../Inc/stm32l1xx_hal_cortex.h | 437 + .../Inc/stm32l1xx_hal_def.h | 199 + .../Inc/stm32l1xx_hal_dma.h | 651 ++ .../Inc/stm32l1xx_hal_exti.h | 315 + .../Inc/stm32l1xx_hal_flash.h | 411 + .../Inc/stm32l1xx_hal_flash_ex.h | 965 ++ .../Inc/stm32l1xx_hal_flash_ramfunc.h | 116 + .../Inc/stm32l1xx_hal_gpio.h | 333 + .../Inc/stm32l1xx_hal_gpio_ex.h | 203 + .../Inc/stm32l1xx_hal_pwr.h | 483 + .../Inc/stm32l1xx_hal_pwr_ex.h | 115 + .../Inc/stm32l1xx_hal_rcc.h | 1895 ++++ .../Inc/stm32l1xx_hal_rcc_ex.h | 1027 ++ .../Inc/stm32l1xx_hal_spi.h | 749 ++ .../Inc/stm32l1xx_ll_bus.h | 1100 ++ .../Inc/stm32l1xx_ll_cortex.h | 637 ++ .../Inc/stm32l1xx_ll_dma.h | 1996 ++++ .../Inc/stm32l1xx_ll_exti.h | 1015 ++ .../Inc/stm32l1xx_ll_gpio.h | 987 ++ .../Inc/stm32l1xx_ll_pwr.h | 718 ++ .../Inc/stm32l1xx_ll_rcc.h | 1796 ++++ .../Inc/stm32l1xx_ll_spi.h | 2015 ++++ .../Inc/stm32l1xx_ll_system.h | 2007 ++++ .../Inc/stm32l1xx_ll_utils.h | 270 + .../Drivers/STM32L1xx_HAL_Driver/LICENSE.txt | 6 + .../Drivers/STM32L1xx_HAL_Driver/License.md | 3 + .../STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c | 570 + .../Src/stm32l1xx_hal_cortex.c | 537 + .../Src/stm32l1xx_hal_dma.c | 909 ++ .../Src/stm32l1xx_hal_exti.c | 547 + .../Src/stm32l1xx_hal_flash.c | 723 ++ .../Src/stm32l1xx_hal_flash_ex.c | 1870 ++++ .../Src/stm32l1xx_hal_flash_ramfunc.c | 640 ++ .../Src/stm32l1xx_hal_gpio.c | 546 + .../Src/stm32l1xx_hal_pwr.c | 650 ++ .../Src/stm32l1xx_hal_pwr_ex.c | 158 + .../Src/stm32l1xx_hal_rcc.c | 1394 +++ .../Src/stm32l1xx_hal_rcc_ex.c | 447 + .../Src/stm32l1xx_hal_spi.c | 3962 +++++++ TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.c | 1065 ++ TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.h | 65 + TP4_INIT_TFT/STM32L152RETX_FLASH.ld | 187 + TP4_INIT_TFT/STM32L152RETX_RAM.ld | 187 + TP4_INIT_TFT/TP4_INIT_TFT Debug.launch | 85 + TP4_INIT_TFT/TP4_INIT_TFT.ioc | 145 + 208 files changed, 180907 insertions(+) create mode 100644 TP4_INIT_TFT/.cproject create mode 100644 TP4_INIT_TFT/.mxproject create mode 100644 TP4_INIT_TFT/.project create mode 100644 TP4_INIT_TFT/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs create mode 100644 TP4_INIT_TFT/.settings/language.settings.xml create mode 100644 TP4_INIT_TFT/.settings/org.eclipse.cdt.core.prefs create mode 100644 TP4_INIT_TFT/.settings/org.eclipse.core.resources.prefs create mode 100644 TP4_INIT_TFT/.settings/stm32cubeide.project.prefs create mode 100644 TP4_INIT_TFT/Core/Inc/main.h create mode 100644 TP4_INIT_TFT/Core/Inc/stm32l1xx_hal_conf.h create mode 100644 TP4_INIT_TFT/Core/Inc/stm32l1xx_it.h create mode 100644 TP4_INIT_TFT/Core/Src/main.c create mode 100644 TP4_INIT_TFT/Core/Src/stm32l1xx_hal_msp.c create mode 100644 TP4_INIT_TFT/Core/Src/stm32l1xx_it.c create mode 100644 TP4_INIT_TFT/Core/Src/syscalls.c create mode 100644 TP4_INIT_TFT/Core/Src/sysmem.c create mode 100644 TP4_INIT_TFT/Core/Src/system_stm32l1xx.c create mode 100644 TP4_INIT_TFT/Core/Startup/startup_stm32l152retx.s create mode 100644 TP4_INIT_TFT/Debug/Core/Src/main.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/main.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/main.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/main.su create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.su create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.su create mode 100644 TP4_INIT_TFT/Debug/Core/Src/subdir.mk create mode 100644 TP4_INIT_TFT/Debug/Core/Src/syscalls.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/syscalls.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/syscalls.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/syscalls.su create mode 100644 TP4_INIT_TFT/Debug/Core/Src/sysmem.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/sysmem.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/sysmem.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/sysmem.su create mode 100644 TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.cyclo create mode 100644 TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.d create mode 100644 TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.o create mode 100644 TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.su create mode 100644 TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.d create mode 100644 TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.o create mode 100644 TP4_INIT_TFT/Debug/Core/Startup/subdir.mk create mode 100644 TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/subdir.mk create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/subdir.mk create mode 100644 TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.cyclo create mode 100644 TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.d create mode 100644 TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.o create mode 100644 TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.su create mode 100644 TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/subdir.mk create mode 100644 TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.list create mode 100644 TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.map create mode 100644 TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.list create mode 100644 TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.map create mode 100644 TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.list create mode 100644 TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.map create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.list create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.map create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_LED.list create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_LED.map create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.list create mode 100644 TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.map create mode 100644 TP4_INIT_TFT/Debug/TP4_GAMME.list create mode 100644 TP4_INIT_TFT/Debug/TP4_GAMME.map create mode 100755 TP4_INIT_TFT/Debug/TP4_INIT_TFT.elf create mode 100644 TP4_INIT_TFT/Debug/TP4_INIT_TFT.list create mode 100644 TP4_INIT_TFT/Debug/TP4_INIT_TFT.map create mode 100644 TP4_INIT_TFT/Debug/TP4_MELODIE.list create mode 100644 TP4_INIT_TFT/Debug/TP4_MELODIE.map create mode 100644 TP4_INIT_TFT/Debug/makefile create mode 100644 TP4_INIT_TFT/Debug/objects.list create mode 100644 TP4_INIT_TFT/Debug/objects.mk create mode 100644 TP4_INIT_TFT/Debug/sources.mk create mode 100644 TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.c create mode 100644 TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/LICENSE.txt create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/License.md create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_armcc.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_armclang.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_compiler.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_gcc.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_iccarm.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_version.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mbl.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mml.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0plus.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm1.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm23.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm3.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm33.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm4.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm7.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc000.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc300.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv7.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv8.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/Include/tz_context.h create mode 100644 TP4_INIT_TFT/Drivers/CMSIS/LICENSE.txt create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/LICENSE.txt create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/License.md create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c create mode 100644 TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c create mode 100644 TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.c create mode 100644 TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.h create mode 100644 TP4_INIT_TFT/STM32L152RETX_FLASH.ld create mode 100644 TP4_INIT_TFT/STM32L152RETX_RAM.ld create mode 100644 TP4_INIT_TFT/TP4_INIT_TFT Debug.launch create mode 100644 TP4_INIT_TFT/TP4_INIT_TFT.ioc diff --git a/TP4_INIT_TFT/.cproject b/TP4_INIT_TFT/.cproject new file mode 100644 index 0000000..eb1b19d --- /dev/null +++ b/TP4_INIT_TFT/.cproject @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TP4_INIT_TFT/.mxproject b/TP4_INIT_TFT/.mxproject new file mode 100644 index 0000000..5753e82 --- /dev/null +++ b/TP4_INIT_TFT/.mxproject @@ -0,0 +1,25 @@ +[PreviousLibFiles] +LibFiles=Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h;Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_crs.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h;Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_crs.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h;Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h;Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h;Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h;Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h;Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h;Drivers/CMSIS/Device/ST/STM32L1xx/Source/Templates/system_stm32l1xx.c;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_armv8mbl.h; + +[PreviousUsedCubeIDEFiles] +SourceFiles=Core/Src/main.c;Core/Src/stm32l1xx_it.c;Core/Src/stm32l1xx_hal_msp.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c;Drivers/CMSIS/Device/ST/STM32L1xx/Source/Templates/system_stm32l1xx.c;Core/Src/system_stm32l1xx.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c;Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c;Drivers/CMSIS/Device/ST/STM32L1xx/Source/Templates/system_stm32l1xx.c;Core/Src/system_stm32l1xx.c;;; +HeaderPath=Drivers/STM32L1xx_HAL_Driver/Inc;Drivers/STM32L1xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32L1xx/Include;Drivers/CMSIS/Include;Core/Inc; +CDefines=USE_HAL_DRIVER;STM32L152xE;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=3 +HeaderFiles#0=../Core/Inc/stm32l1xx_it.h +HeaderFiles#1=../Core/Inc/stm32l1xx_hal_conf.h +HeaderFiles#2=../Core/Inc/main.h +HeaderFolderListSize=1 +HeaderPath#0=../Core/Inc +HeaderFiles=; +SourceFileListSize=3 +SourceFiles#0=../Core/Src/stm32l1xx_it.c +SourceFiles#1=../Core/Src/stm32l1xx_hal_msp.c +SourceFiles#2=../Core/Src/main.c +SourceFolderListSize=1 +SourcePath#0=../Core/Src +SourceFiles=; + diff --git a/TP4_INIT_TFT/.project b/TP4_INIT_TFT/.project new file mode 100644 index 0000000..1815b41 --- /dev/null +++ b/TP4_INIT_TFT/.project @@ -0,0 +1,32 @@ + + + TP4_INIT_TFT + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/TP4_INIT_TFT/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/TP4_INIT_TFT/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs new file mode 100644 index 0000000..98a69fc --- /dev/null +++ b/TP4_INIT_TFT/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} diff --git a/TP4_INIT_TFT/.settings/language.settings.xml b/TP4_INIT_TFT/.settings/language.settings.xml new file mode 100644 index 0000000..fd737e1 --- /dev/null +++ b/TP4_INIT_TFT/.settings/language.settings.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TP4_INIT_TFT/.settings/org.eclipse.cdt.core.prefs b/TP4_INIT_TFT/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..c8ec5df --- /dev/null +++ b/TP4_INIT_TFT/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,6 @@ +doxygen/doxygen_new_line_after_brief=true +doxygen/doxygen_use_brief_tag=false +doxygen/doxygen_use_javadoc_tags=true +doxygen/doxygen_use_pre_tag=false +doxygen/doxygen_use_structural_commands=false +eclipse.preferences.version=1 diff --git a/TP4_INIT_TFT/.settings/org.eclipse.core.resources.prefs b/TP4_INIT_TFT/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/TP4_INIT_TFT/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/TP4_INIT_TFT/.settings/stm32cubeide.project.prefs b/TP4_INIT_TFT/.settings/stm32cubeide.project.prefs new file mode 100644 index 0000000..a0b3b52 --- /dev/null +++ b/TP4_INIT_TFT/.settings/stm32cubeide.project.prefs @@ -0,0 +1,5 @@ +635E684B79701B039C64EA45C3F84D30=20408E19A1D483CC68E7BF859CC595B4 +66BE74F758C12D739921AEA421D593D3=3 +8DF89ED150041C4CBC7CB9A9CAA90856=787343FA0477F66DEA4B2B86368887F5 +DC22A860405A8BF2F2C095E5B6529F12=787343FA0477F66DEA4B2B86368887F5 +eclipse.preferences.version=1 diff --git a/TP4_INIT_TFT/Core/Inc/main.h b/TP4_INIT_TFT/Core/Inc/main.h new file mode 100644 index 0000000..f645caf --- /dev/null +++ b/TP4_INIT_TFT/Core/Inc/main.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ diff --git a/TP4_INIT_TFT/Core/Inc/stm32l1xx_hal_conf.h b/TP4_INIT_TFT/Core/Inc/stm32l1xx_hal_conf.h new file mode 100644 index 0000000..7ce33fa --- /dev/null +++ b/TP4_INIT_TFT/Core/Inc/stm32l1xx_hal_conf.h @@ -0,0 +1,318 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l1xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_CONF_H +#define __STM32L1xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ + +#define HAL_MODULE_ENABLED +/*#define HAL_ADC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_COMP_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_DAC_MODULE_ENABLED */ +/*#define HAL_I2C_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_LCD_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_OPAMP_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +#define HAL_SPI_MODULE_ENABLED +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_TIM_MODULE_ENABLED */ +/*#define HAL_UART_MODULE_ENABLED */ +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## Oscillator Values adaptation ####################*/ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)24000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal Multiple Speed oscillator (MSI) default value. + * This value is the default MSI range value after Reset. + */ +#if !defined (MSI_VALUE) + #define MSI_VALUE ((uint32_t)2097000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE (37000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature.*/ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ + +#define VDD_VALUE ((uint32_t)3300) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)15) /*!< tick interrupt priority */ +#define USE_RTOS 0 +#define PREFETCH_ENABLE 0 +#define INSTRUCTION_CACHE_ENABLE 1 +#define DATA_CACHE_ENABLE 1 + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Register callback feature configuration ############### */ +/** + * @brief Set below the peripheral configuration to "1U" to add the support + * of HAL callback registration/deregistration feature for the HAL + * driver(s). This allows user application to provide specific callback + * functions thanks to HAL_PPP_RegisterCallback() rather than overwriting + * the default weak callback functions (see each stm32l0xx_hal_ppp.h file + * for possible callback identifiers defined in HAL_PPP_CallbackIDTypeDef + * for each PPP peripheral). + */ +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U +#define USE_HAL_COMP_REGISTER_CALLBACKS 0U +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U +#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U +#define USE_HAL_SDMMC_REGISTER_CALLBACKS 0U +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U +#define USE_HAL_UART_REGISTER_CALLBACKS 0U +#define USE_HAL_USART_REGISTER_CALLBACKS 0U +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ + +#define USE_SPI_CRC 0U +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32l1xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32l1xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32l1xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32l1xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32l1xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED + #include "stm32l1xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32l1xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32l1xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32l1xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32l1xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32l1xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32l1xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32l1xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32l1xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32l1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LCD_MODULE_ENABLED + #include "stm32l1xx_hal_lcd.h" +#endif /* HAL_LCD_MODULE_ENABLED */ + +#ifdef HAL_OPAMP_MODULE_ENABLED + #include "stm32l1xx_hal_opamp.h" +#endif /* HAL_OPAMP_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32l1xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32l1xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32l1xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32l1xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32l1xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32l1xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32l1xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32l1xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32l1xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32l1xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32l1xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32l1xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_CONF_H */ + diff --git a/TP4_INIT_TFT/Core/Inc/stm32l1xx_it.h b/TP4_INIT_TFT/Core/Inc/stm32l1xx_it.h new file mode 100644 index 0000000..2c5eb24 --- /dev/null +++ b/TP4_INIT_TFT/Core/Inc/stm32l1xx_it.h @@ -0,0 +1,66 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l1xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_IT_H +#define __STM32L1xx_IT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_IT_H */ diff --git a/TP4_INIT_TFT/Core/Src/main.c b/TP4_INIT_TFT/Core/Src/main.c new file mode 100644 index 0000000..670ef32 --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/main.c @@ -0,0 +1,310 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "max7219.h" +#include "fonc_tft.h" +#include + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +SPI_HandleTypeDef hspi1; + +/* USER CODE BEGIN PV */ + + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_SPI1_Init(void); +/* USER CODE BEGIN PFP */ +void affiche_nombre(char nombre[], uint8_t col, uint8_t ligne); + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void affiche_nombre(char nombre[], uint8_t col, uint8_t ligne) { + int nombre_int = atoi(nombre); + + if (nombre_int < 0 || nombre_int > 9999) { + return; + } + + uint8_t mil = nombre_int / 1000; + uint8_t cen = (nombre_int / 100) % 10; + uint8_t diz = (nombre_int / 10) % 10; + uint8_t uni = nombre_int % 10; + + displayChar_TFT(col, ligne, mil + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + displayChar_TFT(col + 12, ligne, cen + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + displayChar_TFT(col + 24, ligne, diz + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + displayChar_TFT(col + 36, ligne, uni + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); +} + + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_SPI1_Init(); + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + init_TFT(); + MAX7219_Clear(); + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + char nombre[] = "4090"; + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + affiche_nombre(nombre, 10, 80); + } + + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + + /* USER CODE BEGIN SPI1_Init 0 */ + + /* USER CODE END SPI1_Init 0 */ + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + hspi1.Init.Mode = SPI_MODE_MASTER; + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi1.Init.NSS = SPI_NSS_SOFT; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi1.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_SET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); + + /*Configure GPIO pins : PC0 PC1 PC2 PC3 */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pin : PB15 */ + GPIO_InitStruct.Pin = GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /*Configure GPIO pin : PD2 */ + GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pin : PB7 */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/TP4_INIT_TFT/Core/Src/stm32l1xx_hal_msp.c b/TP4_INIT_TFT/Core/Src/stm32l1xx_hal_msp.c new file mode 100644 index 0000000..7b71e54 --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/stm32l1xx_hal_msp.c @@ -0,0 +1,151 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l1xx_hal_msp.c + * @brief This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/** + * @brief SPI MSP Initialization + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI1_MspInit 1 */ + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + +/** + * @brief SPI MSP De-Initialization + * This function freeze the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) +{ + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspDeInit 0 */ + + /* USER CODE END SPI1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI1_CLK_DISABLE(); + + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); + + /* USER CODE BEGIN SPI1_MspDeInit 1 */ + + /* USER CODE END SPI1_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/TP4_INIT_TFT/Core/Src/stm32l1xx_it.c b/TP4_INIT_TFT/Core/Src/stm32l1xx_it.c new file mode 100644 index 0000000..afd5dcc --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/stm32l1xx_it.c @@ -0,0 +1,203 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l1xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l1xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M3 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVC_IRQn 0 */ + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32L1xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32l1xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/TP4_INIT_TFT/Core/Src/syscalls.c b/TP4_INIT_TFT/Core/Src/syscalls.c new file mode 100644 index 0000000..8884b5a --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/syscalls.c @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + (void)pid; + (void)sig; + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +__attribute__((weak)) int _read(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + + return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + (void)file; + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + (void)file; + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + (void)file; + (void)ptr; + (void)dir; + return 0; +} + +int _open(char *path, int flags, ...) +{ + (void)path; + (void)flags; + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + (void)status; + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + (void)name; + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + (void)buf; + return -1; +} + +int _stat(char *file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + (void)old; + (void)new; + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + (void)name; + (void)argv; + (void)env; + errno = ENOMEM; + return -1; +} diff --git a/TP4_INIT_TFT/Core/Src/sysmem.c b/TP4_INIT_TFT/Core/Src/sysmem.c new file mode 100644 index 0000000..5d9f7e6 --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/TP4_INIT_TFT/Core/Src/system_stm32l1xx.c b/TP4_INIT_TFT/Core/Src/system_stm32l1xx.c new file mode 100644 index 0000000..093a38b --- /dev/null +++ b/TP4_INIT_TFT/Core/Src/system_stm32l1xx.c @@ -0,0 +1,428 @@ +/** + ****************************************************************************** + * @file system_stm32l1xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32l1xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx_system + * @{ + */ + +/** @addtogroup STM32L1xx_System_Private_Includes + * @{ + */ + +#include "stm32l1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Defines + * @{ + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)8000000U) /*!< Default value of the External oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Default value of the Internal oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSI_VALUE */ + +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM32L152D_EVAL board as data memory */ +/* #define DATA_IN_ExtSRAM */ + +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in Flash or Sram, else the vector table is kept at the automatic + remap of boot address selected */ +/* #define USER_VECT_TAB_ADDRESS */ + +#if defined(USER_VECT_TAB_ADDRESS) +/*!< Uncomment the following line if you need to relocate your vector Table + in Sram else user remap will be done in Flash. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ + +#if !defined(VECT_TAB_OFFSET) +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_OFFSET */ + +#endif /* USER_VECT_TAB_ADDRESS */ + +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Variables + * @{ + */ + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +uint32_t SystemCoreClock = 2097000U; +const uint8_t PLLMulTable[9] = {3U, 4U, 6U, 8U, 12U, 16U, 24U, 32U, 48U}; +const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; +const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ +#ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); +#endif /* DATA_IN_ExtSRAM */ + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + +/** + * @brief Update SystemCoreClock according to Clock Register Values + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI + * value as defined by the MSI range. + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32l1xx.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32l1xx.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmul = 0, plldiv = 0, pllsource = 0, msirange = 0; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + case 0x04: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x08: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x0C: /* PLL used as system clock */ + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmul = RCC->CFGR & RCC_CFGR_PLLMUL; + plldiv = RCC->CFGR & RCC_CFGR_PLLDIV; + pllmul = PLLMulTable[(pllmul >> 18)]; + plldiv = (plldiv >> 22) + 1; + + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + + if (pllsource == 0x00) + { + /* HSI oscillator clock selected as PLL clock entry */ + SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv); + } + else + { + /* HSE selected as PLL clock entry */ + SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv); + } + break; + default: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +#if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in SystemInit() function before jump to main. + * This function configures the external SRAM mounted on STM32L152D_EVAL board + * This SRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmpreg = 0; + + /* Flash 1 wait state */ + FLASH->ACR |= FLASH_ACR_LATENCY; + + /* Power enable */ + RCC->APB1ENR |= RCC_APB1ENR_PWREN; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN); + + /* Select the Voltage Range 1 (1.8 V) */ + PWR->CR = PWR_CR_VOS_0; + + /* Wait Until the Voltage Regulator is ready */ + while((PWR->CSR & PWR_CSR_VOSF) != RESET) + { + } + +/*-- GPIOs Configuration -----------------------------------------------------*/ +/* + +-------------------+--------------------+------------------+------------------+ + + SRAM pins assignment + + +-------------------+--------------------+------------------+------------------+ + | PD0 <-> FSMC_D2 | PE0 <-> FSMC_NBL0 | PF0 <-> FSMC_A0 | PG0 <-> FSMC_A10 | + | PD1 <-> FSMC_D3 | PE1 <-> FSMC_NBL1 | PF1 <-> FSMC_A1 | PG1 <-> FSMC_A11 | + | PD4 <-> FSMC_NOE | PE7 <-> FSMC_D4 | PF2 <-> FSMC_A2 | PG2 <-> FSMC_A12 | + | PD5 <-> FSMC_NWE | PE8 <-> FSMC_D5 | PF3 <-> FSMC_A3 | PG3 <-> FSMC_A13 | + | PD8 <-> FSMC_D13 | PE9 <-> FSMC_D6 | PF4 <-> FSMC_A4 | PG4 <-> FSMC_A14 | + | PD9 <-> FSMC_D14 | PE10 <-> FSMC_D7 | PF5 <-> FSMC_A5 | PG5 <-> FSMC_A15 | + | PD10 <-> FSMC_D15 | PE11 <-> FSMC_D8 | PF12 <-> FSMC_A6 | PG10<-> FSMC_NE2 | + | PD11 <-> FSMC_A16 | PE12 <-> FSMC_D9 | PF13 <-> FSMC_A7 |------------------+ + | PD12 <-> FSMC_A17 | PE13 <-> FSMC_D10 | PF14 <-> FSMC_A8 | + | PD13 <-> FSMC_A18 | PE14 <-> FSMC_D11 | PF15 <-> FSMC_A9 | + | PD14 <-> FSMC_D0 | PE15 <-> FSMC_D12 |------------------+ + | PD15 <-> FSMC_D1 |--------------------+ + +-------------------+ +*/ + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ + RCC->AHBENR = 0x000080D8; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIODEN); + + /* Connect PDx pins to FSMC Alternate function */ + GPIOD->AFR[0] = 0x00CC00CC; + GPIOD->AFR[1] = 0xCCCCCCCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xAAAA0A0A; + /* Configure PDx pins speed to 40 MHz */ + GPIOD->OSPEEDR = 0xFFFF0F0F; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x00000000; + + /* Connect PEx pins to FSMC Alternate function */ + GPIOE->AFR[0] = 0xC00000CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA800A; + /* Configure PEx pins speed to 40 MHz */ + GPIOE->OSPEEDR = 0xFFFFC00F; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x00000000; + + /* Connect PFx pins to FSMC Alternate function */ + GPIOF->AFR[0] = 0x00CCCCCC; + GPIOF->AFR[1] = 0xCCCC0000; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA000AAA; + /* Configure PFx pins speed to 40 MHz */ + GPIOF->OSPEEDR = 0xFF000FFF; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x00000000; + + /* Connect PGx pins to FSMC Alternate function */ + GPIOG->AFR[0] = 0x00CCCCCC; + GPIOG->AFR[1] = 0x00000C00; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0x00200AAA; + /* Configure PGx pins speed to 40 MHz */ + GPIOG->OSPEEDR = 0x00300FFF; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x00000000; + +/*-- FSMC Configuration ------------------------------------------------------*/ + /* Enable the FSMC interface clock */ + RCC->AHBENR = 0x400080D8; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); + + (void)(tmpreg); + + /* Configure and enable Bank1_SRAM3 */ + FSMC_Bank1->BTCR[4] = 0x00001011; + FSMC_Bank1->BTCR[5] = 0x00000300; + FSMC_Bank1E->BWTR[4] = 0x0FFFFFFF; +/* + Bank1_SRAM3 is configured as follow: + + p.FSMC_AddressSetupTime = 0; + p.FSMC_AddressHoldTime = 0; + p.FSMC_DataSetupTime = 3; + p.FSMC_BusTurnAroundDuration = 0; + p.FSMC_CLKDivision = 0; + p.FSMC_DataLatency = 0; + p.FSMC_AccessMode = FSMC_AccessMode_A; + + FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3; + FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; + FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; + FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; + FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; + FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; + FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; + FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; + FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; + FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; + FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; + FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; + FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; + FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; + FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; + + FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); + + FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE); +*/ + +} +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + + diff --git a/TP4_INIT_TFT/Core/Startup/startup_stm32l152retx.s b/TP4_INIT_TFT/Core/Startup/startup_stm32l152retx.s new file mode 100644 index 0000000..d3dd841 --- /dev/null +++ b/TP4_INIT_TFT/Core/Startup/startup_stm32l152retx.s @@ -0,0 +1,413 @@ +/** + ****************************************************************************** + * @file startup_stm32l152xe.s + * @author MCD Application Team + * @brief STM32L152XE Devices vector table for GCC toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Configure the clock system + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M3 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m3 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +.equ BootRAM, 0xF108F85F +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/****************************************************************************** +* +* The minimal vector table for a Cortex M3. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word PVD_IRQHandler + .word TAMPER_STAMP_IRQHandler + .word RTC_WKUP_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word DMA1_Channel5_IRQHandler + .word DMA1_Channel6_IRQHandler + .word DMA1_Channel7_IRQHandler + .word ADC1_IRQHandler + .word USB_HP_IRQHandler + .word USB_LP_IRQHandler + .word DAC_IRQHandler + .word COMP_IRQHandler + .word EXTI9_5_IRQHandler + .word LCD_IRQHandler + .word TIM9_IRQHandler + .word TIM10_IRQHandler + .word TIM11_IRQHandler + .word TIM2_IRQHandler + .word TIM3_IRQHandler + .word TIM4_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word I2C2_EV_IRQHandler + .word I2C2_ER_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word USART3_IRQHandler + .word EXTI15_10_IRQHandler + .word RTC_Alarm_IRQHandler + .word USB_FS_WKUP_IRQHandler + .word TIM6_IRQHandler + .word TIM7_IRQHandler + .word 0 + .word TIM5_IRQHandler + .word SPI3_IRQHandler + .word UART4_IRQHandler + .word UART5_IRQHandler + .word DMA2_Channel1_IRQHandler + .word DMA2_Channel2_IRQHandler + .word DMA2_Channel3_IRQHandler + .word DMA2_Channel4_IRQHandler + .word DMA2_Channel5_IRQHandler + .word 0 + .word COMP_ACQ_IRQHandler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word BootRAM /* @0x108. This is for boot in RAM mode for + STM32L152XE devices. */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMPER_STAMP_IRQHandler + .thumb_set TAMPER_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_IRQHandler + .thumb_set DMA1_Channel2_IRQHandler,Default_Handler + + .weak DMA1_Channel3_IRQHandler + .thumb_set DMA1_Channel3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_IRQHandler + .thumb_set DMA1_Channel4_IRQHandler,Default_Handler + + .weak DMA1_Channel5_IRQHandler + .thumb_set DMA1_Channel5_IRQHandler,Default_Handler + + .weak DMA1_Channel6_IRQHandler + .thumb_set DMA1_Channel6_IRQHandler,Default_Handler + + .weak DMA1_Channel7_IRQHandler + .thumb_set DMA1_Channel7_IRQHandler,Default_Handler + + .weak ADC1_IRQHandler + .thumb_set ADC1_IRQHandler,Default_Handler + + .weak USB_HP_IRQHandler + .thumb_set USB_HP_IRQHandler,Default_Handler + + .weak USB_LP_IRQHandler + .thumb_set USB_LP_IRQHandler,Default_Handler + + .weak DAC_IRQHandler + .thumb_set DAC_IRQHandler,Default_Handler + + .weak COMP_IRQHandler + .thumb_set COMP_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak LCD_IRQHandler + .thumb_set LCD_IRQHandler,Default_Handler + + .weak TIM9_IRQHandler + .thumb_set TIM9_IRQHandler,Default_Handler + + .weak TIM10_IRQHandler + .thumb_set TIM10_IRQHandler,Default_Handler + + .weak TIM11_IRQHandler + .thumb_set TIM11_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak USB_FS_WKUP_IRQHandler + .thumb_set USB_FS_WKUP_IRQHandler,Default_Handler + + .weak TIM6_IRQHandler + .thumb_set TIM6_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak TIM5_IRQHandler + .thumb_set TIM5_IRQHandler,Default_Handler + + .weak SPI3_IRQHandler + .thumb_set SPI3_IRQHandler,Default_Handler + + .weak UART4_IRQHandler + .thumb_set UART4_IRQHandler,Default_Handler + + .weak UART5_IRQHandler + .thumb_set UART5_IRQHandler,Default_Handler + + .weak DMA2_Channel1_IRQHandler + .thumb_set DMA2_Channel1_IRQHandler,Default_Handler + + .weak DMA2_Channel2_IRQHandler + .thumb_set DMA2_Channel2_IRQHandler,Default_Handler + + .weak DMA2_Channel3_IRQHandler + .thumb_set DMA2_Channel3_IRQHandler,Default_Handler + + .weak DMA2_Channel4_IRQHandler + .thumb_set DMA2_Channel4_IRQHandler,Default_Handler + + .weak DMA2_Channel5_IRQHandler + .thumb_set DMA2_Channel5_IRQHandler,Default_Handler + + .weak COMP_ACQ_IRQHandler + .thumb_set COMP_ACQ_IRQHandler,Default_Handler + + + diff --git a/TP4_INIT_TFT/Debug/Core/Src/main.cyclo b/TP4_INIT_TFT/Debug/Core/Src/main.cyclo new file mode 100644 index 0000000..a9dfdb6 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/main.cyclo @@ -0,0 +1,6 @@ +../Core/Src/main.c:64:6:affiche_nombre 3 +../Core/Src/main.c:89:5:main 1 +../Core/Src/main.c:140:6:SystemClock_Config 3 +../Core/Src/main.c:181:13:MX_SPI1_Init 2 +../Core/Src/main.c:219:13:MX_GPIO_Init 1 +../Core/Src/main.c:284:6:Error_Handler 1 diff --git a/TP4_INIT_TFT/Debug/Core/Src/main.d b/TP4_INIT_TFT/Debug/Core/Src/main.d new file mode 100644 index 0000000..7ffea36 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/main.d @@ -0,0 +1,55 @@ +Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h \ + ../Drivers/7Seg_MAX7219/max7219.h ../Drivers/TFT_ST7735/fonc_tft.h +../Core/Inc/main.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: +../Drivers/7Seg_MAX7219/max7219.h: +../Drivers/TFT_ST7735/fonc_tft.h: diff --git a/TP4_INIT_TFT/Debug/Core/Src/main.o b/TP4_INIT_TFT/Debug/Core/Src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..b8c440b253c792559ff781e7aaae77377a3f6d56 GIT binary patch literal 739848 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̿AZwzS6m~ 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

{chhla6HcL*7_5jGFJx>aZv0&vnUqCNXT#7u@5 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Ξp% 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

+TkO7~N} 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.su b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.su new file mode 100644 index 0000000..d8ab9e1 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_hal_msp.su @@ -0,0 +1,3 @@ +../Core/Src/stm32l1xx_hal_msp.c:63:6:HAL_MspInit 24 static +../Core/Src/stm32l1xx_hal_msp.c:87:6:HAL_SPI_MspInit 48 static +../Core/Src/stm32l1xx_hal_msp.c:125:6:HAL_SPI_MspDeInit 16 static diff --git a/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.cyclo b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.cyclo new file mode 100644 index 0000000..79351de --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.cyclo @@ -0,0 +1,9 @@ +../Core/Src/stm32l1xx_it.c:69:6:NMI_Handler 1 +../Core/Src/stm32l1xx_it.c:84:6:HardFault_Handler 1 +../Core/Src/stm32l1xx_it.c:99:6:MemManage_Handler 1 +../Core/Src/stm32l1xx_it.c:114:6:BusFault_Handler 1 +../Core/Src/stm32l1xx_it.c:129:6:UsageFault_Handler 1 +../Core/Src/stm32l1xx_it.c:144:6:SVC_Handler 1 +../Core/Src/stm32l1xx_it.c:157:6:DebugMon_Handler 1 +../Core/Src/stm32l1xx_it.c:170:6:PendSV_Handler 1 +../Core/Src/stm32l1xx_it.c:183:6:SysTick_Handler 1 diff --git a/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.d b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.d new file mode 100644 index 0000000..9cdcc59 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.d @@ -0,0 +1,54 @@ +Core/Src/stm32l1xx_it.o: ../Core/Src/stm32l1xx_it.c ../Core/Inc/main.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h \ + ../Core/Inc/stm32l1xx_it.h +../Core/Inc/main.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: +../Core/Inc/stm32l1xx_it.h: diff --git a/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.o b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.o new file mode 100644 index 0000000000000000000000000000000000000000..babdaa11f10c1170e2a8f706e47963fe39d0ca54 GIT binary patch literal 708860 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ɻW|50>$aaq7Y)Fv6CDq%f9# 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 H>CyiIGY?lM literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.su b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.su new file mode 100644 index 0000000..affde81 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/stm32l1xx_it.su @@ -0,0 +1,9 @@ +../Core/Src/stm32l1xx_it.c:69:6:NMI_Handler 4 static +../Core/Src/stm32l1xx_it.c:84:6:HardFault_Handler 4 static +../Core/Src/stm32l1xx_it.c:99:6:MemManage_Handler 4 static +../Core/Src/stm32l1xx_it.c:114:6:BusFault_Handler 4 static +../Core/Src/stm32l1xx_it.c:129:6:UsageFault_Handler 4 static +../Core/Src/stm32l1xx_it.c:144:6:SVC_Handler 4 static +../Core/Src/stm32l1xx_it.c:157:6:DebugMon_Handler 4 static +../Core/Src/stm32l1xx_it.c:170:6:PendSV_Handler 4 static +../Core/Src/stm32l1xx_it.c:183:6:SysTick_Handler 8 static diff --git a/TP4_INIT_TFT/Debug/Core/Src/subdir.mk b/TP4_INIT_TFT/Debug/Core/Src/subdir.mk new file mode 100644 index 0000000..9a450e8 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/subdir.mk @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Core/Src/main.c \ +../Core/Src/stm32l1xx_hal_msp.c \ +../Core/Src/stm32l1xx_it.c \ +../Core/Src/syscalls.c \ +../Core/Src/sysmem.c \ +../Core/Src/system_stm32l1xx.c + +OBJS += \ +./Core/Src/main.o \ +./Core/Src/stm32l1xx_hal_msp.o \ +./Core/Src/stm32l1xx_it.o \ +./Core/Src/syscalls.o \ +./Core/Src/sysmem.o \ +./Core/Src/system_stm32l1xx.o + +C_DEPS += \ +./Core/Src/main.d \ +./Core/Src/stm32l1xx_hal_msp.d \ +./Core/Src/stm32l1xx_it.d \ +./Core/Src/syscalls.d \ +./Core/Src/sysmem.d \ +./Core/Src/system_stm32l1xx.d + + +# Each subdirectory must supply rules for building sources it contributes +Core/Src/%.o Core/Src/%.su Core/Src/%.cyclo: ../Core/Src/%.c Core/Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32L152xE -c -I../Core/Inc -I../Drivers/STM32L1xx_HAL_Driver/Inc -I../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32L1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/7Seg_MAX7219 -I../Drivers/TFT_ST7735 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Core-2f-Src + +clean-Core-2f-Src: + -$(RM) ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/stm32l1xx_hal_msp.cyclo ./Core/Src/stm32l1xx_hal_msp.d ./Core/Src/stm32l1xx_hal_msp.o ./Core/Src/stm32l1xx_hal_msp.su ./Core/Src/stm32l1xx_it.cyclo ./Core/Src/stm32l1xx_it.d ./Core/Src/stm32l1xx_it.o ./Core/Src/stm32l1xx_it.su ./Core/Src/syscalls.cyclo ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/syscalls.su ./Core/Src/sysmem.cyclo ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/sysmem.su ./Core/Src/system_stm32l1xx.cyclo ./Core/Src/system_stm32l1xx.d ./Core/Src/system_stm32l1xx.o ./Core/Src/system_stm32l1xx.su + +.PHONY: clean-Core-2f-Src + diff --git a/TP4_INIT_TFT/Debug/Core/Src/syscalls.cyclo b/TP4_INIT_TFT/Debug/Core/Src/syscalls.cyclo new file mode 100644 index 0000000..6cbfdd0 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/syscalls.cyclo @@ -0,0 +1,18 @@ +../Core/Src/syscalls.c:44:6:initialise_monitor_handles 1 +../Core/Src/syscalls.c:48:5:_getpid 1 +../Core/Src/syscalls.c:53:5:_kill 1 +../Core/Src/syscalls.c:61:6:_exit 1 +../Core/Src/syscalls.c:67:27:_read 2 +../Core/Src/syscalls.c:80:27:_write 2 +../Core/Src/syscalls.c:92:5:_close 1 +../Core/Src/syscalls.c:99:5:_fstat 1 +../Core/Src/syscalls.c:106:5:_isatty 1 +../Core/Src/syscalls.c:112:5:_lseek 1 +../Core/Src/syscalls.c:120:5:_open 1 +../Core/Src/syscalls.c:128:5:_wait 1 +../Core/Src/syscalls.c:135:5:_unlink 1 +../Core/Src/syscalls.c:142:5:_times 1 +../Core/Src/syscalls.c:148:5:_stat 1 +../Core/Src/syscalls.c:155:5:_link 1 +../Core/Src/syscalls.c:163:5:_fork 1 +../Core/Src/syscalls.c:169:5:_execve 1 diff --git a/TP4_INIT_TFT/Debug/Core/Src/syscalls.d b/TP4_INIT_TFT/Debug/Core/Src/syscalls.d new file mode 100644 index 0000000..8667c70 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/syscalls.d @@ -0,0 +1 @@ +Core/Src/syscalls.o: ../Core/Src/syscalls.c diff --git a/TP4_INIT_TFT/Debug/Core/Src/syscalls.o b/TP4_INIT_TFT/Debug/Core/Src/syscalls.o new file mode 100644 index 0000000000000000000000000000000000000000..de6f30f293277d94705cd9a99095d660080183e7 GIT binary patch literal 83424 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 z zHd=L8dBaTk-tlSTiX2ByB>#mxj4YBz zk#oqUPpq>S##c5WtDk&lqikuQ@Q$&bjd$S&x>i=Q53BRQOuF)az7Ku#r(B#$N+ zk*AXvkXMl_$a~0#$!E!z$+yTqkhsv9Y`CbalZTMg$pz#!fx6YfN!X;k$N+c{TZbfO%-rx1}# zwvS9qwqM}(F_00_ZXS8OaFkM~3r8z;wh)QBnBmt5;e3T~cct#;^81BjlzK=wR;ee1 zPDD0QC@>3D?8pB5gd)C)os&ZIp(80i*$h*JL{L?KApRjl`gXr!-B+BY18 z+6oU>s*CUlrFsgFM7o8r8$#OTXyG)a#t8$IJ1(Ch46)yZMWv1qmQc=w@Y6=}8QhB8 zn(RgDayEb(MKiG(MU={UH*=yK89RGE+LchhcXI8u=#q9{C~pDfuN?S65D#T#J%? z?L>Ablk$t@N%;i_arrPZM|$M0Evv3K6xB@GO5e?In)=Cmy=hM zH;}iGcary#50Y!ir^ug^zan2DUnk!p-zPsNKO_H4Hn6<5CzE=C{7dQu*q6)uk%P$* zr0$m#sCOru$i2yZ$pgv5$s#$EoI@TTo<*KVUQAv|>VD5n)VGm$llPMkk&ls2 zlP{1jlCP3)knfNmkbfk) zPsuOII`-3aKd}>acd`$;BRPm1M&?M5O!}3G$9U?A

s$Quj9l>gnWcaz1$+c`|th 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Src/syscalls.su b/TP4_INIT_TFT/Debug/Core/Src/syscalls.su new file mode 100644 index 0000000..50b547a --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/syscalls.su @@ -0,0 +1,18 @@ +../Core/Src/syscalls.c:44:6:initialise_monitor_handles 4 static +../Core/Src/syscalls.c:48:5:_getpid 4 static +../Core/Src/syscalls.c:53:5:_kill 16 static +../Core/Src/syscalls.c:61:6:_exit 16 static +../Core/Src/syscalls.c:67:27:_read 32 static +../Core/Src/syscalls.c:80:27:_write 32 static +../Core/Src/syscalls.c:92:5:_close 16 static +../Core/Src/syscalls.c:99:5:_fstat 16 static +../Core/Src/syscalls.c:106:5:_isatty 16 static +../Core/Src/syscalls.c:112:5:_lseek 24 static +../Core/Src/syscalls.c:120:5:_open 12 static +../Core/Src/syscalls.c:128:5:_wait 16 static +../Core/Src/syscalls.c:135:5:_unlink 16 static +../Core/Src/syscalls.c:142:5:_times 16 static +../Core/Src/syscalls.c:148:5:_stat 16 static +../Core/Src/syscalls.c:155:5:_link 16 static +../Core/Src/syscalls.c:163:5:_fork 8 static +../Core/Src/syscalls.c:169:5:_execve 24 static diff --git a/TP4_INIT_TFT/Debug/Core/Src/sysmem.cyclo b/TP4_INIT_TFT/Debug/Core/Src/sysmem.cyclo new file mode 100644 index 0000000..0090c10 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/sysmem.cyclo @@ -0,0 +1 @@ +../Core/Src/sysmem.c:53:7:_sbrk 3 diff --git a/TP4_INIT_TFT/Debug/Core/Src/sysmem.d b/TP4_INIT_TFT/Debug/Core/Src/sysmem.d new file mode 100644 index 0000000..74fecf9 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/sysmem.d @@ -0,0 +1 @@ +Core/Src/sysmem.o: ../Core/Src/sysmem.c diff --git a/TP4_INIT_TFT/Debug/Core/Src/sysmem.o b/TP4_INIT_TFT/Debug/Core/Src/sysmem.o new file mode 100644 index 0000000000000000000000000000000000000000..3e4f44ddbda14b41b3bcd50d4847498a7923c38c GIT binary patch literal 55892 zcmeIb33yz^l{S2DOD$uJ4cP1sp|P=%uq5{;sbw(GmRgpuHmfBsB&2DzTDD>>MvIpa z0)!ACKnNj(EldbYAPa#k><~zRkdS>F$Rtb>l8|i@vH}U2@W1b=Q@3xo7Be&7^Z)Zb z&oA(OZ`G|^x9ZfXQ>RXysy;W>-r~BhWB**I(kX--=j~sWC&9QtrIT^qBF~RUxDx-E zwhI4F(EC-uYQ3)k*6RIgU|8=Xz^LBGfXtiu)Zt&f-Zuafdfy0KqxUBQPtyCfz?1d< z6yT|Pp9HSc`zBzs-lu>qdcPjns`qWc)AW7=uwCyvfSr2Z1?<-QjldqgPXl}L@4S27 zeYbPho-+?Q?a&S1J?iZ2*+VC0muy(N-B}g*_Q4w#pLW!l2W>cN``O!4tJ{xgIilf_mh&D#_C3xCB3mUqFUXnMD9-VM0tA98Wr5A}lt2ONV2bn6Z$I|Z&B2>$zij?=K1 znFN22CQO*y(S?rFxI{kq3L0+BV%92fFyc0`4_ zogWO&|6~Z2UNA4X;5g8{Y~g;v{jO-n&HnR)^S(}=*?)gYTW+pp3l;9)h`yiZx&WF$7^;$Gj(0Psw?EE6fYdM-B=)7Ov{S^9W(0Ou_*Sl8p`tl}T$I(DR z=l6&5daK<3@o3(kDqp$rFy8;*jl4c`Ca+(G$O}3j>g4rTXuT`r$hJ!orQ1Vb)M8>vy>_!<+)LEI|0-P zI&T7l2AyNJ@_K`mVMQhH(~t#0r*a3c6A$+vESya+mffS?RIKiF4aP} zFUz;SDkZt2i%(YxRiB3(K^de}KOW`%5#aZrGjSHL5&70`DdF4GjQNMO>|3QgZ<}Du z^HRsyBHlMG;dPhf&@R^|`R>0-d|K!{Ho!DxkYYjSscpPI0%09=GUypW=a4wBk7AGu zIu|YD^&i45j|)Aw*Dxk5obz1_Jm3c@`CFyFw@Z0$UB&nWx_i+1K6CFk`* zfiJFROoOyqyR_hA!ng0~XMC+Z{n$$0FG}-zg|x^L^u?evB~;zMnfE`ETE8GXd5%0C zUCj7158(9-d73$p_YWS*Yop}0Mq*wP8va(=^g`jcUqWUFotWhRcd74hr7riM$oN<4 zdA(*mudC$UQ>0%1COO|GW%!$L^-jt2lfu2f65crLc)oR^Q0Y+N+aF3D&y&7+?2R^Zd@!#p=^(1Md z#nKAr4KwD*19{yjQf{@->i6>{McJTi5($>G<&ig*$lRnAqZn@qf?=BtT)B7rU zZIQMZ79KcG=<|Ky+sA}@FNwssLGt;Nw8H+<`gKyTgM_w=rGI^1+WI!hEiRn!Vd0P$ zhxnD%(x$IUiyto3yH_~2UikcIsr3rU`Oj}=`bUMT4@&w!3H_gy9Bw&_Py0>ngiDW- zFTT2h@n0O{^<2qejih{bk};WuynbG4S1)wQr5}+ za%tK1(#pq4O+O;#i3uMr6`uK5>51zk<|^T?kd*3PX{j58d!O&*S3W4c;QP`FzuLf< z$zyoENqED}@&2PC&3dG!e~?z&Si|_A%Ukb|G$EnSTH%4~B!_L%QpXDqynB%8d+T}q zl*qc*u%Jm!Z{5bTjAU$Z#@bMS2({ph1YY@ zgDRX`(OwnKBzi%G^BTTh;rs)ot#IybWvRY1&g(nyZiVyg8N7B1oloju{A&__v6SnD>d4SRhmiiR_K<&m4Z9<#qmUUKgO%Dx5Ktu)_IjoL5&y_B8H;&exG= z(0Om3*BuA*`o$Vv@7ye`-~z^CrlH`+c_s*ZG&HHO0~n zrZ|2BX}juP=3jdVx$9?vG88WOLf~2Q=6?hpJ`V6=;OZ&Bp8~D?_{)KJlG=X{EMtML zD*HNGJ9s0eHJWwD0quzBe;1i7cY6xgi^@-9|9DS%H3%XFJZ#q+adYgIV3Ala*iP?tZ^5T3u5e?!5PF|`E}P^Q_qVM5t?mz+0Otoj$$W)B(6TkY?RK8u&fP8~kKoA!+k);5HWGYk`&90RJBN3p$vT=_l?Myj1am z+j}4)e&haxS-j#N&7%Lqy_ax7;P5v9E(uH=2KZoL{aXPy2WrtulEpDkpN^Z*HuA%< z7m`C(!~(dkdWFL3*8IR2ZQf+ zPXSW~FLJlBW*56tOmd0)sRe-dxLXH7+LP`|G(_-AZj97;$~}51;LGkKI{;sCd&%|Ra-#>J5WjQt%a)d_&B0t==99|$a0edu`x5tn_t(FLDUEK5#z!^zDJuhXKz84g!@bt|+^nh5ta=hpG{}zARP)_;6YE zI3jN<+gt~@t!xN=UfQtYd=~D&3bx)+??w*`9{W5Axw)Pw7Q>2%$fkyW4!SynC z7Yp!Fw~};z*nI{c34X)9fimzfZaI=jwvmTOr09xXTw_0Fm#M#(%-MJkKeXneFby6q=7~^Kvjwu=DM#(Z(;bFmJhx#mIaf;v~4^PbB{E z3Np^l3)rE~LP94v@n$}q`Zzgz&+nQ4-u=n`Z+rf&xSsPcb9krw9ZJY|xlfP);64`k zBKOi1;63gl7W`5-Ko-8teStjtUiaV0eOI_ov*E9FuL8}3SGm`aH*R&y*~4#hf6AhN z)J?H0x4VaQ1MYBdVF^C&9>J8Ka4&;!4Sv#nWdq;`?z6`NUT_~LFaFYv)B}FyK0O5Z zwR<@0`y2O#Nx*O2$^8KT;l6V<;6?WW7Vr=5<7CN~+;35seJ8MqT=et6nmFJ$ftT6= zzYSc);{GY{uSWo03EahU{xfjeIN-Iw!BN1w%ihcWdQn*d>=S%%*_T%UK2UZb3vpZ7 zTdM(|DcjE4ey?mjo9X*y2e3tdRCXgj^jz7K%K<+rd-)i^Z^|AdpE_Zn_eHP%u!6#Vi+k)qko9+ls91Qq) za4+fdso8a{iA?KgKuEUF9g5V26!^Kj!pHi z!B#M8@R{HbNb+ZcpW6laQSeQy=5xW7gy(~(30NceU>V>y!SVTk-ve>-H9oPF2<pC;`da-SzW<}RXu`igu1{#vHROG*91&VGxA1Lu$|%NMYLS9~*!>+uh~ z8P^l47voxe0UN1y0Vy9|M%Inqmc}*yE3#_+LljMk6OP06#OK%$YcEB-)V=fB4Y%I+Kh{H^Tz z0N}N)6mcNt$TwGpBE`3k=;HiL*lt0Z1+*-bfq`AF(4ZGhRcjZE`M z`BuvL&zC<*VR}Ku)ohY?RXohLxUk|gn*i^wIFAi}QN>=i@5L3)3cw{5Q5OC^6?gJO zmsYH1W;uR;5~6ZV9@nb<$jc{eWqzyf=BKJ3Isn%imu0EF zmwj>duc~kjuUdm^WHFmN+Q72a?_nD^{ACfYi5E%n#x^qbnszqAiL1#{Cw-H0X6-F3 z_Q^wRs#BIW<9h0M$lA%TpM>kW7a8AFRfB8ue10pnjbCZ`7F%Qei*UnLda=zwz3%fYf!X?j&=$-|b}+J>cF%>OJV5#K?!-%h@v@bqDzR7u*qqgm?B2vKj~d zrU_DTRbV%+)f9ylHC!vIsEvXf1FN}IRS~`%wW)|aox(Nxp-p%zcF7K0<6j^>>K2oz z^`B!*!@bNr@t<39ZHzVGx~7hWZ+fv7*VE>+v-T{*w}NLp#F*``vFDt187Z=-jvREp z`+4?_i`_>kpssRn;wP?g?`Gu9?!lz)o$dmPoO|70Z$yFaccttPh#aqY(3R3Z8BuzoxT{?#-rKA*6t-kp0Z&O*X9&kyX}TPTs!}M5U%N$kf(g<@FgU}(H}#JgUf3u zbgRD2Z`3_QGMv&z>DRWNjGI1-EO(x}co*P&_xcThce<0z`datzyVa&KSzMNU?g`BEU){4afEU~wndFylhE@KRdpY4H_guEc%kGhf0bX%0 zVlQ}iVC#CoMS+jJ0dR5P`Ch;W1Ix+c*95-LXV(V)M)+u8m`rke;N$EscLXMm1>75$ zPeR-mIEN&-KQL7V_)_3$e*LMy1C(;#46NaM&jfzB1@K(p%dFAA2ip1i^MMmr0Wc2+ zA46xXJQDCy;Br>;ys{6leixR3ozU6KnkZH;FT0r(yteEXe)hVuzc8~~%NDTGx0N|8 z=cmiQOUi$yEW(EVLfPk;^%u)R9mwYBAeOD1@0FvwxUVi+h*eryy9fQ<+S=7kW8?YN z>G7PiI=OS_@K7#0IW#spu{zz`5sNlW_2=7~Q?=QhJCSa5GCw*wu{xC-9@;sPU%hj9 zYTFP}=Eg>9CnoX#NGzJe3$;T7`Pz}(RBe9GWPW@!J3KiyHatUKmz2)$4AGC zZy_DV^XS zKpdvJx;wji(|z6Dp~gBVlUd){*VNv&A(hEw(y6B2wyw@l#M#`|*_-KT>kL(9 zGWI@`sY3GRR8w0=vOUw>wmy>yMH&#*KQ%NwIW(FXn#g2_hqjI82P*ee%UxBdvJyE= zp$9%$4DHJF} zIz+>vRZ(XOZN`s;a@(`xc+k?`3t8Hn>g?+2V40CYytXkOuCJ?)*CpbSXuQ5Ip09~T z<1O`Zq+j3Elu7n>b+k2QHaE2rIT0xgTz#%sgN9DK94xveJ@4SVHiO{Oz#oh@yhZM|E~yT}&A>`8Vu#}k=k zb8{s~LBbGfPR@+S6S!sv2C5toJyLJTUXwvC5=w4CHY623(cYeHYU;DKtgH!diFC&z z?d=;1cTC0_HmB0PJ$-1;O{q+}?etVg>aOpny3=j#U8GcaPo%pBS!}>--Mu}{Z7nUC z4*6twPs5=3b3mWY^_k|bKDNd1*yy&A7W!s z&=t(mp6p3AhYBf6GuLkn@;yT-k}lKHUAZd@G7XG{&JImXj!)$#LmBD0p%XIWp|v4- zd?MmNypf%xV}63NU1k)(A)B3g9g!SLMNRRiZNr`)1(7srgr-KSw`f|*kC48xu>eCq~9TG zmF;&m=yfYA-{B8dG4noU4()_7b_LTxY@6A(>cf+!uFj@pFAA`?Dr7?u2|8%@mSkUh zZzkQ<*VB|jVpgxKh0FpvNgpf-o!+h8c!o}vYTnq_)fRDAcO_KMZy_F zbkGv{_cWy;EzIXCC#pP#$!yQ&cHntSPqInmnKVES_-ehm8 zr0f(*@SY0>~jYbmQ(ti?pLhN0G}=cMS#cHN0LtmXPf2w&#>|DW7C8 zg7m*29gKjT$ma*%6h4D}TSaj?1?g@@g)dQLTB3+b316be7k0}0} zBr5uxBr5)#Br5uxBr5(Kh7VuOFvt`YW;{DO0G(zJB^xp?mTHFNN$`Og((7UzhcYe6 zbje`kMM;;?5s9Kcq2eFyhY&_E<+_ROW8;${VYz~0KxvVkoE#tOpPI}=RzW>brNIcU zDks(5)79J6*+mtls|Nxh8Z-QfQQkw8k^bSM%bhjMIfO>$7(+Svpt z*wKvvE`z~6lirLj6`>&OZYh+$u^ulK%k6=&-J^3!?maVz=TuW`TYGaT!jXqG&$Oqs zfsBCKL)naH=+Y=(SGw0~E)eVOMdFIGN!mQMF@xSFx|MBkP*~eeMtQlI_Vdf5rY_K= zDHN$Aqa@fSR1@vJQ4@{yf#^Y*C|XRz#cJc>Xd)Vm*Vki2j3yHGXt+cR$ehM_0>v{* zVQPc}-zbQANcrBj4v4y5pEP6nNDr0A<{M$iYLV1Ee1uX#t?^Wv!U&dXYwqa?#n?Kd z5Dl5#)Fv~Kj`s5qSe_7y)=?&_hA}mf&*Zk}b2~!QIC*z=d^9sPiWCDjbwxsq`cMNo41HLoOB&Ojw$AppPBY1{!%r!#$YdMs^h5?WGw`m%EXW&p z{y?4)t*)Q8iRmZGK6G3Dioo zlT0Q!qfAI|)tMQ!E)pNyV#g_8SyQPkZE1`oZ2L_u-5LCEl8Y3LMMKMmm+{LgDUDi# z=~ZoAd%LKL0CunvX;PRViB7?eh(sO*Y}YIz0ShQ!E$Mb%oWI|BbMtk5ZSB2i7jQQ8 zNMzB?+8V8>sWsKKf%;JO?(NyhY8peT*{VS^eSquO8TJvQ-!Q=>VWr$L8JNlW2 z8cMsnJ}L|v%qJX=*N5Ycn5ILajO1$~^_aTsK}Iqxk&u(<$^LfL$(2vQWIDmzS(rq~ z;8q5CQzucOI=gh7DbgB*%}2+q@Hed6>{-G@&YIB|RY2Y|NGKzqL_SgUkjMpdj1j5i zTFk$@QG{OTP-YI!Vv5x9%2_5>#nJfBM}t= zkrrsC6b7_ZQy-0+V%R&rQT)Tg3*(PmePd2x2&P>S?CsZ(izn7a zqOGMHT(b!lRfwu&Pg`$mN2<52$x(v?6c90vz;sB91IInTQqsJ&Gf4wwvZp7x6(nfG z;DsdK(1K#v&SX0gM_2IoG%9M_s}aRBOr)SpuTOP0Z55Fgii$E{7@0i%(jVn%3DfjR zsFNA7rzO|5wbSz1-IHA3k<4`WrDox^Ag3|bkOW0_Fu+}#wC4n_7T zmam-A`izM)%uK|{$azU|Gg$7kDp0%Q7apnZ6ed^XSfd{7bLcb43In7JR3!tSiX067 zn5)LEfZPX(#GN>F8wCpk!}TYkO)Fn$oDK zJ~3wFu^Ola&%(ZPqSiF%GYR390%*czcs9W5iAM^gyAa zB9BysDqsP9Bs&S~%=qBQ*eEKHt?sWv5>AYbBmqy$#6VuuB^uT0})uOM6$++Ot)$cwLK7M!8^P%d%TX5+-A- z-}j{2ySmf-tQF-2B2f}{cl1_5lY@zyS0*!-Z5;|5#7Z5(7L|e);u|V#XT?)p087IN z)P$K48r~~Fr_E$y?}%NEt;Bux(8$i=YAl})4Uj9c z6C-H1Wwm&MxX`lDay}0&tL7~tL(5J*6?Z1RXMOZrmZZ&eM#(N@Se~VcR*qJSouI%m zYE&fCOL;R$62h7YU*rf{GB0yd(0@~4f0`Mw#$y$0u|=g@d#v%wEQleET1>a-EE%gl z6!E4dyal3E2aF0ELf9u{Mj={CI0*Ts2X^X|fjH-E2XG43wZ=fSaA-}4bmRJPh7$ow zc^O|a)p$UAMMmzDX^4KXbYEvvb!a*Bum)7BDd^Ii@+!loTVYNG4@VKzUAc37Y;p{Y zWYA6~W$_K>&Q#APTE}StP0I==>w&R@^G}%$R?G5SrI{L{aD_GAN~1@y9-$Me#83~) zbHLRFjWkDGQDuCSUaJ>Q*Eg(ojC%XpcqYYJ>*ysTN`oOmA$Ve9awrv!5RSuT%GTZanosKS2V;#gU z9@2cHi>aoId5fw0uq{VXJ{|W8wlSmb!#HM5G-iDCLWKcx`w(0wXmjyVk!-hXXkw^; zXm|*t6gsI%wT!)mvQk>eh!D0=Nt784IX`Q|s&}d>Qy;FYYqVmrR5o?j81tN`#iBp> zm1&uF7K>wYjU5*tb;K2+R}6%vWJNMUCo`g&*l`xrU~y(%p+Y-|7%ND%f)9ciqMN&+ zgTo?c=9JSb30AO@6kjEQbV&`1&~LKmur3SY4Z`#ftm0 z`bbHK275MfrF^C(a(3cr>%XGZPL4x;&7Czh1oDsPb5rn%f(46@rkj@LNNd|jx^pEP zQbs-Xf)VXdL=KfhQSpWORaLYeFt7)-r#jiK3bIgp9=Hj2qF6#lN2t)*ynu8w+W<|| z3IQ)g$_=0S1*4uxF8zAi3*xB7SJrRYlEKv1a}bJzBSjNepUOcc3~!jZn9pY^g0-ygp-H4b&w^^>Y@|mw7L&^=26!wmo>hr8Xta+I9!lmOZNs7Ux?;F>Yvd zQkdVSLophiWcoJaoV;sYx~n|}yA`Ktp-iSI%!wx*os6}RtFt;enC1lN4fjT#dCD$3 zvlVe{UZ2fJogT!;Z2Dx`Yig*jnYQM(O{#P;zPpKyn@X-vf~2%%6?gzfq!2UqD=wlT zarM_9S!lwdHZn?1Nt97uw&h1L-^+2zKVCgqy*EEmJvxRFV!b~;G`S|kCm|h{)`XD8 z%;l{wCWxqAuRGISmo8DW#nlh~dsU9Vw8}a&C||}pMDl~3RBQHyKnk6@Pgh{gJAMnd zU#W(;^94zQROgnqt`Ox`vKN-Qb$#HPwvKLka5X2c5%gSkCN zwFwUIeiB=gr%W9BioH3c-*Xl&>l9!m{{&NJY#H{142;jMU36xR%1U@kh?YNp?-z4* zOGmpSX8gi*3Ej*}LUCl9TNH{LnTpCCps?G&&E?T3UzP8v-R-J%xlqV;5iR`vKp62#qHpxk3t_FLqb`IzFz(4`gq3R`U zC_G1rTA4%tn5Z^06SE(y;0eswkecb~5ybF`A$cQY?CHG{2Ny|98~HS2li{nLWu|#^ zvZnR3L91%WuVRWJ)jllP0L)N< z-4-x^x200dL5Ebe<`~CMPiX{w?6Rll5l(X<#WdbcceV6dha4mBdrOULXb$YG8yd+Q zk0$dyGrueCjF~#pdgZxJmr-XeQ#CbrD>;h^ z>1_h>IY=3@L51NERXj*~E#=&NNb8lCYgn)C6nABNy zbzC#k63%~FT6oZOLDcpoWf52%9!OZf#L`iCW;YOF#0l)sf-~F<+-RTZeAYiotZRXa zH^YLvEcL2t$i-+?+U){7yRgW9sQ8%J7$<0B(N`z+eNWP%g?YV@WT@^)b*xME_*ca2 z^H8NE2x$s@T-AhvjnAkVg>eT$UO7QT$4v6WPlseG&0LE&DR8!Aynel{KQsHjKmqKe ze{XMBS2qT1*$ly{W;EpQ9U>XT&aVyO(*@XB&=Qy<`gT?M_TH}c_VbycbJ~b&CPnbc z6Q?{K{;)Czk7rDD3nTxku-V}ksyqSqFz)rM6eEX@|5W5>vm;$PqsgY zjaVRGvu~RPWED4_u|-%|{Ie4{4VoE{Xds?JLmgS|YNJo@@}gusHrkiz!A+=RXJ2=5 z55@+OOb&YO=+sUrS@B?Q)mRMX^?kJ9_}xgr+0dFH#FWXwNrsu_%X7KW7p9Cw>yy_1 zkV}-N$jNk*xLZsYbJ+JP&ezdq*}%_ zYcz^4o_*pTfTqNdX5QP}B-xT_j7-+X>`2DR<7NuIf{+KJ^y;oJaSVW% z!spo`4BOdh52v}}?LM9#%#VXo`3YJ09hulxwBl)4K=L_`+Bq`jxU$FSdjAOp_l_#UUTbs{WqQ)R9h! zP%|UHm1$NFU~&3cbl9z53~gl!->DeOPU-8 zG|IJ5z1K~RRyU2dMu$^k*&U&1pqV#*8rM?OSUUJ{J6DN@Xq?Nq^Gowpfmbv!wUbxW z4b8+9!tb+vn3Ol)EnYfIPylo2Lc14Doc*cAh+3lA;yrPj!hqA(*($WBV9WG&!9QUg zG+<+YrAk`r6$tUCZRGbfGL3|aOw)Euo0nL=IHrkWZa0lXap4Y+7)>(86MS?S)ZUZ9 zA;)-DAf0t$8q5yEUwTe2CYYmWAL;@7LvnBr2X^RyP4G=w%ZNlNCw&eXp^Vt3uz;Lu zYlo)|L^oN}dZwEJOm~)I@TTAr6=G&n9=qanBc+IM?fV=?WTfwH?djTVDQwOA-O0Y* zR?7lru(6x0wWa+7;K`j^J7!tC4xk zNc;MBbDK@EK9d)>Hj<5WQ=_+Qb~ume2wmrE>AX7yEzP(0+itD(C)$-Ao?>Eb_L`n_ zcaHl2_myEusyTD?FAdFA#KHm+QtczhaesYgt#nbUedSp6`Ps89O16(Yi}o|mRrS(@ zbLLy5&CH%_X|jFfS+xIiu3SqKPS3ZL>oX-HvzUR0>*HA(G|WEXw74BkTw3U&QW8n=20v{0f@d=8wqp6hY;vO` zwYkHrz85~ucE=l%K`LR~D3}yxUfh(ymP4}a2WY`?j4!E>qNWT}7rYOQt)<{nqr-p^ z{?LiB1JSGu6iF8j>ZfBZFV$>4Kdf|;)p=0Px`CW%4vm1^!jrKnN(=KSaz@c3LvQma zibq_JQK9Wue>p|eu+eH@2KLRaJUj4g3Ll5|X^XSax0|}R>U@p&$^`(O%E=vl^CCv$weRLX8+j#shYHf!e8*iTkmkYTarXbh%>DLP1NKb|Poz-7^i-qpxM%oIMQI1{BsCL9jS?rXnB z-`?EAi;Bl#1V>1UAdzK3-Se#d?44`Uf z{1az#9n}d7YDwPf@xCOUcF$gT$jNxt)GuEk6bFz#O?18+PEYfn{cN5e{Z53=1Kh33q70{5DJJAvho- z4qi}Ggv>=`z@^Wzf56%`HjMSO;XFoBbAv*0{RY!D->}ZAlU-nQ9K%Tm`||jkF%_~f z77xrwy$uX{?0|Mp&yF^2Lhae!$ltnxZFg0Xk(5abdXJ4Mk(D^r3OoxB1ak(EF6ayo z?U=z=&aU>Tvo0l{r6C71s4(k1~B&I^c*e8yM_L40RmY6acle zZT))j(WP7EQQ-=6HzC|J)5BdIlW8-%eNOK$XZgY7{Kg5F*N><^Ly!7`KCZQL@H z*)cRaP|cg6fjx3a0G}|x%~Tk2xR;Q$SiT2Ao_67NFj>yEqpeKy(G*tM#z`Ysk~S6r z@qso*g31#lK^4uoW|+1w`jvH~TjM;Ltvzk)TYG2nOIF3(D~zF53`S9`>+(n~X>jy8 zuEO#VI+T7QmmM8sN3R?l;l}ss!J+YqNvHz27wdHK`9r$H4BN}~Rc@`(H?f>vcvV_e zZTd1MS3CUP({JTx*iiAN|gt{ju0a2G3Yo;9~fJ2ht>bz>KG zJA?xEQKyqF*zKBZ?=vk>?3_t+HT&!wCnd$D;nt z$s!2+jN5UZhdF(z7p%e6X35U4N;LIs?e6WuJ75maH`Q-iMCI|cFwEPjhtI#qb~oRW ztlwpG)|5uYpKh*`vREBJ25FtSbo;k`QWcXSSl#YtakejdidVQJ(mznnIA@2ZA-rbx zyx=Xgl6Mx4|0Em;%}{j+{@=cp22cMH(wTk@69?vDFbeeG96GgQuk=p0R9l_Tlp&m1 z*uQ6N5Cy-B>6`cL&OM!)sU#5M39C+{vNx*{M=ih}1QtCW!6KqeN)6~V>u1T0gMcipgr|W^TwL#8gHICewuFiIz z&WeW9yk+qfF2y{IlS|pMyV3tpXOb+aIaq1h%CNpo*>9GGeT`f?fTQNyv%BE+13i)d zAf%y=v60|&@0&)+!Q}0cy67GwWko9ZHrdP~8K$K$d4nU1a`!Y7wWhZzfNEZw{kD zh__ISabhdhb}l?Pq7bV>`?n8_?Wn8x9&x2JlddIXB*+2&{wZ}t_k zC${3O)(PyC4P!+G>EO$<2bM|5MW{|-1#zZo*~%o)!rfr4A)|eum|~pht2oZ>L~kx?5PrlR>pD$Z_C-5 z65^)dcUdr?WhO^vw44)aVL~8SyG2r2Rtc+&!Z31 zYD~{LQPsT7dAc;&#$sU}V$7GBH=IG&<1`6MpLR=R-200wmWMQa25=m^|F9$y-)}yd z?Eq2qP*uQ627f)VnG?0?O97_O6dZX$UItJ$tTxH&9?ERb?ULDMTN75I?Ll6KTUo1F z?52e=vp&WHsS503I;W?a+Q#)5Mk^y>-LJyk^Bi_jXc@-~YOB%ie32!5(Stb_`=EC= z5L-e-luC$Ms46P9tPo*M4nl~c&T5(^Wag>})l4~vd!}i;zp=ZMJf2>6&KXJ6ULQ}+ z?kQ~-O4%|TIdGJj4DWjSiVA)>Wb9+@%Ue2UMr;fYb^GZ3=m%yFjwUOfC!6;RZoA@n z=-H*@+%Nq>1+ZRcGd6b?&H|L9;_M{Pp8rSXjt@{eQzaF3x*?sL#8GbUtM%r~Vj@y5 z@mwLTE1C8DXlkYj&rGd#5Q7=cGKpg}b?NUuhedRO%(kiQIILNj{=H_FCfcWW#!+bk z5_Rr3ik{jwzd=3l@8N&VQR(cabiTyj&6e|l-Y)ZVPJf+8VmB!@qH?| zoWmND=pxnJ#LG)!3W4t}Nv4V&bv;TZZ+}T4fJP9fQqRL25h9(Z|00Vwx5Ux5a%PNC zAE2ZZ^g}NSBeXqUflgMk4`vYit+H@CfoqBs2TkN#577|552=B`G`WaA?H5W&$W0h< z9&Z6Jv>I;lsTQ&dA7tWUQhxWAr@uSiCn}!4kUzs=3dN&brYYRDB}lF7;B%SI6k|f z90( zlO92@s{qrD>ioeU`;$RpK!n8c+efE~Xed9F?EV!2!=bWwf!yddIp;}`@$`?U*-ds| zQOVK;KKmu)=;vCI4^Rq`iv86;T?unak*}}kz8oD6Hucg*S9*pFEP-<1x#3bdT+jCF zO-VEfPXI?rQ3CJ8Z#EnDaiWx+y^w=_ooy{`grkBzCFR>c$^ z^^=#)qrM%!=IMd+GMvxbTH%k~fN>3lEjB+IS{0jvqzJMPXxh(9(bQz^ASj*P^p92R zasLSbwkRqbXcO>Pgy)kqW9qtP3lI4zY!pRDLIGtrjXCOS2B{%R&4f8^kSAX8fI*Q7 zMcYYm#*O!&a0(#>+02tjPQ1)~1y%~AlA#M+)6$+?pXuuB?e4=yQt9H_DWIwK^-kkY z<8@fzVzD{Hl^kOdDvGn{lFjWKLUE{f=0}P2gkbV4`KV;UpoA6q^Jz*@N(PbBB6^B6 zUr``-b51i!{xOoFL@;twIQ#RA4>{4}V_A9e?D#2q#N#~7%`lhoxCGBD$vcB*W@jAl zv5H20uhcE!91I{%N_aDg zlT!-Ee42bjJMwM#M>4jBT6k<9^A;(*GG;c+WPU`KkRK^yIca9enDu(Jh8SJE)qC#~ z5EnW_^-a@gLQ_i?7g}W%TFU8pZ_Z+K#Nh)ouFKdSshP@%W())~=<_1pbVL(2psMFt z#>`o+5RBH;STr<>)qN&Ak4~bnK(A}|CDRj*YK1iTx=kiJH0O+PY#PtNqTHVymth=R z%R=y`S68RXW$5v1_x%P3j@|F<64oNa)AyB%eZl2I z+%4pH6WGy2WLuTkTU5paG_+lyM}F<_7mJJcXQ{ywW;P)t-9&VPfb8s`q6-qNkuK$M zY%~XJ!BaNb&cj_HWaM`W(fh$w#X37Bf_NGfFJ##D1hWLZ%J|Yi_Vbr|C}s3)fEm|t zy>kP2^r|_x|NAo#*_=Cvr%O@CO}8e=f`#QMna0Yx!JKEndLD;GhrybD$KQ_F zXQP)S@_uSUtHlBO}z1tvC4|=H0Ueb^vBT~+mzv=DI4KK z4IF~ama)0jcauiX&XY=(DDRL2mA|0ZL7MgyO7Jq-}9Ce#v7ycH8`}f zuF5%}jbJFnr-bpmf+bihIn0b4k_+bzE!r=+aG{f| z#)B+>_}g)p;WpS%)8SO?Kd)ncU~%~&?xF7CWk9MM=1?B)qvKe0)i`sw9lxtoQwuIW@iz%eT5D94QIo zm+XCiWlo(h#P=IY!i^>26HCHtOTwp=gp(!Vrjl@~B)q;P+*T6aP!jGa33ru*HHZ(W3Bt=b57L{?38& zyV^F-1jN%+GhVZX$d(tF3~95;X=t9WbRag)yO z5&T4XZ8$rSZ_ExhX8ZH?iEMvkJ~22Ljm8r3Y<;#qievnkOtu}=Zm*5j_GiP9`hog* zJ$?%$J6NBCmvO8=pNQ4R!u|Exm`RRhh~2|O{TcjT1AoO2FXHFWBawmrcs!qt#$pNN zoX=&WgW-mThQUMxhZ*(z0x&A~Xm#ELy)kWkLxM~d!ZIc(`wTVP59*@N81{w$Q zu{;U~dj@{rAqSE);z>f@z>m314B>@Xq;?=*7mW|%x4rQ@^K}u>Dc=|#z;DuqvyuA2 zMBb!_-3P~=@`c9Q@IbCH9Io$=#p_V?_&{SWn@5HF>A+t%=rM|YY z4nI&9&kfcMh8r7VpmRfAq&}BGd-nH7BmD!WD)i$s%NyPc(OB(3T`U}L$krzYK}Z5j^aBN-=}zu;!TRTDc-C2 zl;U@ZsLyj6{=MSgh#2W_((4t71kmued|;EXCc5mai_*@Fj{@C|<32gW^XNZ&$oi@w18#C_bwA zq~cc?&R7DK1o8qIjg@F^Ve`S1Cpm8x+?nHYv6# zb}9BLzDY5wxJ_|HaYAvg;<<_!DqgC1rQ$V;H!9wu_%X%16z@@dNbw7bPbq#~@w>n6?Z6} zrMO%19K{P1FHyWg@oL2z6hESPyW*XSpH+N7@lnMm6~C(ZZN+C4pHuvq;;$87RQ#*r ztBNk>ALOffiVGE&C?2VJjN%H#Rf-YC2F10CO^R)bU5b5*Z&J)EZc`jloKW1Wc&_4w zikB*0smOU1>v5yvEs7sgyi4&O#fKEXp!k&H*A>63_yffsEB-?9w~BvMd|B~770WPC zu{`q?4^%u{U6;Dx2DQ-~QsJL1248@${km8u)l;YWn=PO>Mc)8+L ziq|QASn)Q+Pbhv`@jk^z6dzaoisCmFzpwa1#h)tvQt@|+e^&gP;%kb*3hn=j2P+<~ zc(mej#VW&1&Ws_UZHrk;th%)QM_I8 zPQ}kEKA`xh;**MBRs6Q%Gm6hC{!H=LiZ3euRq<6tcb@it#f6GX6pvIqMsbDWD#eIm zgW_7nCdD?zF2z2@Hz{Tnw<(S&PAKkGJXi5T#Y+{hRJ=y;ysEFDSkom zDaEfVepm4aia%ETh2n1&|ETz~;(scZK~b0fuXv#1p^8ftk5xQgu|_eb*r<4lVoGs? z;zq^Iif1V16o(YY6sHu=Ry<$vBE`!UuTs2D@xzL@DSkrn(~9>gKBD-z;#U;EsrY@x zA1eM-@t2CfQ~a~y-xOa{48nv+x-L*WSn+VhqZOAcRw=GltW!KuF{!v-u|qMfxK%Nu zm{;7Pc$VUB#d8!dP`pI(3dO4xZ&3V*;_ZreDt=b+0mVlZpH%#+;S#E@fgJwimMbOiVccu6`K^>6uT7r6yKznRotdHqBx^j6Z^74_Zl$KLQH(3v`SCgpw<&fjZdQaTN4}R= z6#D_nF`?nNDW0!*v7((1V;GY67b?=?&U!3WT&7s17*=dhJXvwJ`j)oSa!qgZTfL9> zOX>RmHN8Hl<-JkyR>e;!iv0!jvvz~WH2x{YZzz6W@kfe3Q~ZtM9~ECwd`+=J=eO2Q zaEOMNDq1^Nm4?HL);@5uhEs~|ifP5u6|G%hyN1UUx!y;?B zX2lJPJ&OO+@BDAIL*1eEyG!w2#YYsMP_*`^?`T-;d1#lPX!w_k)-G!8PXEyOGHtj0 z6}isKc0EGT+M8BtxJEIqc%tGuMQdm3*6?P1`T5U-4qaD-=JdXzfb3 zYWNe1pHX~3@i9efPx^+2zpwZs#h)quM$y`lUeWMtiWO@2Sg3f2qO~6_({PnySg}Fz zWJPN?YS(aD@pQ$k;&w%AFWRNya}?jDc&Xz16|J4f$I1Vy+$#OvV*TEciXp}0 z747GG6NM9ozN0X~okOvx?gl z#}s!do}>6K#Y+|6uXvr}O^UZGeoFBk#fKFiSA1IW+ltRB{#fw^#osCZMbWMw1XNDV zS3F4ZaK$$&u28I2j47^BOe(f2+Vz4>8a_jDKyioSxT0MrI8Vd-YS*K+9?KO=^+C&j zRu4{Uy7h`3inblMYS{8&Uc);S&r;m2XxsAw4O@P^Lc>=p-k|sqMcb}-YWTB?4=6sW z_@ts8r)~Q_qw&uv{!H=LiZ3euRnfMyt8{(6>qP(mxNYR>e|Oyeukx>z_y1e?_Cv}) zwvoQ5A#{G#Gl6u+ft<;uTn_!o-*q4;OT zzbjgKV*MlzRQYn4;?au7DXvnCDmE&fs<>XUQ_-$7zgfdM#kVS+rMO4Yt}nk^!9&Oh=Jy1Mrl#~t~8ztVK4BHpH3HAlL3U%Ki! z(rxjjtC=I+fG-{O+S$rS64>%lj?b2kec7f9&ynt8U%JQ~=|12~7o8*BO}=!oInsU7 zmyT^STRkZIZ9O<%&6e&7UpmUg+0s!4+58&jNcSUOy2Kpme&tKoI7hm__|mPJBOM)r zZTU`|Bi#YMbSKS`jy4jT-`Y9SQFhvNw3E(8KicSQx>M#zcaksNslIeeagRq1=Suve z4)6cNR9*g##g&iBOmJE{``Yn%PEok8bk#GYV;$|Ey-y*6dHc&ZY!d-(x+L!BQbpeKv-$|GO98Vf+dC-DC03e)rwDx9{NAc?J0`;f?;; zXYWMVpWn5}k91&u%kj_VcRlXyJGgZg;K5>FguVSBp84~;iTU9n^IL&`)ACaWIvUE= z*Y-yO{hOAbrn}=~@M~OT@*^+Jmfx=rG<4Zle)~aS9fU+IU)3D>{SEmovzY;BE8h{w zuM*FhpB;}#Pmg|DkEQtNn-FjRX3OtXK06-GlwU0d_a>VeaJKyRV6xk)`PuPkru@!AejJDF-)#9k zhWt)NB9_mNM>FMj8}fUf%>-%ft;f&WZq9>_^JP3_es(;XDZe^&w#`Um|7OeY%TT_z zBN6kn6IL!EC?<>E=V@7{ves(;XDZj;s zJI-k~GvI9H>qdUvc+ULncr;UfZ$^Hvr+sfiehJMl37kzHybt+-rMos5$a`-?y~&7>StQ zM*N$Ne&0fV^fR`9_O>*?)-PlH(E6r*`F#TS_8sPN*D)CHF=pC7`wVJG(fGUb>B4wU z-Nu&hKHT%2F#hrHTgPE~y4&3I%4htC<}6D0&l?=48FBW{ru!x$cyIrjKUCa*`Ca~f z761JD!5);4{gU+Cihs6zKf*o49lMVF?LmGV|LmXr7SYE>&K*ei2himV#Gj6T%#Zo= gn?CXBTzfNUXbXjBHa`plMd>a^`TmSJ`)AYrKh!{w3;+NC literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Src/sysmem.su b/TP4_INIT_TFT/Debug/Core/Src/sysmem.su new file mode 100644 index 0000000..12d5f17 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/sysmem.su @@ -0,0 +1 @@ +../Core/Src/sysmem.c:53:7:_sbrk 32 static diff --git a/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.cyclo b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.cyclo new file mode 100644 index 0000000..4f4c23e --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.cyclo @@ -0,0 +1,2 @@ +../Core/Src/system_stm32l1xx.c:161:6:SystemInit 1 +../Core/Src/system_stm32l1xx.c:211:6:SystemCoreClockUpdate 6 diff --git a/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.d b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.d new file mode 100644 index 0000000..5fccfc0 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.d @@ -0,0 +1,51 @@ +Core/Src/system_stm32l1xx.o: ../Core/Src/system_stm32l1xx.c \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.o b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.o new file mode 100644 index 0000000000000000000000000000000000000000..7ccd89ae1a677fb9b609c6a904591f28194a3ad1 GIT binary patch literal 709044 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�)oLx;tCpFc@C58L+i;af+YPq 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

dQ=2C?EwZ&S2T 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

_&-k#VBITHnJ$T4eBg1 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 LPyXguH8uJ_5#?_R literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.su b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.su new file mode 100644 index 0000000..7b26053 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Src/system_stm32l1xx.su @@ -0,0 +1,2 @@ +../Core/Src/system_stm32l1xx.c:161:6:SystemInit 4 static +../Core/Src/system_stm32l1xx.c:211:6:SystemCoreClockUpdate 32 static diff --git a/TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.d b/TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.d new file mode 100644 index 0000000..98bd1c7 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.d @@ -0,0 +1,2 @@ +Core/Startup/startup_stm32l152retx.o: \ + ../Core/Startup/startup_stm32l152retx.s diff --git a/TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.o b/TP4_INIT_TFT/Debug/Core/Startup/startup_stm32l152retx.o new file mode 100644 index 0000000000000000000000000000000000000000..4cfa6591260e9e71086a25d57e7ce39622165049 GIT binary patch literal 6044 zcmeHLU2Ggz6+Sy_H?f;KPSZ4jl*UP%;?iW-UfWFr1-#z%&!%2?Hgq!fj-4gz zU3Yd|98p45@qpB*iV#ATT19|(=tDt43W5iuwvrzZLRCd7;Gv*MfKnucs6eEssNwtO zXFc}@t32??weNiQJLlYU&i&chd-tnjQ{%B%Ou`bAKG|R*S9W@u_8|}Ya|x23*2`oUFNvaU=h4g&Jw z_5UROzwD!DzW1m4klb&{;vE4XHjrWjtPZfV% zVgvh84u=0|;jcd#f3hc;jBigQ4FjG+^S?>Vh=C`|P1|WE7wuYgZP{|3TD9Hew7upo z)EcXmWWi}HIo7h}RvYzXv6LT7B};{rnVZg)%xtb$m`XpE%-Zv-OOi+=GY!X17G2A6 zS68IzquF$q2UE3y;gn;$Yl)^DM&j)fYXkV(bsJkKeW)v_v1g6*08WGq#U-{Q*1fyD zJKnXo>rmIucFayf;$692J7RZk7m0s{W?t#V)0+v*Vpup|EWX@tYl$W|OZ0y=F%#3} zo^-J%l^9AT`env$+O9ci)hjjIkzGiMtIo28k4f)oNV*5avaR{5#O_A39dqm2Ye({f za$Dz?d`EOZQ0oQLrikJa*La&}!JX$T-n$t!h$E|xr~sVnbXQB(F5PH%MffMszAwV} zqkSO4TTL|L810d$09=jd%|pu~E?b2w?Z3+?#zu&gxZDw8^pCv}DRJra`frHz`3ZNS zZxI*&A$7%S2X^8jsFOo{+RCp)jfOju&P%T= zQ;o(-rm=D^Yq?ggUiAgz)mrUw+iA==UoaWWv>eAeC(Bl~j$ZiMUN|e$ z`CRMEbkcGv<4WATy_~n|){@<_8C`9vCgmp7s;D@dY1w;cn|!0*5)|xur8wK7$h1^l zINRcLbJ+RE#p2C>=Xl%Ju7l z0bPKz+D10)GN=oNqJnHbJz!?eSoOMHQ+!1giqEJ*@f}rc8e@2~;16!5I2u)?vl%7J za&gq0RA!NqDMgY^E7O>HR9yy<@kKM5D0Qn9M2c0hkW+F2S8^#A(=#Q-!js%;qh!ok8W=X!adQ`^YnHPd z&5{c+Uc6;@W5~)9gDWcwuB-vlRuU*9Yh}(TPf zu1aT4L}vnL0~TYicqe}29>FOQ90zBfK8<^MP6Y151Eq7n$ft-0{L4`1LI14Beh)#; zeh(AjZ-j{cSz^%N=ndlZ1aS@pad1fY;(XFS&l|XS@s|PPe(^4627>mJKM=$@9K^wa zeS~t{%)B_s;64iDDar>#3dEF1i8v_23#x$w>M7!|$Z6t(A{F9MkuyXLrbayG-~WtH zi@4-C@UIau$Y+S36?vA3gZ9^mpBMQ$aYW<-F)ebDI4bf@Vn*aeB9eWXI41IK;<(87 zh!Y~O5GO@mCFVpf6OZG!6Cw`qKOtgpKPBcxUMEhAtP>v<`56&|{sr-b$Xmo2k++FO zk>3zYBJU8(BG-tsB7Y#xiM&fZDe`CHV{|0c*YWX8 z*mCSz0#{yF65eSc!DB)q6eiRIgJ+n~j~$+Mwdt5od*>3rcZI)J;80Pw;kebt&lFBn zU#%}TLcKLV@7PaAwU%Smmu#ftJJ9+%^`%<1=|Y{J$tNt=b*l5LF3kV?!jCYP&YMT} z8bZZ#wTcn6@X`0~%_9N7f@^Od+E^N|e;aTs>Y;$gfh?0gw4RK`@&GFBKgy2zMDwG+ zs87aa;XdQNegu`}9ppCxWPaEN-g}Vo*f;9$B6v7PG+XWYz%JB%1N`AI`9KE{d_{p5Oc+EdQa+D znRn=$iXX!+>_Z;vUO+n<_Y~reK*qTIEQN6|p&j-?Q?A2bFB?G#b(g`zHdWnN=)S;) zz`0?06*U_7WyIxYm~p#N!?>@ZO@CqT55eCB@UT$F`euNkoOd_AL&6f~^m7QJajzgQ z<1sGZ8DZStp$!)+0I&QOWPeD2p+6#~Vxz!80WYWBkT5>|(LZCtMXMCBs1`S9P(puv Q4@T|Qk>6iJBVcIvZ>63(oB#j- literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Core/Startup/subdir.mk b/TP4_INIT_TFT/Debug/Core/Startup/subdir.mk new file mode 100644 index 0000000..2bd1fed --- /dev/null +++ b/TP4_INIT_TFT/Debug/Core/Startup/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +S_SRCS += \ +../Core/Startup/startup_stm32l152retx.s + +OBJS += \ +./Core/Startup/startup_stm32l152retx.o + +S_DEPS += \ +./Core/Startup/startup_stm32l152retx.d + + +# Each subdirectory must supply rules for building sources it contributes +Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk + arm-none-eabi-gcc -mcpu=cortex-m3 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<" + +clean: clean-Core-2f-Startup + +clean-Core-2f-Startup: + -$(RM) ./Core/Startup/startup_stm32l152retx.d ./Core/Startup/startup_stm32l152retx.o + +.PHONY: clean-Core-2f-Startup + diff --git a/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.cyclo b/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.cyclo new file mode 100644 index 0000000..2eb1da7 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.cyclo @@ -0,0 +1,12 @@ +../Drivers/7Seg_MAX7219/max7219.c:100:6:MAX7219_Init 1 +../Drivers/7Seg_MAX7219/max7219.c:121:6:MAX7219_ShutdownStart 1 +../Drivers/7Seg_MAX7219/max7219.c:136:6:MAX7219_ShutdownStop 1 +../Drivers/7Seg_MAX7219/max7219.c:149:6:MAX7219_DisplayTestStart 1 +../Drivers/7Seg_MAX7219/max7219.c:165:6:MAX7219_DisplayTestStop 1 +../Drivers/7Seg_MAX7219/max7219.c:180:6:MAX7219_SetBrightness 1 +../Drivers/7Seg_MAX7219/max7219.c:196:6:MAX7219_Clear 2 +../Drivers/7Seg_MAX7219/max7219.c:214:6:MAX7219_DisplayChar 1 +../Drivers/7Seg_MAX7219/max7219.c:220:6:MAX7219_DisplayCharPointOff 1 +../Drivers/7Seg_MAX7219/max7219.c:225:6:MAX7219_DisplayCharPointOn 1 +../Drivers/7Seg_MAX7219/max7219.c:243:6:MAX7219_Write 1 +../Drivers/7Seg_MAX7219/max7219.c:262:13:MAX7219_SendByte 1 diff --git a/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.d b/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.d new file mode 100644 index 0000000..102bf96 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.d @@ -0,0 +1,54 @@ +Drivers/7Seg_MAX7219/max7219.o: ../Drivers/7Seg_MAX7219/max7219.c \ + ../Core/Inc/main.h ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h \ + ../Drivers/7Seg_MAX7219/max7219.h +../Core/Inc/main.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: +../Drivers/7Seg_MAX7219/max7219.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.o b/TP4_INIT_TFT/Debug/Drivers/7Seg_MAX7219/max7219.o new file mode 100644 index 0000000000000000000000000000000000000000..40aab2f0d06962a8a5d4f01d152c96e62519221e GIT binary patch literal 715952 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

rS1MSZ&*G0M2Vq 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%0D9pybVw@zeOxk&C~I?%o|aqYXtKjC4GO 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 bz^D$T4=lUXi0cgAGTTZ5m2R4Q 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

+%^DBPKqx_j?`8#j$ZzgLJ%I8t0 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

}uEkmvD= z>x9H?vsVjLT)NpnKdu0JvQ~3BT605G`~FPO>>aZ}4IVr0yXFqC3=EIKd_{+NGvi*ptRRgt7E=%-*g?$&Cay zGA|l&f_UBg?dAep*2N91BkpWK`v*1$asCX#qK=Z;NWs*9+s}x`1J%OyGAK>ax6oqDnP$O<-p|qg&l#D2Zmpt=Qb(Q7ttb+UZGlNmi6 zkSOF892ewTRDs^Al{<4&f`=95EQ=yRv?icWR)Zx+0?d#mS$TL(B1jX|1?h#06{J1# z^UlH=OHSSp`JPolOSM7VP$fGRRsty{#q*uQG|p?@zfH> zNCXa>&8MIL`r+Xx*m;`Y3*9w^WffP+WNVKmsDY~dE(#}6?)jh*`?g!JuY z;$8r?HlbYFNG&U5S5^gN++x*LkIkf%UcZ(q4^8Nvvy4$7Lwg;t;H+7*Bh0 zJc6>Y_#KgUP_7_CXW4cXt$gMN3c ztM1U(kTgB)1z`-DLKw|11jN>$p(um^fV%Q)RA~blv*>)@BEK$Fw^ThqH^a<;ssLSb ziW%==gkF&X@}#jv;Ov4P&aQVwIdnnjP26Nzk&K%83r6)Q?dTzTkL`GeP?4~9Ilte{ z39-Ds@}o1D6v9ffQoxy=_7;?gr+{p6a8g(h`u_F5Jly?t{`UR%|3cAV#9g7CW~_o# zlmzrdPnbceo>S;JAAgCJLxPn0Q|OyZ=NUY)to4^KFkStX#(Y;lja4+v^A~wpwz$$u z%=bp885VsMx01&*Eb~C>Pk9-KE*!Gg15Vm&?S@KYL8(b>H6guLy|y(6AC3=U4n9OF z+`@89$j|{BV(Ovj?in63MBgdO8`j7J6Ya~TUg`U(Ll%%^>A#39Od7HE*?z6D46D_AUr~Q%M_56`AoAvs zyj^rplo?T_<9={R1?k&_47r@xl`dgvamOgu$(-L*6OB8;pp0cOPVBKL z*t$EoQ%&V^(xj3J@eSwO);P;<4QnVlWgr%UcM=Aa3@$+XmPIW}(g0i41kyKGE)vfD z_f&y7@!?h$tp*7qcm?1%QFHPQ#CO0- zcq^dORwNkJq4a@e(;MlX!S!WR38XR)^GIy$kn7LzA#ZwUQv|+%=@@0ML$N|_h;G@4nVyEztmT2G$Jh-Q_00~|%M zALuAXzM&XbdErMj5Cm==K#v(+3nh29s%e^dZ{TZuZ;faIQ}A7!R1YHKgmgM+24dso z>`aX~i2KMvX1H#&qo$&)@RQfe80>2@`?rGZPy3pf!4Vb6sMK$Y=7> zJ~e3yOS0jdIjwgUW2r!AgM; z&L^w&yfJX`y$w*e@MvJK3HznJrfb`3fm{%8IYV9e$b3rwLTm7GV?Y_X^!S!RxLXhq zF2kfn7!lljxHF->^oOMNuU2ExDR%sPWa3%4U{!rFU-0+rwk z!N{uF2F#-#o}6kjOb@jLBM7j9hr7gN(`TD2emk@tSPy7bEwy$_+?$S5)z{Q+dIo(7 z0s{u>3;%*nyLK}V^f$nUB)=K;>!2i<9^MH5*uSjSRMarypuEuz7Vt$cp|IsQfmM~h z^Bc)W%NLA4(`G|^nFLuoTc7k|{&zwjN8tnuXzNpy5Dmx%4_b1M7b4_LsuBOKp$4v_ zM;%mjvajxUs~?`=9OxWUkUN`SOsoBqS9%afuQG=64n;(BtX);6HDHa5m;ikI$?J~~ z{M$MRuz?)lciSc0KxDN{u{06-2b(g=beOf0$zzNK$2iG>_Xa_6K42OFeNV0O0qFAS z`i1IcQK^&mdlz1IM5O3|9(_Mv75T@Z3TnW*iR_QD2)7Tff0)1j85WWU@yMz5^IKZv7Kt{Uf${kNvP;?bM=kjU=A{X zRsX-?bB}misz-}Ie|Ea>!Dw$V?F?Ci>mqHD2{)9cv|pz2*dHUM+tl(C=r(h;Y}72y z!ttnAXUwLD@gA1W3np;S>tzgxc%)9IFXPRqIe=|Ju@K0QL=g%?W>m^7Alp?{0U`ZE zTbC`@)Z{Q>@t29k{3)2ZLJ7f(ve#q+?nD?AV0D7)04iJX&fK8A{#XYd&j0-MlXg!}vS;&wbil70DXFRtj7&yee;nXRO(V*9YiEKUOpUjjBnBkR@w z^QX}@^14%w27W8$Uu|4D7-s-l&(M7pjIw;dR8RzI1?Y7QE(D6b%!J_5c#tY#Wtvf2 z?WBocgo2jBwlR!$p{W)JE_XK1-scQ`)1;n5dkPA|>_oYvi-uwAVc99DLpC{#B;C_e zw2fvKkpAmtzK`O^fnS(`1J`v(B&SAfYam?az8koP5K|A{qd7 z%{Fw?dKy1yLP-}$4TG*xH@SAQ_Nk|q@3!ynXg>hY)d<;E(H>g8TAk)l2TIQVTT5XL z*6b95^L8|y6xY|)x|Y^8b@ytnvJ>k&L_>mG=P8LM36D^)2*M-5)476P5Ql+(3R@W$ z_&RpEAPjUTib~hsoenWSJ3GXL?CfytGq$tC_z-g!j0A)xEbZlJ>Qzil5!?-B)ENkn zEj+m*if12QfByhqQPi?PJ8V7Dh7n6b%i>Ozq3SSwFkSFkW`oDE!u0r#619&wc#w*Y z)xkYkGjj7$oR!#P`2dHsBIB)Md|_+@GN2#*-geOhP5O}i-0bS5!3Uv(f_rr_8?~1@ zmZ!*pbcPyQ5}(Tte+7@4s}LgDrkgCwWj)&wCEDdUck3^;mg2Bu!Au8+qr)5`2hW*9 zWUuBBK^`$oUuC@35Hl{R&^d)iriR?(y_zm{NQ%)}|>Oz##CyN`>tdj*HERBfLaH?1KZOFR}7WbjrJWfubQz zdBtdo>WZ4|2#$1nx6-}}kaa@IF4@8~3(A559L|L65%z4^*RcX=ajtGqEb7L}$PTi_ zse>Mj31@;F4DHMvjp(o(+)e?huZddY?KiW#jmK^jF{Xv7yJ+3X8qEI5I+B;tkq!w= z?KqM|kDkIvJD59Ras>2UDtWt7Ino9oBMr2V;ge)Q^C;S(P_|4pQYf1+zuo`zm+kx& z*k$Niz)|djF6c6IjfH9SrK6X6CbQF?k4zV8s|TKGsq8eYt2t;1PEg$vdaKMT6O9>@ zK$3!hl-7z;)v=!1<4>XgH*K>#T~8n!7-M0ka9W6qDYWgOan$#@1x<8p?S*A4)a1yNl6?pP;9yqq}jD{5o0u zVn34UV^GL+3cbXU9oLC42N-Z@e2`^f{`C82qwm9d2gmkX#Ii*7AzY|8jbFY2kQ(-p z4IrpKI3LVDl57tqjFVvYx3}NTfgSu}bG3*Suydy9{(U8d#HrGG1&&1Qh-o_H%3s%0 zNY@OBuK29m3#LFQ#~ZVhIc8J9o60hqCJz~(@IjE!8Np618Cfwf7_*lY9h(L!%*^nf zY_Ue%6UxUC>+1{sV0aP7E#q688y(a4;aF!DAc4>CwcP6AzipmB*=TC~Jd` zfJr_;v^V&_)h;G6@Fb-|XyL7c(b4;}r?6wAA3nN5u0af04Fmo~Q~>bYrZ%4hJ{Zr- z`UBe+&32ZhYQWckce?GW8z(S6?5f=m+thMW`=|;Ej=?z`el1PQcqU?9#RyR_*r^jJ z-aTINo1Xlpd{hbMmIIw_;G_l~+!t(+ON~BSG(Qh3II2*lgV%eB#TdJ+H`GPzlYM?8qInI*ytUVKeXzfw|cRsnBsk0cS3esTk| zH1wQ$ZPk&X&Q*>6E98=#Qxhc{yjd5WpI0UiKC}Sb8If<4-np>|v zJbe8A_1g#CfMl7KB52>57#rlj_;Fi&c1hfe*`@WAcZeELPHw|1V5w7l1t>s7T0~Wn zbWPc~y)S@!MaYd7+`hYe6}x{`_bP<{s_vn?Xuf6lV5$WFtDb)F+dlR1w{<`IZQZMK z;a83Q`EPsr__r?WZ(P^$Z(P{%Z(P~&Z(Q0jwODq-X!?3_idbh$vEXX_ft;@0j(+UH zRe5PBWOX&(1R=eb+Zh;^OUSfw(jBQ2A2Y=x|00m4ioEVLe zXhWWwyppuS-Xd=J_d&Q+(7`-$s^iIOpbjZNrrSe=tPyj2jE&jZ+)UjHJq<{Ya>;c3 z@l%#e$KZNQGVN%Rw5T;N6d5kFe>6N;G>MEE7iKkk!XOe!t2)*YtjPlvnc8(x@Hx`T+cbt1%eHM$~6nkfHEj&fw?gCc&ii@4_`O zdnDt`fF8SnXsdCGL+itrH)BaLAZUy0qVL8}4YmFL<7SRzO~<4U1St#>Ml5;OKV?+|;kieXM$KD96wh1(;fRVpW?xBhR?ya0 zBjnXBh-C`@3PUUUh2i5wVJU4uBt2IPq=`5^-CnLw^nxTBbo@D-8807T4^$HNI*cZ&g?%(3-*``s5*T{bfw!X`hdNXHvdRy>JQeC}3<6=9JIERff*uLHx zv(MA;4JM{0$R-A;+IBDBo7C-5(3ebvZNIw}wC(b)ha-}ZiL*rmU@Z$3{CLGVoIAX# z2IiMm%R?6_7>1BO#S9D^B#B-l#Us-MnP~AyH} z)_hpAm8KJ!1Uhm>Jt0<^tIdS31hZHs^M|a7$)KOMj2sdMl$OkHPc9-Xu@%Gu?&>VK z#VNHHDghd^*A~9q+jDZX(8_2OPs~p@2MO{6J+B1f#r%r7@5U2bxd_^J!?VSt1w%m{ zkRz%%INXp$9c$(}Pd8`QIwnLT+e0NOnE@UNIrvh0fW-BQSch$BeezeR~#Hg#~u`p(8xmk~&&_v_q2iEX2 z9xgw?xh~QuPUCY5O!|19E+2F&vvjMF4R+EnZ71Z^Hv5C|&P|VmY0QyzC#I2<*I*ix z`*fRO8bc2{!H^Z3cmcb{+cw{A&&)-8JYlJK`htOvgR13v12OpSdWp&_r|^;+7ybxz z3DcB4856~_39OzGj3OB$iloRk(NNBI^=C!G9xO<@E`2(#GzHnK9kXrG^~GMYh<(-X}J5#sV1%j$Dfuk`}#U5k*q!qVyK^q0nGgNO3!u5yC4 zJm~hbsyz?qG;7;#DLD|Gl$2||Cr#w8vbMGef@*ejTCrp9ECA8t4{NJBnWO9J9g_Q5 za85C*?ScR`g$MZx{;f8nCfOLoC)7`&I{Spuo#upPBcM+~c-0z<4VT#BG)GPolNZdd zbXkoSp@G;pnmEH%uz^(X9PY9k6oW))`1Li)J$0^2S_qa2Rv@OwF4?%XM?v~Y`ERa~ zgzWC-ZcTqOJ%>y|5AwwBL6G(7+I#7@ou%xI;`%&(Z`CM7rDJ6?b213aECaPxAbt7N z^F>r|1WZ#QUZPqX#B6vK!FEb215gi%#Ixah!O=Ju7|!l!wt@8h zu&}|QR{K>hTeYjN0UElD^T<|)2yOt1Z>y^jJQQ-uO5Fisc8ALA(D_%ME>?yp3riz8 z3u=*1&pNko)-E^LybWzlgXsfthkVd>-O&f)4t^7qxmi?5FByOe=P(5OWYbN0OPmuB zO{jKXW2(S>;d0g&vjwQlYGqX*&Bdj#v=%~!TsD`Enryva@f_s zSjbV7L0n#+E#Xi5O01A?&D+HSIZe5e(?QnGJyg}f2-eieFz0-zNZ7uo#wEufPFh87 zYPe)Wh<0`I6Q@m?4037nbwL#;EMa!;`s5ePU_gI7zG~7aT+{P=FmW*v_^@yMn^NO} z0F#Kl*vImb_dHvPfI%}QJ>9X><$>ahUaSePGS=s2J~s`zLdAKdqhNLF$uD6?LR015 z(^j-lyL4;|9Rd{`@GjPOmtYclrjGQ5oO`*b|(dNkBnuIEulin`u z;+eALd)C4!iILr*hd*80lILbo9>o%5`FSjVnuHl$( zmPbXbvAlwfALU(MV7M>O^MoO-A2ue#y>kda+fbx%6VNnm==j{BjZ@r7uxV!m_~2t z7Ef`!n;Z?ig~Z#Z7@lb~kai^tO@D#uv1LV6#iETWo|1Btb91N3N=k8B?N~Nuyhcf7 zE{?y;K3e7h$9vtvP+qPQCGE?rQr5~9^9-IY!A`+!g($`LQWO69-N!dSvFO3~e|h}@ zN25lrR?6-xJp`hm?C1-qbIh@bCDKV=T+LRnW!%sWkmb|k>E=dw+Xb7ZWdV^t-Z0kbGP(~w$R#qnD$cO`7XTsI(lT9k8v9?Bl*4GeWhn@;IM zrIt_?^%X)6G7HBwYk*}NQLNG~iXXrlrUz|WHEPOcVFxMN`V@3oVR}4xPd`piXJ^zr z@n7Uc$TMhFWoh!^-pE6COAwp&Gzk@v$ETro4Mcr;)8cPPT(o}w`NQ`Qh(CMt(@zf{ zwEv`RbI%aZmSR{b;-36mI~Ippzs+l4Ts$wHah>+@4AEM&L5YxVjTtlMPx@e&zfh zoz3t}1`fJ@vBX)sJ7FTW8@f0>jUU8G_4hx)+Yi2_!uPNu3?@iImQT@ZzKVI>mX`~- zO4T5Jw#x)cAn*m`4NgOt)j4iCoUxqU6p0bK4LAtrV8vLF2WebbL1Q%D8^c8on3taY zrpw0EpBFut6lSm*EpFxdpJ1eoAiO~D`bQIGiZIbZYE*AuA(7)Fjy*GQBR#lL#JtJn z&xFdjI$zi`nu6;a@N>klT8jx&F2PM?zPf`QjpZj`OrA4|ejpxK-|Xn5b=T=iX`qTa z*Y|55uG>V7i%?Oi=SngL)<+b!@Ppvv$Sta0w^5tgJqUO}4}n{|+M6C&gQ#jri`H}Q zoKm=l@8yBGXZ-%KFQi**u)ge|#~TjF4kSHUm$TFFfGww?J?`PPtBY$UCMq2tuI>+cu zM-2L9$E$0)bD78hp-SsJ^7U<0z50k%>pukn{^eGPP& zV2=~!(IP6tEJSMeb9D}o+H%z)ALtlzNUmdog~ARI>ixIBKAb-MIQqwDGB*1DFb!#8 zo}f9=F}0k?iOuUKJkq*^Kg9bFc=De=|Ad{x9Ct4e2UhbU1xca4YwMZm+m8syP(pe; zmsVNJ_kzDQL&}~6p2W-{aV>-A^qoyhI_gKjiL?mk(xTp=UM}@AqKt0>xoltGhiecz zD%dOEEMUUz+|t5)!-DoA-Qel=ub)2r@aD%KQEfdOaX<|(#((ZSL+qI-C1GX9m2!UA zkja@S{O+PvU*@U&s|!wIz?8|qLLjSg)$lzxNaB|-^dt->a>34b`5c0Eg>L}8tJ8bi z^%vD+bpgKEK}Nbe`k6s0+Uuj2*;pA9QXNi+&8y}H7Spz%+<02mN{g%gk-D0WiK@L| zMNW{u>JGb#eri%pQZMn3RM6jyqWrTC8QB)h9L^qSG?T9XX=Ien+)$Yv@#O5{?D}eX zZf6c$ARTy0*-N0w$HE|ix@Qit`svcw>e`YMJI0x5*sODKTK_@D`5IU-Inj|opASXfkff^gVv zVwCmb_Ih@SRk>S#R}-`uT_9%DD4>Yuf2L6Z3o~MheZLpV=V3ETq&JI->Q&{L+&w)-O1-nvAV0KCbsrEf}1ENRLMnZG6>Lx*^OvbJb z$VYIE)J3ZPFe<;EP|3oYfXE+7(P(?}Y7;`x5UAL2plCrbjj>8fstfTHbD$5ae*Sw= z7_F$(IPX|X@wmlu=(4w5LhB(!D9E%kuN|Pii)5B_jZM0183a=2F4aPgkViEbqFJSr zy{{M!k#_Z;X&8}-WDn1IB-z7IUtgBk#Khc-n|aZIm|WFqtP@O*d)q25O`*hnO*@O} zdDnOVybLaGfM?oG8hma*H5}qwiVI}j>C2dEdekPZG;hx?4dvYI01RU7!ZT&rr-QX6 zmlbnf>#qbfAw9ACUF>#O;w};P+bj-@BM17WSHgj@aPsQ_6IaMc_-hqrUO>$ekx+HF z?ZpjMka}yY+b4nl@Na|FU~iNl4WQBFl^OB@=?J)%&u50nME*BMc-mF&03R6=5%%zy z2uZr7u@~PmJ(K7G(a^V%oR;R6Dn8;D(-1LDMLV*=E*f7Eb=UW6rVa2#=EkPmUSPL7 z1d+OL3@x#l{dtr(8f1>nE|(jHA7~m(ywd_DNqyg@C%5P*Q zgOAI4ZP^Dppx4Mx|MBB%J+2}2LaUqr2{^$pYlfhrO!m)e0`Z(Ue}|G<$GHiDfr~EK z)5tE9lE!o<*<7`t%3`Lh@$o*g#gC5<;NWfNjcb89H-UZ8SFemJQ^Z*u=z)82kf3>V zd92`%dgmZqY7Xh2SON`p18fkRa)bnML>nY^-YMhtfx@UI6?TdrroedR)lGbG>8pA$ zygArF@C(J=yD?M!>WYn1GgE~NYsShr&>@G(0YRJ3SWyI~G*{Y9K_B7ST(ndPxsh}V zq?2b{(hZzsEQ?h2OUlx9hU+#hrSa&^_on&6S`Kt@MyP}}+R+K$Trm=T16}OYqq+8A z;zt=(llhK2T#6euX#6sNhpvXnv)zO*x8@V!o3uh5A?>SmXGydSLjC zy)_4(aFsxI5AvtK_u_i!Zng>b|3@Tpyn7Zfd>9`CTMC>fkZKuVOqxRMFX7sChhnd+ zd5G|-y_e(FbbR@3`4Pr;>g;H1c67z)lMsvyfKR1>SNf5?!_Ee?#cZ$3`Tkks^Vk7t zu3IGXd_pAhd}>HUVT4*h?b#J&^FdLZ3Oxmq;HR7i zqOwzCB49=mC0wqcaS?hc1!kRHu!INp)%x41R5TPP z{n}_FHlRFU78_(U<(?~7g4ew?2JI3dCN?1=KzPWjO|xZdtKN^Qq3b2QoRx4*r@ngo z?=10Lu|BC)>kn5+^6tNt$wwFy}P8l za>~s&C!mJOwwktsRkr=}T(;`N?KW(hZf#4X@0Q_6B5kg12|(vye93uF?pC!^noy#J zIV>QB&e)|E(lw|&%|xyITXX?oV#^t`qKh8y6|IWabo&=~3UmKWH}r80!6ynI(_aQ# zZ-i^^K>5!|;j~bC7970wr`PX(`18LpDpZ)&&*BhVD|;UPJQpWH-i@}KU(=Ypi`;q0 zP?3te_E~U4*czfFo(I#>UR-G`hHJX{Wg7N#M;E=b+2Q-_f|UD5Zw%j8+2o^3A&kM_`(Pq}do_3I;zMfI=fc@ovpxOHW28)O1u04i2V)Q>*SM zZ|-0i!lWSA2wx-dhtEy&vEPP5Xs2hb7}z=IFP1k-dOdndd#RPpfcu=P60ooaW(uq| z>Er-AAI!S@%N=5r)ZaI*Ypn<>ijmzE2hKCLT)&5qD|EszAl$8h7J*ZgNt?k)wvap z0uSp#!870pW25ef9OwgahYr3eUaQwROYPCp!iZNx$B*Vk##qdw-@^B>Gwy12Dg4w2 zampp@A=)?Q#&Jgj(!7WrDIr2_`GYP@H`s^x(a%nrXo4TJuoFHCUMW#=-THp@H8$(* z)#?vS_=}Clv=+Ejb_=?&>}uaaCbAH-Yv_NG`W2x;u}H)1nCtZ#iSiMO%pu4YgZ$qa zF(;>LL#Gx*x2Sc~f_)()2L}G+-ttJHa*Yl+xqh7QlgN~vB(wrb)5U!x?c8tDcIggd ztm)`LR|d*rv+HxD!A`CZ#7d%mE7HfB8gzg@MvrnPvi*3bqtUeZ34ulG5P39|JbCor z{@dvCQt=3w8+sDL<-O%X=_6TT_AbnTXTH&A6~3Mpf|Fv=OU z`LMPKq4;kNPAnm^GTb$FrfRFN0v-wbST+5&2fP81qY4iN?o5^Vql=pVKumT9(;L)W z5}y72@94!_6u8~(6qWx*k9TwThF{ZLF0}FT#~y1Pf9oS7OQENQ9R4ua;jUD1or@NQ z=NL~Md%{`w9#{*5sWt$VjsMpxk{Bw>qUiH43aif@lRITVM)9uKUY3|G2}&CSZn7o5 z`p}dg#-)ksdw>SRtHgdZTKXK=*@xCc2FsVdf_^8;hb%dW7O_sd&W{o3F-UQu*Kw&H ziJb`6sxfQ>L1P(t=J8QHFI)3tX3z|a@v)6@fH*g`Q#eADl%vDF4AVoiV7lDR=?Q`b z6x7A!V!cKz4!jZiYm!d;Al%j=3#p-N?jY>69+ zmqPAj#Y;i5LQvj0UIv%m{m+T(q**KrQ#?;%M+wl}iZ6pH3VW-f?XF8h7i?pQ2!g>? ztU$dc(SLalXfdd7t6DK^YY@Nx@HyZ2b6$*ltTRwvqe&|}Ydjvc4U60H7(-EpMcCeO zY|f!4JD5tJTT<8UH^eXaHaG`et)xP9F~dLo$leiGI^@g}4i(T9!q}IHVApAMjz57E z+@4^Co0l+zc~X9kmKos60{K|x$mpV}$3@Y^Ph0Pg4oKaJsft`!erO_1JJ?ubU$U0W zg(t3~qY|LjR^9qp6dY%70--yJdr1)7Vc2M8{riIyN>uq=)fdAob?DjmjpJ0+u&GyTekw#x{>kr zvegj)Vo}GGi0t^;46SbN7q={IP=o$MHc~f*^yi3vzYVGUb!bFGp+?oW%djXmkQL}o zZH=tJqqK_U073V9wE_c}u~D3$fayExOmZgUMzf(4Y zTZ98EiJWp4=UaXUa_6Ob&hXHGA3eN9;MLH*lkUCh{_mcj!u-k++eP~}bNwTdj>v`9 zW0&aVXwi1iMC%|@K@x%%1zO|vCgAnVHP{wkiEg>$rKX1W7Gj9nOG9WZt96eoDHzNM z)2~?Y1jG0-To|aj{Z^!vyaQhmuw2uej zJ!T(VK=-^Mb1D`d(=I%3cs#iAItP7Vhf+0sLWgSke40mX3I;K5kctIxgGa|GlXCRj z{5mbRnLCTi7#do0l#KnE0C~ZLy5Q!D^SFYd1_iV2?848HvH}n8z_|rfr_*}jtkm2h zJdIMV?)#A{eM-8QObjI)C2D9?v~HP@mKs#vk)MjeQ_L$|nJS-(2mL3~K2oXj+p<2! z9gih_q>9LLY+XPxR`UM%LUo~9Eb(scd&M0|BIZa#tOXHDH^;)zuH4zHzx8v7sE~tP zHBciJ{vd|=JPfA;^v#vA5|UxOKvp!vdZ19@sGKF~9#GGroVuJ)O$jfe$r>@S4SO&E zF4MJ~BQYu+y1;*m!sUiI!_cQeF9|sjaaWPcoT<#kPcyyR<$9@l!tu?%NZM!_>|fne z)(5S$62&d~Uzcw?t@=Ewy(A)-W~kMbS(}@< zkXj8C3jbCnq@prqA$8ermupEmq`#}#6YY%hZWFsixv^PO)wOZ1x|X+iC|tE}&{m3d zi$;B%dWSFrQb2ZZV2z5r6J2b3fEl7bnZctIq={=TZSGJNWU_`s_sN@2*Pnm>GeYJ0 zMx-zB=He}-lJW37#D~JS8%&Gl3q{X=Mq-f^ET?7*hB8t+-m+YVRIH@;Q9FaR-lllm z(_fx}T-A%9jSLq%9Hfl~u@AIJ3D^M7Ju3{oUBmFjAPRxXS*bcHoG8f`!*l71tI|mi zxLmP-S@IvF>x)XXg8z8RU5In2PQm!>Q4WB^5}eNQ1o*d7%ok4~QTS}*zK1Rt?-!X0 z(-c-!N-nN?w~C$_nKS?m()kCaC8fVKnWC1paFBX~2OjHbL+2-&Jg`csiZ)c%0NZ%oZwt`?xeJs>xU~w@( z8D!~+ajp8OY`8wXl&YFCV7dD0>*c$TaGm-7;j6DK*(JuI4p_SW}w(t!Y}zYymdVU+l< z+rt-tlMR+;wnaWD)wwYj#nC|9llMRV`0?S>`yaKxtJT*TmQ#gn^_p$6Fo{e6WRjU* zXcENUlJ+7wHukX4f6Xe!iDt};?&FXC1b-p;gY(TU{<(L`{{@b7y}SfD-%|g*`U>^d zZ!0^>P<%+s?GzS%)S>>oIVy7uo}(7vyV`I{WZuGFMg!Ewvd0L9JZ87gM&OzXNJu|j zCNCtb6WST4y@HOA4%R^1-435c?DoA9aY1!};RfyoZEi5wke5s1R9m-BBWap)hrro) zi6l9&H9W=t`8E3UwN*|g&cVS(jmC;)u=Ss}UK&}#lS(?N1%j{RU8b#TMBn3Me9rN6 zj~}tgXy}DFtEZG)(a4qShi{O+r&QZb3m|@@*6EBz zbCIbFjWv^xB)%9k8UeLb-r(aZcZ5*Jc$zaXElkgHb>Fl&*-Sxxp|U@Lnbhg)( z8cGV^TEe$1g;nM1AS936XgB(t7}=hq5CT?pw(> z`lWV5Y+%73KzkW#y9tCmMgDX0Clu-I%aa1sL1v-&VY7}&Cl5f0 zY=V+?THN%BB}C6Rlw%&G$WGJ>lRz7eRws`uI;codDuIF$Ms~^RGV(@%FqM1TR<8hR z9ONwM>7l>DlyX5Jrh=7$2BW|zY^Q3&0LV9&_*2ZqKtvs$vPhnSE3FQ=$LskV>SpYG zrc~tpvr|{OUi?!8)Xp(UC;$zD|7ha;U~)nz)8faOh0^hZ;A2ZLXXBwj@RqRHHa(2 zcUWFS1?LFcy6G_;w zihxvdM_iEnO}Npl2`-}iA1Rgju-~awPPaUyRyNeIL$;9l^lG9LNJXn%>Im}tsrMqr zaWa$B?>jvyy|7NPuvxMHWp1%nsRX+jT26$sAK0!g4<6sq zKQT0uE)y<8jo>I0oES0};I*qtupV2uZz;22zY*Gb_(U?Sl@&lro`Lf2AeA52$S4gy zO9`!d^`*vS%Rj`20|6$@ngthON{}U>Q*LR39+BBVdInA-Y+dpvG7lgG&+c)vwr5mO zahhnK!oqpIqzP!r3UffaV+k@%;5` zl&sDHl+c)NJk^gQc;87WjI8LP%_M3UYIkMa-^Y@*JLv&&e2m>q!LkhjC7`+mD~D5+ z0(PYda;}s8<7#DN;HL1RY~Dz};dEcR?MyeV#{q z`^uhiT=cu!`+nir<73|vzNw5NHkkIh0s0m+AmQ)oZ zf&heXc!cU@piVT)L_m2Sm;2>_4i!=UX~6En(?=YU%3J{TWc{R{p*)rS&B}6*Dtdxn z1*d*Y#%gsfb|GD9r&vA?SRcF8#w2kis9=@|0t<$_9RFoi&wl@p5v#0)yz6;+pk~_5 zCn4xojXuE8JzyH7y@HD?RA;!t+dUo0?rSxWcZS{#hKPuU!5l)34CWbb3gvua{va2W zEx^nylG1uI3?o$B`3mirG9fE)@vBfpdMa3IrNg6Xd^w2Z>EM6vA8Q9t?qsD?MDRer zO)a)n$Anka0PKO$csPa2d=};B$R9ZOhBJd-bSt`{hqm@A#Ry^q9c4WHYH3J8%ml7x zj%ymhcZZNW#mF>LD52fCky`0!W$>f{p&Jxx7h6I;3zJjy+;)ATC^>*RvOo1WG)kZR zY=kT3pITq8K@`Fm zPL!{7i&jVkExa2XG_yT5=|T;|6ODxB<3~)EUnKfdFcAai$OoJhXt0-1VlN~gIZE+1 znNIBK;%I^LW-OLU0TW_N7%#W}nr` z<*GlxTuRWLUZaMif}W~owi?+q#ZHyFNS_*l{F$+L=`t;~GoEA+j~l7NtVumBdG+1> z^6uU1H}8G~f7;u5M(eWC_Vfsf6;LtY^HQIBOwmqsuwq&9oWLh-pr@4wH!6?RaY2o!gK?Pq*sj?)Kw#JscF$|&#*`!yxF73X>1MD6SeY%&TNK- z*AXjqZEV!j5y)qHjZRw7f@xOdmA%GMN9l9zs9L1PCk<+WB9jTR&*ilcf#Y;TTpblb=R1(!;Ei+_OWAj*+rz96yDj1&i&`So}YscJah z>>VC)N86}Te}y&;@iQIBnY%*BIxaNYf>?mXajJ2=hl-#*_()YRI_~5n9i*3Y_%cdM zZF^Y$HsnVY61YkpZe?E{#EScb73aGXE{4v+xsec5gbG^j33BFg`@%;B4>p-*AKK`E z>K?{y(z^^^_ojs&9-b)$D-CHy4dq(I=`ONds-i>!Qcr{-Xro}GD1&jHfX(dL` z-vN2NTq_gdYWhseFhB(Z?LtuBb>TE00$9_~d;HWWLE(XdOrXL?(yKV%R9aZ@e2Tr; z1JYHr?ag0yk2b9^uNO|Ww^Bn@DTzH_gHwM)l1hZ50wD7nt9u3aNs42AU2R@~?M!YF zDQ>-Ntb8R_eFSy8RpVTh$w2yxWV*<{O7@{FA(9g9rqB46=z9MIZUCbG6uo_%jgjQ30yL~Uzw>f>dk)gT+5 zu)T8r)TwDheH#V6h!ChgLj8;ts&(5rGyk%fS@7miFMYX4%Kj#iQuA**7H~#g+L9As zM`}xojlqm#j$?S-gD8V>;jWzz6R#Dlw>SD`?krz4IKnROEMGKW%uWY`Q0%%6Xsvu? zy+)1rc-vj_ad6hG`N%ZdARr!XaOFyM*VmT-Z7ri3O!oMWOeJs|#M7GIb#~Fspm0#{ zoI};391_5D`rjRCiYu^Z-VwjC_bCmIdX)zK4M53npuu|CnOi%0>a3bboj64#*;qPwel-2k<+rLyTxDo>A z=W^&Ki9UtHBJssQ0wKt?Rrw%JHoQUlCj%u$n7xZ~S!UWUTc8pbH>rUpgHOH0S-Nyt zwU#V^4w|eVMGNxAmeZw!SLQt>uND|%@l>bw|A7dcqbwF2e433Ws+zX$lV!SG@%=fOAq!vR9do$f>6 zK%lRwm8I_W(qW|gg6TPWI9`mJxGu!eRS(C}6e{6Fd=Nk6*p@GF9Mv%nS{o7vtPL6B zP^6uAfiY!nlzd78f^b~!`Vj_&PZ99??&tR({&xN9-K!t(erB+q+p&Tk;KRU-cM=4! z%i17i$w!J)xv{6gN#{kR`_XV*8r`gs$!v{eJ=l3; z6iA6`C~Iib!9QN`#HqGR)uXE_icwZ-ex|EUQqSp1-^b}>pX*m2kE&NB={*31B(Zk#efZlH zdxL*1SKb(B7AXkVQCAES8XPzddbF78iKN!7E7Vfx1VBf`XcJ;*K$U2FNJJ?v7_bV} zocnKP!Y(R zjH}64I#PMCs~(mZ_UrKICrP087hzV={;m;HG@V|f@HjU;V!&;Y$>&|?pcnksK62rY zN_vY%rX+}~qw08AnLtjYyV2Np9)qc37%fyW?MWzr8u#LSilCG63J!EIN}`+`i&R)c zJ6&75&UL|<9_fXqhOplaHH2h8I1noPL%$kZ1Ei6y|Mqe7=KFtU(C%)$B_o>xnkL( zW07YJZ3-=u$fP%MTC)Dh^X^$$^eZa4gM?3drl{%wX|qUSdQ41}e`!9+UciHq*k&8K z&t--j4o*+bB#(gM|LN7ccXw~;#zpzWFH7f5H0N&a)W!Yp5;HiWE|Ga4O%n&e!t8a3 zrMCeUST_2wY}U0}nw+bnv$~VkhC5B)4r>E6uzV^C3Beh~=sNTMYu%08nnE5yJkEu9 zkhsvX@=TKj%UCS0O+!{MglhW;=9nk7WGvKgPHqZ?1Len&466$sq)1k+kz6m62M~gQ zVV}p5EH|Y128((clu=K(uu;=TWV3@`YT*>R1lfJrDsa@*!*}= zRA>i7UMRW`*{(_P2`Br`)66XVns4c9Of4!AXpdS{FwKm@tU%_jQGyY%PW5GamE>R0 z6yjU>T$jtoa?M1@6oZQ%dbj||O}kZZqXqW0;uo3sMH#GJ?A7iLVt!;=p3wimjl}Sv z3p?8qr#d_nYC9V^*KnV7o}|z)W|+nY)dV&O6%>U>C@+aHNLz6bYO7!|@)j%vM9F~g z8>AAOT5S9QdNYq8DB|Q1G&n)NjQ-#>$ygK>(aW_M4C}KMBoC$iWm=5&2-@84TsTb- zxd=XvN{|EoBXQV%fP)Co?grHDrR;*`TN%Twap9RuA864D*6%t1MWX zIFj`isbA3#;m{O#gX0}|k|#lg;6VMFLhgyA$9*#HNfvQU$+W#8J}<2w$ocVabj?XN zl5hTU^&WPBe-w?i{?iFUj1*yneUtV9=iCK#>b^{shG0~b5d;U%OYDy&>eix(0d6fR z5_Pp9MDmkihTL2a2Uq>yV09=ZO`L$eFq1-o7Y5WDKF|;E=~HI|*RRj@8?fIQk|sU$ zywzBn3YgxFmBjL=hUC+~NH@#V4uWF{vMr`2m~W9NJNmER|Mcnui;iL!(i0HwZ_;ww zPoq^t-zmd$lJ2tsq6;i8XSxI@Ij!AkC+*~(n;vrh z-<_{vr{1h2=8)jaPX;=~(f9Xne!T-0ts80^&L>dh!7UX2;XEtQ z;?aA+a49L4re^#UqWd%82mY6IPH}4_>WFD z&=2EZJI(1*i`Z@F4kp1=Tit!MW8S`h_hawVyN_>ve0TR+`;8xkJxx8y?8Du^;P6wI zCZ|cbq_lXX7TA#zmJTtY-9)_w3l3q5!ofcD(2`kYa{}~WE|=wXq7_GtR^K|KFm!>u z)X*Jd$EUFE7UlNjx5GZMLEZl9W)F+CaV^8*{0bsL%Xhy4)uSlX0%zacpeVd_G-X2` zzACt78P0e$Mkjl|XBJ?30iPHiro1$ef6AqC`jgiN_*`pId!^a(@LvA%JXjNK{G% zHL@$*&ZltjChd{NTJAG;JAw^EIW`+#`g;bd8)B5olO2KQL0A~DXJ#Gc5@J7@I9{vr8LNO@D)i^buTu3p+&3aqzl~Nf%bi{q z%D!P%(>ogVa8w>!)vpdMz8=F_Q~EMYE3*f|(XG_(cYt+Ufuo*ux)hp9CiNxlV4>s| z?cjq7V7h^+oLa#UuhJzez9-w<`Q z^T=0UD{m6Gj*~f7oXl~N2M5L#p+#bJI3wK>IZ!RnBwVgZ6M8*|q7H=tyBc*U>^;D= zlD*ir$QG+%~85wp!7hF6qAO9#ROt%{8N#2HdJZN^3UWu}vPL_BlD)bFdi zSFd+#WSYGjeYkt2Y42#?oqdPN=NBpmAoQOF^M&J*jNxtf`UKLX5-pman~ag}@`i10 zmc$gTG?)sWLjnfoy-hW|Yhs6|rk5}iB%UX8f%k*J&+ zJI6?rgNsY>iiVb!K;a0DaAd^aTDNl2!6eljPXnm;tF6@acimILb({Rea3o5zbJ!d9 z!;*^%>_;$Z)uW>&y2@{DA#9v0AQ3ZgX4Mq+od(i)!1qC^4wAf?Or`ye3*M={KV2RH zg|Rq;?@<%-Bf|uCk>!MkKNcUxQ#c+*m|4;-%GC|gJmz{KOQz035glxbZy=X4XaOn; zLmWlHT#u(LS~S@7DbQrs(E_+sk4|-YGb>JKr!-e#pdZXCyv%nOAaxh6HXTxS4A*Y! z6`(!PKRrlx+B@g?bRHCr103G)}4|+ibzFyQDjG;(++lZ<568b z^gwP-W_N)H1=7BZZA<2B9e+D@)aKyOfxOs!Q~t|z87qW*ClM?*$cbqpYdLI+?Ojm- zH5%J1VEv$-3k+<#qJ-E?$g+PNw&xE0AIU-sP6AGczbsVyoy7s}?$B6W#yjRsUa$P2 ztu2w8(E7kCys^J8Z3VK0(19QWlw8+x3RWByLDZ8+^=bnQvA+NC>HGWnyEpf<5AS~- zy?*t}{oQM(l0~`D;@q+?&h_Ven|*|ygGhQ2i|hk-_C_F$f?rH8>Inq!SgT^ACy+YZ z3FHof9CN`a_gh3Zb3VjA@`&FuZHw@(sbLsYLIfX7LSQYEyz4n=Qo#Fl$EN>?kEz)gkW1{^1k(^(e?a7;Y|soG($( z+5|J;koDqft6ULZ&_}cZcB-%~;z!J7%sYk4x`Sp^xWO=f;qc)~Qx`h1kM+x@Lym;e zfiJXxF9XWxB20_$1lsGaV*|uEh=mhOL#X%snTS&I2m=_LC?mUYD=V580A2rj_dSHw@H*Z|Fv8E};h-LXr2oy~IHMIXrtvrOPnTESNm z9(#KJu@kE{ShvkL*GO4Om%VlRbf~(->6z;<5&$FpmRQHKK?qliE8PRCH|c`&0+}D@ z<@A#YLNWs9*k*k*KRBUe@PizDVL0Wb8BWvgfl}I7dfQ6KrHej{ZZaV&6jdS%?Pd+u z78AVg0}0|XG_n+%Qx%wd*KENny`wOrGHiZiUz@$j)k{8&}hvx#hxj3p9S+ zd#Hvf8H%X$;NcIZW{-U$)mBC?>epeE z;klvGI;={Cxu{_}LeGYmnWtI^r!(`_<8eaN9nucxf@m5Ns}U~|8~~jGtB~44BKBX0 zy@A}YU@*a_Fr*^nn`sga4>TGzH~bn#X{}yNtaxx-2wK_2Pa1ad6Q`-%1lavnBjxv> z_AUb|9|tx2{^S1OO%I)SQ<5Y_P^fal^u4_js;5iXCVPjWTndRI^s!)p;9QXmJ8d3x zPY>KnQg9h;uT4`~U9SsV=p(FvP%k0vaHzC#1!6#LkjphZWP!rc80}TP%qa00%_1VD z6Ok_~^>6-tP%R}F3*i6as)|2FuI@h|oI*-}&`>O(Kgx;I1Bn1EHE`iV&jS#Qie;xd zGyb|XQl+%5QtOwR6OTSyc;42;zh~V_?jc-f)6=D6=rA{c=zgukAj~6z4-H27wUl9! zkAp8ZZA=eFC+Q|ymm-v36JSn+r=8L=wcN-%NrBY9%y?h8ygzU0pxKD^C=0gCmZ*pF zd^%=!BcK>0ke|YqoaS8~?UIRrEU_NsGdJrsM58q_uNN0O9by4Jq+BAFP^;;g)j6q0 zmn#?zoRNzRmwZ~?L0_eZHg!sS%f;_lx{+sr>)4r&8vtYjS}TbHX^ql!w{mgYr>r5# zAdoTZ%bZkb(WzFQ&#Dsgac->UcuKH{Z^z2#aCy_WnG?wDuU|*rqcSv|)5YY!wxf2Q zZS1u8IHH*W4U7yQpq^>ELa}N;>OKRI9jEVJefRdxI=_E+kD#5^9sfn(^do4kh_>mH z>`H020I#g5`gDkID=sxb1(Cy%V>Ybyvq9GH*LiFlsMp5x zv6c9sdNCV7-9RFj5)(uF!7(_w89%BTN-+{*iGb+_ zP87q$6uy#v00enP_&=Ci3Iz@R`Liq)?E#WS7XW zSHmBhTj+8%Ux2H7d9hl6qRWZbc{0k0wn4$BBQaj@;D7N_F=xCsi5rJSluPGcnkBub z-JCWcap|`SnM%Yq?Sghi25M5ZtxSIfV~`eHMTALW%qrXR)~G;w2tS@!`$ z@G~8`6sq5X@z`V~a|CF(rnQ3UbrcY#*`hN?B2ZQ-h%^|4F~vH?R|MZyg7h$O@rYPD zIqH4&_U%_LqR`$CEs}kIDPdS?YA3%O7`XVwm1G(FnLcMjt@CP?bJ;KB#&Dr8H4Ca`NZ1z&jIH816sjJ?Qt&=O6ahaI=1jTqwtaasQ(z(x zWfer3LGoHB2ATpHd|`#eaD-NDBmA}Q5kNHzv8Oa;$OWMKX z*CUo0$B26fP%{Nu$y2p)BT;Tgk6;{~`QGPt5PZ3-f~6c-jgKs6ovxsNK01Q~c1kFK zTt!0bly-#gi~Ms(rm^vbXhXFU3DvQF9lz8BC#(oZk=R!A8>X=zZFWu=OSrzpO$^pa z{XsaN_j89!s0P#|)>2;lC$$&9E*%$ejPt$T6dh1wOQma{Z6cw+tKN~!-$=$O#_8qH zYmD3iYeu-W!ID{h)xydoFJ7~P5pjk^rfJ5gVR|ApUWMD0eArKpz(JLMSLS(KD#xC! zCf6^_v`(HCh0_j`g`aE`rAfv>lV6AN8Xj2HmCva$a-Q>`Pn9{N>2@FA{LecC)cw@+ zNn+?W_H*VDWR!rm4k%#ninM{nNrb32_?=jVx7b;1(}k7*(+z}2wa>CGXQfp zf$i)p6Et&crz3ICzi0HA{6V?KLy^tc4MWX3^+=l+EDmJ<*})>B5~H)&-at1SvGV-Y z+tcoA7)lk&p2p_kM={mfoRq zA{LR6S!Oek;x7skRpt#tE02e?+N=``tFE!(e?7k9gn0lVE zvBaH-$?m&?powCcBqUHQmd?ZsF8D}1w%$~eK+8~>R3EK_Q|E~AV*_T&YRw_lCD|(I z+V~7;}`|Am?D18uJFy7zH&XLSXMW<1I0dZT5K1 zUFq=OQPZzL7KlGpg7rF~KIsDsC&H8a3li!h8ye5Y0=a|ez2vnScD<<5a5di`uNIW& zR;a;HSXp+^JrzqzUV}A8eW!FXa9=Z>w`*vQYwPkrF0A;nA_`Mgu{=f{ED`by%%`Dc zptpf^AQ4$3ee{sQV$9W7M%OeT>0r1er&M*snaM_;$CerC92MZ;qz<#Q$hCj92xtb` zs^I8Ik2lDi3TTq$@NWXBU>mqOVY#}nfEWMY`2x#-6uMT|e>b}N76tVgROAh-S?Gys zn6D^ubi`PrVF!9U>iaF|Fj5(tQL0A*M@FIL|(u*-$!-KJDuUYReR z3AtWz5yL*~5F_V`KNZeC$;AoSg?gOyKGZ12`*^%u_W(Bv>U;8zKZs;2NS29w3Q+%u zvaoyB5B(95rQ62=g9?L>N$FO4f9%1XL9}PKzQ(J7uWD+;0W?82kxg@)&S+2Px{*OZ z5PeGWR)Cto_SNBUvCw=|1=kw4@r3UZM=Nc(ZnL$-i#6}37Lbx7QaJILU2+ISdd!k6 z)a1|h&E5jrc8Bpi>J^e|fMw*;C0!kTzs8c~G0#|_F*4QZ_Rzsm z$ytkyh0N(yJhYtU zl9z&Gb=%E_jRh0OdtAEXhA*8SGQ$>1&n&7&i{DGakCUU(k7m#WC}E+0!kHr$hd0kk ze}IqGosFYHz@uV*cay~yMoqcfwkE#-Vh0lMIWv}w&UD?vC;cv~v)sMR>|Bg6hjJiH zh#R7SVLK~3_sT#-q;sVjysc(KvBHKVdFUXGRhr2Xf){{QsWUJqbZ5BE(6$gL(=qd~ z(HV^RP5Tu^zr#}%!3!vj_;h{~WfF6Pc7@*z3>-HrRf(E`OxLpw_K!QZ$u-_qV!Q=` z$HX_2g5aaujVaRy#|2l=jvmY<0-S_8OV@BmojW2UhX#E%gO{k#__$NSt=dFM}s* z>iEaUf1p|jDxg0=u8GIu68RJ2*{QU%<^?hjpM&Rqz3*A!_mXa8!WI)n_a!T*6k5Tu zi02u_1L`x1MMkq*W--F41oBN z(7?S;{YrZ?^D~t%QHiq}wLv7C6xAQx_@UbkXN6x8X043g5;Id|^lk=raqQ&lh{ZYK zK<9SUi1I^`D&4Ewn4(Nv1=CkI$n)t5<3*o{FXf5$WKHBv>jD`}Du45+Qm>+q%hsw5KwQbhDUBWhN3JGFp zO7GYuTS*%9SDBdZhlE~{w&_QZX`E-%Zc{svpy`Ky6b$Xozg6ma;F;iu_w>loM>mVj zYP@{9(V`+W9%nA@C9;Qu=wgK^E@|#Fo!q0))g7f?gS!Wl_9RTV)iCQVY}UqN3%mJ| zxBCu8G86J$&Dy|76b{9_KA;c(*lgnKuoNID2Yk7LO-w8{2N`&xm|$E+q-Bt%o1(e- zjw(f7#M~B5jJu6(4*|}K${dI$Wg{|v^~nfdA~|hjyGw1_*F-kdI!3L78ap+i8e0k# zyIEKc!3Iie!*!bucPKXGXU~~#+`Fff%?WmA=`>6%>wGjfZUU)up@)Ta`uT3P*lkx# zn?TCqyc3EX5;?+34kCwt8BK(n@mwst#MWn6K={#|bw>U>NUw8dkJy|!iunIoud7j$ zKAuTajf9*a#646%DK0DCY!6q)=0|W=GfB(BdwZO^)E3Duxj``^;Y>G|!o56&Q3fc@ zZ_b;rGG%4ipt0kKSj<{K%G^>gibor*|{ z+_g|#Z5JmPHrw4hs@bLZ-b1$5-MUcLqS2NKwO8|0?WLKxij5sDa-&l&-NUe0Qm-_>Q{>)D=}=_ zNJ!#a%cH`5_So@u^mGc(7F)ab0K9ka<(m&*iz6Xtgm~&zJH6tMsM$W z2VcE=|I1fofP)w_eT3bPf*Q`e&L18SY}Qy<0$Se$D}P7*OjX zyci5>vq4D5L_v64uz<0+NHTHwLwl$&5>+14oEgd)nhNBHO@1v+|1Mu^zPuCelS56Y z!tQC>nXWJ~UlOjs04bL*&Vo6y=_=zgFxDni1}NskQckRtaKiAnXtTrgY0)s*ZeB`e z;9b1X6e?%SGybHzn<#)c>1HndUiiD7rOpYyE!-m+joM6khG`|6+yctgm zi~$Qmv__`9--|x}vzhPsIVMAMxvoZVUmw2|HjVs<`-;hVUpHiAy_FXX>5K}&c9!t~ zdOO!?UEfr-yl|;S(B`Ia#<)y`M$?9#ytPbGOJ^ZEg<|PKfk*GZ4qgIb_MNTvCOik? z{(1^+7G(YH64{hD%Gu;u6?(?IDvbg*g~VBRyRuCJy=j&T0%G4;8%ZFGWtB0WY88ed zw0Bk=KH^C*NpoL1g$}6e^HaU2^VxY=EvVkC=D`c#f%S$mJFIt74dKORaAMpa@{#`e zaJ!Np@ERv&J$=5o0Y_?_G^#UlzvtyN&XD*<<`Cq|f=57+MKNPf>e-!-c?f-C6G$Bd zl{<3zS_PHDa129PBfYpGKBnW~9}Gkqi(x4=6=)16vjRy9n{98#B2QO0Pa#~}@SkiS z!GulamISX}d7-@o-OLmYXDAu|)lXkJCge_*9JB&0rr@=&wk#gq==8q44gyer#?(@9Q9#9Ur(*tHX)kwdI6%KO$g{6p?QDGsPGtPh11 zx=w2%#;k&B_#Jx@K?cbTJv97fVc$^o?c}ozZ)LG1x!JdY!rR+nQN`Nq>0wFeQJ_cp zw!`?7EhjdK@}=&M-*k}1VZ%yM>1eZ5L-5H)%-YQb^lfXT&ZS$Xl!zVe*_1=ta(sCC zKWl{qw9ryN!vDw8iW;ly8q*r&bHgLTohi}8tT6bh3!fW8O4%iMXcZ?q?hnHD>l1{k z9Uz$8<|pOZE2g~-v@c9y=T4)Qeb2Yb)zx;H$+9FoGLe?z0_EXdqWbowi>{ZYHgSm24kI`M~WkyL)x%~TX<;2r| zqPOmOX$-UX4>k&Z{O;x)=bt;3KJ?6UF8}qo5YcVtYAuLIC7LbQ70Tn9%T7Jr0HTR^ zau~kV*d)Q@IE`tc9gy|v&qxq?^yFxGe0Vk(49-rEQM%x4hCU)I^l^a` z{9=WSsfcm)UG0cVB258R&gRMG>Wte6o|XgrPF%9nUn22l7k!sunFyHf2$!C&z&IP}=FX%NdEKSGVC;)tXxl_hXIfgRho z{0l^Wx7#I>KN7z%CBAfFo!Q$8pd%)%&4Vbr6Q2BBZBMvQfGDpyQ{v?h*Y2(TBqj@# z#am2Vq=hpiDtwk&J`-uJ-N)_r%+dH6b!kXbYWt;9MY`@MvIl;F($eoRt>w?h||@4dD&y5GzjyR&jAULjgZNEDOgI^Wf4hT0KbplK_rCdC1(i# z(vp!AhgqpOjpx*@{7IP{;zBqj(Mn(ZPWdztFzl&?lYM~L#;Pv?q=ly9pK;-cLEE@d z6y7WAYi;(@lmKmsxoofa%@}`sjT#V5c++Dfu!XB$nxc*TM>H@&LRP}+Cz+>i6ZYj2 z;k+VZL^{c|WNdrnVHa=iZ$AC}-Q5Q%*1RowXI1`53y=Kib4xgXIVIn@+^D`)f!R_2 zqoaeyU$oEQerGa_q;E4p!34-0frzkQxlyWU(O2EPe~0>?|ICB}b9k_)RGW&(_1Nz0 z*3)orc~Vgs@f@ule$qp_5cj=*V}^iQ?96B)E%1$LSR%Q_V8g+0QVAM*25LIaut#w| zY;s%;Y|BXnuoElFg$&+l!nM^f<4E`}7m|XV{A{tT!s*1xJe3{r$z+XEUu*Z^3QdRu zHGkQlxISiiqr$>y4O&YcJnT{^vru-nS6vCd+dY$iLUa0y5AW{aLN^;;Y^4uiOgMmBM6* zY#ZUc-U-y*+PA?)7pbakKf4}0?0M7%$w30U1dj~wi6`MaK_@nB93l%x@5>{Mv5Xrr=(+Cvw| zGnL8;lML26@!=rN%u0Lrij`?z-QO*Kz56ivz#=sT^vy@&lLRtf3YdN2%MV4NhHHM3 zlZuCA`PSBTe=cF`1aVpRj9aG6pDroCiQ48SDE$7i3K_%OuOhS zPMP#5!yvR&^jV7u0kk}MSxA_8#SxaJB5C%;xJ?IzyynBmYcA(9V!PxiCS6qB#pVwB zrqvSr)~htIOv8yMTqT`46ep-7Do;igu?QOtlp}eZDWbH83=1W^oB;RimXl8BV_^%i%peM5Sghfj={$g4CHyjmKn}892;@9f^ywe0 zq(rfw>R;(f&29k|$Ymye$NXwyCNX-ODauL)3Y*SnNbYTlhyDOLhVk2!6WT`NlKE!h zJK+A2yBL#DnC1)bySZ>fL!^I!GgzwSSg3YW^6@e*qJnF#?W_)=J1D;1x4%55f;-?> zRp0J*J186A2Y4LpqI}RcG(wgZxtcYzBrW-ir5kQ(|(*?pBrtZY~DO|-e3)g$SqeEJP zj8I_W!ofy4Ep2={zVZ(yP&6exFX9*#@+m|=^U4Tj0U!0CN~aT^7y>W`&rewwiaEcO zcxkwl}3ob}29R6@PC*G{L3Wc#GjdMA` zXv$58U1g50`(D`r4aNWJayLSuh$}dY3MY+bxkbnz+l}^DpM!fL^3`aJHnf{_jTMUK z7pT^9gd7G!5X$eg0g7-fyiO86Qkg|A%|F3^>)rM+^WcN+N1Olb@RZ*Ew28*h2D_{C ziHqT+w%}DFhsErnx?)}jin}h9BN!&*!1*mu_3>dmH$>mxTFx*7P=LvmsIHj%1R4yN zK3K6FJi7{?H$Wnc&D`1iEXQD^n-y4dTJnzr(}p|$IM6gj@clV-iL(_3ct?X)v?K%Ma}9Nol4l4k3hr*?09nZ zU{xC49uBq7z@p((Fy0iJt8@<#fw-RhN(9DWNuKY{fPRHpKyuK|Bzgexv*lL+LBGW| z)_@=iOL&`0`#Ay~HKOfepi_;igNA9l2bN2uNwNudw~taVGcBGC0veVtuD{w&{LLeb za&Zr24}R#Lhmr?t4^ldv&#H<_n8o-MY+h6($;`MPhpbQym&r;rvb?iu zU9Y;*c7YA>*|SIudIk+FnIA%uADK6431~4y#KCU&>i+)2o9{l|-|cqbS3lmp#;Xdn z#EeY7L`rVv>G0RL3#?4_^vIO&Aic#S*NO083(Hq@icgI7fF3mD5YMH)l-?iqM%kG6 zbxOOvKv7H^VW*vlG!aK?S*h z2|;>2K3*C6!H@eP)WrkPi%CYyFT#B`7 z1mYqJCOk=Mdzf_Tx)|}wXb>viM~eX!{NZf^lh!qov+b@Hw}p0oe<#hd24PzE9K^XV z{*>XT(%YCS$Mmb=Lg=0c@DU^`hr*w^B)xEmU+9h8c~kQL-sLk5@?TE8>@e8#jy%jI&TD^xc-0k?D1aL`}yH3o~uNs z)uB!dP@`Al{n1VQexNlj*$Dejq`KLtDdx7c_&n^(I+I5O)Hn)edTuK8s}mtTXGNFX z2axyL3^=7To|G>7;lm4)sd@9#A4A0Z%@1;9Dw?4+wHu?Y|G4*WHcQqHDH%y@f(Q8f z|L8#(F`vDJ6mfCz8OPwS6|0(t0OJ22y?^})e)JMbiGfMwngMv?Oh7n+3Q#4k#-cS$ zvzf?~R6;Jl)pvDv(ar1eJBm@G@dlN8u==RidJFB5sIA4UC4ac_W&iLyHyRC#948R- z2ua5fdi`euvA;s+wNlH0dbc<~S2Iz1G*+giAg;n0Y**#J@$eeQ+j^ zms>+PVXUYi>YNWMz0wg5f>`I!yPA6uhKRKBb59#z0_6(SxS>>bV_)?vX@ylgr8h-v4!5)EuZjoz> z^@7-3SOy1^Cs3j;TpG+Zdyn%DycwVcn+zCT^TV6Fx38J8=+m8y3K24n>_pb~hn~9h z{_gL39QxzlU;a|GXb?%=aJ@zN!hUT;1~=A`gb2(96XSytDI&z1Tu{nLN*-S=;2&&P zV*UXNVTooRZPrHfzm<5(wu%>{#(Ba07zWT2Hp#x%M6bs}TaLJJq_N*46&Bd2oAvd4 z14sF51`kAK@%aR`V6&!n>y(k+S}5<`KVtCKagN=BVS*1u93%#V&)BT|aFN^ZWEfa@ zq5uFPSjq>qJ2B9d&9q@!(6vsW4Elq zP+(VAItg@ro5P5Dj>C1h8zJk!X!5ec?cnXu2bDp=8{V()-~aN<-Rr=@?pb+Me@ic8 zh^`=rl7(^U$utVkLc`#bgQttlBb!2~<<7V3G9UV%dR(#~QWULo zI(uDdHlPKPA!IySZnmo_5<$~80&M^%)&3BxD!qJ_xU(24IQa_nhznj=w3!b;=c3W3 z0dyz@B0Q#26i_TM_7|}+u&mrP3^~u21Lu6Z;q%2HPvJFGPmL*DUotQbhIY*%h_F`N zCJ~y$>2vH?=q&31ypMOkA^?w{3&oa|lP_F3wC@okX8`8RE~0wdLS_p16|QRdX=Ea9 zLTL-En`GIP)5i1$;;PhhTt4HTVBrB{j(<7vTwtmQ`NtmF?4&1FDW>#6m?cjZbslzq z9LLL!>Y>1~p{LYP6y&b6kW%q^#>`SzU%)g1Oqw|lj4w~W>s43$4vvA|x=hil_yErl z#6(V^m&^&}OD94d4G5sEWb?{wz22@{aH697E;4qdjl-_S46oR=>^O{P12bBxr+!Nzn>4 zhPLBE`_|HFcEV$y)4%1|%}c_K$bD&wD}~!DhqEUOEgQ5=69H4InXKOOS?K#A+}BNe zjX>Gc>!d|6uzQ0Y2;Y$iMMQq`k_jez!QE*Pe+Brsb30gzEW{Xy(kc%1SXv77ffgMhI~#g@1U zaubBi(e`R1*-n;y5Hb&^ci(3@l{4)_H@MQi9kqi6%us_0^wR9hqpgV#=Nl+|16viL z$NvR!$iE*KhQ*`eRSRZ^I@$^*yQFYF3!gD)1fCxyorzO7D&W2Yn?+EI_cTGkU7;pc zXfzT_({z(1n9}K#J^0#258+WVVPv<73iqkVn_Y?n!^axd1kV%WWgA6?1TYE0xbVUc zvho|SbSp51EXToZ(k)8dCIyPp;1e$b9cY4zi4i0EplQYQRb479-s>tXNi*Ta2^pes zt+VJXz3Wga8$}J$)a4koK~W`j2OodToMU8|wPh`9s390oUb_9kITD`n zXQR{CJD|U*k55h=3abQ?FBvdTo}*>sX^3qnLvm75hI*1>9F2*FB$e#M{UWi6l-7}v zXrLA_O}JMiWhkpKIV;m=_!EnzeyE%6Fxgt5;leC?&`GM$v{_xneoVy1CEHYcZVG-l z2(WQ3+Qt=J3+Qtu{d9L$AqS~9R~0S^Shpc}c2OO~TGdIrsxSd~>0o(-S_+=fUiVLs zakk$-)5FAfn3T@ffUqizRTCi3U9_;o2(tNDaH&ztMx!q)Ka09)#6BXDfi9Yhn~Mbn zKxkCASEE($vppVVkLijgVm@k@=?CPR;6B3ZT( zw}t14`@=*FwNg8CJEWB+2@~orpw_d4jG(}4hxeK1%!o6dWnH{5V0xmCy^*WK=v`Vr z1EkKf6^(y-_3qu>TX(uM&K%C3sJ@XkC!}TA3VJxs*ld2G9f-A6lXfGv&)%3)yT?qr z(8hc+RRg(n5pW^oA%5!Aw3~Ij^d_N6)xfp-Av+p7U@S=1o|YWc2`?3ZNzVuFx8!z& z)*7KZ=%R@etni&m$k&CRHe9zQhqP2c)RQS4u7`uG{%^k}vV|~mIIofaN0cX= zE#ZL*Gg7~b1oiiKcJc=Y6*OgzEg;z}Xib<%SB{L|{ADQ%09pOK!gdEN#%$&)$&AK> zd&*yF@#<#7jYSTG@g=mhtqcfslIu*^@}%&nIIKM?@I^3Hb8{M2u9Muu`8xh zu1)QgO21c7XdQ(@fvImSeUmGe2H#)8G_!OApqPUvVJ@nxynoGbF*r1Jt{E-{R(2py zC{~YC=)3^4+f|>}ACQV31+Abr~M=%@B&S&G<1oLK^Ku9yt71GmF8-{vB zhzwdRG!{8&b)~0g88>BH=55&OZj+vm`?DCZAG!umpV)!mi9==yx1MP2f_t{08Le!v z0M1t%M9+-VC)7!X96#*K`gGgSd9|H&8Y3(zK!EhDhy5@v=NGAbbzrJ5xI<5l13;HZ zADxn!XOanLO@)vsQ+;HF40`I$nznZlL$DvgbN9A8X#bLNtTN7O_qJMX#WB(JQor5i zByOSbC_(x-xdlQ--oAiBy&25c0P2P?%VUS30(rxTywzZ*%TuYpEJ&J|jVB-824%*m zgKrN1e0;UCe+zBoc70KrOrW5~os5K{w-!>@+^TNxhSB89%?do&4B_~_d|+?$9-=2# zqP1}EKQ&w>%G+mU?ss>vBK<3!Q+CMJmX+Ekl~ViUJ56iajZ>7dsIcDP5k&skl!ecn zXdga;y&1!!n|1Ht8`-9Hsrd45dMa;XnS{_XeX%5ZL)J#eaF=@pN^X$`)a*$>*P{tN zzBt{6L`lsa+HRe2<0quO2h}OH_u~FcDJ(=ceKDRsM>05fF-)#$DQ9i&ppD~Ft4<9P zF#v}%kJ^mR3goO8eCK|~9nhjzgPXRaW{hz>2TU!pY@uWFDaniGUgPh3ZzyOz-N2chE!p_2!p(+8om2cf9<_wUH+zUPZB!+#V=f)zYlirI*X5zH4) z<&ufK+B$(IC=4u6ykVjLKT#u|_>_cFGfXh2d)l91k~(Ofs|2XD0cYDnXqQ50m&j46 z{UdP#&LkF7!`-Ban#1!?1uF;*Q8N{Xs0q~yqA1>%RxV)OrspW-9GS-i(`o^gl>%&7 zkP{n;2NO5iF~G5F*y%j9Ojt`fvzg%Ux6>a&na^_W{Yt_hmoBvj0UClv#Y7`wbn8ST z&9BQW3e_FB-7uI5aB#6jV;Q?LwT7BdYvs;ZOsB^OGLB%Ig z6S^FCNa92%!L~{@o<2h+qJH56?P@h}2EcLA% zm)Ot}Jfi`~Cf}t-Ucw9SpL)eJ)n)=tQusmy`X9|cX3z*F9Nvyy&Tmu|X(aIAbdjTT zexU+sT|qR!)E$sREDAlcRR$}>TEdJ97cf4=)u!5JYSt6{P*F$&%W<;?7Xg`3TCJk( z(Rzf8055OGm#f9i0x_1Wo#*;6Z*kd_bAqs^7KkhEsX!UJK=85bi-U_h>GM1#PbY&3% z&vXQs(_b&;)2}K$bkVGFU^{1Kv+cx?Vd^b*77t}Y8Z_8h(-DMU#CVNDS@j;MKzc%i zFCo-<)iOCYfVv?e8u+l3EQQN^IuKrw)N3)ga&g$L-l%Yo9^TY$7!m@@xuo-t1$VRw zR|mAl`4&SuDAS*sh#E5BX#CU#q?Imgms^q(A zcdI6nQHo+|bMHiZgpzldL|HOFiy5ihACPAIs_Zp>@Qjd&*6(;S(xjmIao^Ra~= zZcww*3wN(h2LADspqanua)d&IqMI6-P`Amnro0xt=%`ImyH$i&>*XZXmc3LA#v`qv zgpX?f7R{P(`|!g0ebSlzrtIKeSab|pAAvYy@p!OJpHx+=KymoS@y=dL_ys+fDu{)b z4mS1e1Y%8K1lJEx$47;R0X1r={op4AyZiNWn0)t&P;%yf4ybJ`M_U-}c-O96Dzqh- zPYYf#+?OG>1(SjUh?4m+i0Ybw{HvjVO*j2bY3{Pmv9e4nYW3tTXP zP!tNy5nCA#_yjzlSgezy-dAtmepR|j-9r|(8pM|~9&lO+Q1+LjX-wM94ZN{&t0H?%MJmln-H6qj4z#Ys!kYVzCE21W7 zmgL-^1cL#|pvrw6oBH`;J(JG^cQ`NfF+xme-~ocr?*aJ(>Ka57vQ`^RtUERtu4#d_ z#N-O)-myI2nfEPidVv)a$of)m3VI1t2e*_Ks`Wx6?TogA~LQ|B&rPy5Igh5Bu8*9_k+1E1h#I{+4Y>4vkIGvI79^lz0vv2 zbA&j-6=Z&+5i~G7L^(wE!e#cs)7=1zai$7RB2M}d2P8Rha{d!E{m|Glv4|b&2&e$4 zBR?x)Gq815BIZUY17?L0>8?fZ8>_Vf>`37M?|V?>$-oGYO_b9W8ztuFpdBBwc0 zFbJ(G^W^etaaJTe;uQEgd32v05~ew$uxW?n@goeW_b17V;qS^IADqeJQj=%f+H|4| zDCm`i^nv`O#1Ljqhd+W}Ftmnw?B+#5k?-HX`*@GGd?J+*?uGkRi{dk9+zWYJvP{}! zdNq0pah;+I{~!jXvcCxr!}_L=xCRkVA>oII;pbxfjzHRd5}uMUUrWI;9s`1+=;a>&hMK zd74NL{4H@;(LpyFg6L-i(S<(>aDH3iDN9-ecLcqo)vQGpqBYhUB)R^e8m1Re6~H5O zk#hhM|}~@C;T^MmMa6XE4Ze@3~U(H!v?l?2N_ThAkBP49pwZQ z#8%W?eCFf9VqH6Omw;FsC?4D=1&R-;ZS1ntouN5*b0r!P5BBzAJ)U17@D?VDmrG_) z&kf0BQ8z(b*uGI#I#+YI9%4~*`6(jHOfwRZb6p@A7ryjS^Zkzk=yyB{hjrhh1o~Z% z+WUd<4f$Q8f^@cTR0I(jPEyj3lcB|30Pi!y3kp%MI>I|EsP@tteo9du*iDM-%>>L2 zjfc<$k+psCxF^eE?WuTlMjwmgLuhTGkxA7M!##7-9?fHnIjF>J^@ukC#Yb`TeW6$faBWpwj^a+EB%RKAPOUef2loNTOEN z-|>66(OWQS-zd66Kl04$%eVuA>FgY$57_O%;89Jqdwurc671_yWR%){X9k9Wc!KqHiD^l zWkXB))SQ#=*tZ8hVYo+#XoAY*H^|AA=z~*mu3)wZxz99b1D?Jw+lgGQRbvI(r81DT z1;~y6B{UlsK(NsTwdhCB16SnkWe>A}y1A7Kcf?u^@YlDNSrNmH&1cG$GkbI0!iQUH zR}?VxR7Caw0v`(_@!WyU&-#Biyg@G*bUMQ{0Zp~h0PDy@FrW!bS`$_crWe5%Ry?Cfk?!0C##_lAgt_GJcKV0gdF-&!;z=Yyz{bE&yGM z>vzx!)^_J?J=pw?vDLtKbUeNScfTZmX;Wb6`t--x6`Bz@bqw5*T8Snjf_(L21{941 z0ZY^&40{$1Ob${g0$3`)zBv2^Tr2GII(&)tge=fr(tz5^r|65M-1YOOeNjO59wHD^ zR3c4t8ohHYmQzWiUk-aaWpga3IQgvv18i zph4CYLva#h&8{>^AQo84kLUrIe+t5Z14A&cp6>JCb{F>LhJ`P$+lV;Yi&?6(Z8UQh zV_PBIO8-hnSX}F6hOjL4K~907S&{ZLZ!U}M`W)unm*^{1;Ld0_(BXhc5#IBSYYh*Y zo&mCe`dee~l>=;;k?gJ7q$KL3b9QY{W7TF`GSMl21(A+y92(IQh z(x-QAD?wUXptc=GN|Z(>tV40=DAz2}TpYSAca?@t^tSRZrP&eaQ>lT2IM;g}Cf2U8 zBD{}$X%6|iT<^A5bR&l3+|tuEIjhaQ$0JBFSX0x%k{Sc!&aM#zk$&!< z)JWjkR3!}z*V1Q04iZhnrI2g^)t!tXXX!V$6 zv*d}A^hevte1YBM$ra{-##$E1@vr4-vrf<&hObhJOivpP&DKiMOv`kiV{*uP=I=wg<$vh`%Yc6(qw21k1oRDk~j9dv83e z-{lN!-9^4}CR##?gw**|CW&8024}dS+*!OD$pu0o}KDvp4* zpI#jT$f?o1bg5%$0-{PXA+?-%^-x$~(<)N{6f`NOdwYYj;TJdX$)Y_G3L++?I(UV$ zD~b%1QLgv#{==v5?|Z1fmHYJm`1rt}zrKI-npe8%@i%|@)hv(_9pp=zLI361j-zImmP*8*xbKzc#V<*1br=t1NVN#2o46o|gLHtrvLq!)jJ4<&C;hU4BJ zdq)&jAw;MMS2vr`f)z>{7$@Mz6YPO)dSa1Nz66*DF-`N$R4jbmq<4anD{A84;Pv}Y zC_MDI|L4;urzcN_{o&Es$za$&K1F%H!!sm9aq2HawKV3SL0Yi`{qO{Fv~f$zZPu8i zyiK>M#tQE=g>vV;R0Ve2Y0VGZr<#EsH+uVL?!@{ydy)ssI|o=FlBo6V@_OD!gHv9@ zM5(#}jHffHdanr51@^njls#?FO5WJf1NR0u4=oz}N6itbv}UqYTh3k($stny0*}<> z-LB~J{H{C<(_io2-LKz&`tUt{zAV;Gx*VSlv|$A1X9MXSlLH+d=xdwn-P`9;NOJOb zIjwL>1EkYv%6M#lruIW&;LYNA;J$9g=>s!j79_lVnSUp{n&%EGpY)+P(8;2%PwzK7 zmU(Qr>B@u?yhU?#Gp11uj*f`UfN}wPlmAarUKKtXSQ4F3S4ua1Gy<#{mJ)yW!>f-? zO}>SV&88z}(F2uroUS<1Y8P@J7!k+b`{E?_#`_`YALlL@L2k)Sa>Yon)EG&Fbt{MJ9W;feI>2*_3bzyyxuL$DfZ6<3MG|~9Q`O|6p5Vm;=J0itz=7`AXfGu9r+ufxg!SA-Otir7>hknpg8 zD&z{l`chMv@e>2djX2@`q3NPi%sALJ0kP4HEJhQOof6eJtF!lO&O^PXr1jx)J zlOkNg8dN)8Xd7Jm#cpwag>P}GhuOP7TXxd!u=vs<(s6|%K4QC|rTK{bCqdK6tM=O=Eb$jHUa80f1 zFX5r!kb(4A(W&WG(Ew^=Y9*l-yTXI9C{S^7X^RHUX`W<6Li^!xwO9qxBkceqnkl?6 z>l<2N-Q-*q(Mu#Z(^+L67sLAsl;-HrN4b6MB!m|&cfH2q;T6dHkuNu^eh%1=1Enf5 z_1OIJmf-@^r7jv@ol4H)SOAb>5eg+5FCZwwzC7CG+@1r^iww1ZP7D5rb*(XhG_o~1 z=#6$jozh`PK85HCzULWqi>s%U8K@ScR(iL`Q(rJW3Z!{8L4JO42v>)_@@iM6$;Ai% zA22GsyJl1}ilJ2Edzr}Pj}VvP93ChJ(nH#I=!q3QKkuQWs7ZPxmZsY!TJ6^D+M9Bq zz)`1cS-^8n$nA}yMu=p!7kpc%oRI}wbE%0}j)Ti^${7Tr!FzbT|9&=@(P?d4nMRzh>5C=Ez zG$HO(WsoFZ7g@1}CSjK?8bHJXOe4>&@@5gSNxE%hJgM@t?dueKtBA>jlANqAFyid5 z*b~OOVB*_Ep$U>cS&s09kFPs;&?b3JCPz%-PW48^69is7EcxcQAFsND3~9^n;6nPn zu13w5>E=LG5Hf*WU#l&C)`+*Oho;1+1x`J6JxFh4*Wv|NFaF)HWM7O6WW}MeBQ9xg ziQmRS`jr%c>e^ITeBSMsl^BQV8{~aV2W0a#0IqYme*yO|3rW%sYW9H@hu^=;vJBFh zGCD0gv`0hIOFX)HJ_qK%yI+2I^Zvt|`@i*eyJnMHT7dJd=E(4bzEH=ZPvRb@XT!ej zSFx}AI_YyVy+0{yV95`2EIOylqq*0c-w(Oy)&7>D+8zM^1@}8xQ z%X4xuc)44<@0Q0?rxk;JgrWapB-3}!z zj_ubtp#1-FPx>zsaVS2f7mrzZ06!pKu!$|K+a}W=}sO;06U(6)^ z6d#6O&CI#LonP-Moqmc4h{ZA!M!#X-mc&rhae=nAo`_Tjt0;Jfm@Rv8#t%zA1uc9y-BgzdB3X6B11i*XA)oxE@YY_6!CV zGdC_67DJ`t6^I!7S&)XSEA3;k%nW~knVt~{JFC`kn+NO>V>7KDMeQ1b}WTK z%*5pV_9-g5z+GJ101QL+#xRnEa|h3vIg|g6WiU%u8X*N%2|&w53VaHwsRU_L@eprD z%u+&=V&7f0IIXrJI76K}jZCM&08_4PsKwO8TTSMaK&NyVs7ZqGK!gig2KfoT2?i6% z4CZ!Qi3Gho3~Zf_4kj~XBb%0h#15(YCc6Rz*La`!`7w{E!t2e`W3 zZC8sz`-QDD$i#NA8)II38R_!U=Dp0 z(QrR#Tx%-0YbY3rVZjmloGK@}6nHLheS50Po#zh7iAM^TWRVGNOK>FG<5VDAnjetW z9ocB4{PHT3kM>XP4vmdx(f%b#Do5e_zZiuZhj^#&e?}gS$0%GnGxB;WY{W^jlY)Wp z2M1Mf!+~JHHKgZH63w$FeZO=WI~E;=aoNn9 zOt55s!j1!`;~4}7BN-l=nUq}uX+%|(jw#AbS*`%i=<(Lh8EcYxiUUVUsZ`mTgSWJt z6XfGTsY)aRf`th`vsiS(0#6|S3<0&@2{|H?47;<&XM@eEnMtstgWlViX~=|HxtOS3m$H##LWK-aJ+5oE&$C_P6M$s)kRY%S4I^`*r%zBa%z{#2 zzn6*r3Y8)rt0eG#RH|xTwz+vPfAPSAfI;e#g0#c6C_q}bWHGYJyiu1oH>;Paq@bHK zGq2&?GG8m+-fx1d5Ks$rFXBP-rj$OZkBY>mp5cyk0g@AqC+C29sLAX>$Ooc`c{CX9 z!})r^3XF$zbjU-f9XWjKX_+CvE}*?+O33jg@^O?)ZPDXdvi~xDs3wf#ijy*+;B=7CEhq)X*k^LN``U0ZaT?UAPs~P z10Fbg_3@smikB$RWb*cbD=HhnufPBKwRt`9f9R;~6hHna@j>VeH^u3@S8&WJAGzmY zkN-z;*W}H|FTE}JV&~sWcerD)1k#KA4jl&~eWl|d)=fbwVCOlT+=NMK*@XL2Vpcnx zTY44K+|l8Y${=^>gOl~pm8G3s{M}&xQo)ZlLhXPCJHh(Tu!(8!S^;RNbnwAA(=a8i z!O);mCH^5r^}Pt^68FuInQ_!({96I`!EtkOQq6CulENy^jT~x+Jzuw(mW@xzY#PqE ztZ0s6Q(|Az4c|}ZAzm|@PS1vU9cR+80Lr$toaGhI1f}|$!Dv_ zY_kdxWNg%Pkh6sRja9$H>G7oZxgHq&)rN|OPIE>RL{t~ydoWMPsZqhU&DcJ%AFh9; zzdX=O6HQ1GNibhb2wP&Eoj-j+h5quJv+X79tU%8mTY9 zx#3gl8ZD7%)u|L`~Wx+(ygi(<8};r^?A*Kno)fj?2C8gpji8DfRKW<6OGR5zOz)*rjfwjW4eCOP$JG>;2Jdhk@F zgnaF!atWldX`9M9oxFmsh*2y*+w4>Fr~@TO&F(;*cBSc;Okja4w4GY`&7rVV0jeR! z*cYa4pka*0jXaIWPqPeIfxd+2;82zFi;rIT45akpm;#fAs3FmVrD^1$lb_MW)u2>Q z41zxNcUSR+_^HoZOxCybJ4jijq9HFtu^UR^2dhvrz>!KEYj*!wE5y?To)&p$!7DKrU7Xo{+EsM~# zy`8i-Y9!?dCdA4ls*zIfP3U4uGNhr4n&@UYFB&x1B#UoQ7ljMfM|=n;kXi=B<*lno zx(c9?X0`)lGVulv(7e6zk7&lVo zt&B@}01^$`VKBJ|GiAypL%9X()__Qm91(xvFBeDd2St)Y)Z-w_C_8c-2ABmAOc2au zHh?z*4U7;S)}$&f^?jT}+hSA-z!-{a?Y&FLKxz`nT;nkL_r_bDQ6u3hp=nNe{w7FK z=!5j`ob7<9Yk|cwg0oCe1t=jn3va|00Yc|SA*Vz?CjOT4IT(3zq56;xGYa%fVOpVs zk8Jw*Tn51_Klp0CK)k@q1L%$QgVIU<{SQEseT0MIPII$_J^dP~!{*`T+_>i5ttN;$ zx*4e1V0xbRB6B|Ehs9GRA>|9)kIoT&*KCiF!)AL#^EKOct@^Y4X4pqI z5}_^Z_YD$b949=lEA1$Aik2J-N3z}Ka(jKQJ#Ixo7vte|W#-h5fY?0P38YQoA_Vg# z4eJyu6{PH|!0|I<79!WWcXp6^8!FR0-`y8kVxGTx`{_>X4~=9+k{EauZl^)PM3_A> zJaLR+yS*1QNe|LJm)%8tEUNCEW;ABjh7_mZiKl1#G0oORXBOIp`?Y_Y{RE zny#fSuz#e?7-xI|l%3%;;3s^E zFIT;eHcbHV4|zETcfwjcX9|0&%6fG>?Z;}*v~dm*gRF{Pn;b6DSeC^>8EEWLILMOR zDNE{Zd5K(M^CiWTMk^X!F6M5b&md+TN}v1H-M@(CtDDewd--ga914Y9B8WjzF znKU_pce)GTgiNO32v27Pt^ifbTF|b<-vQGSc;{nS@l3l++r1M}dyYWX7v~ZB!`qHZ zt=_C|X3?MvhqKbj%E7kP_QsfU7f}&}S(C*q&cbEd%>h+g$-!fRJx-J+BDnP}Vb4Zb zIx&YOm`v@p=~>wk<`9RcVkmg-@E22USTQNR^f9Ih>lvu27GsYbc#Qgx@KgZHUNa=A zPEUessth}FrJy$+p23Y~_{0v489O*2?Mj?wFly#6i8~q8EHwg+MDRF3cvbpEuooq| zLN(K!{%M-M-1_yy)s+!3DF`fSR=pY`aRpSvCe2ukrHn>V=a<*WlLha<qmWnpvJ3hSN@v{gcnM`4-nv8BX z3?w05;!3nWv<9Fjjk2H;-N7qupl}H9 ze(O7XrYSI+gK^P0uD$~4Nu+HcGgH(iIN#2oDpE?MN>u_op=1JZ@{qYuy#qA>n+@6+ z#uA{`50#jlT;Q?$$B}=3&XsUGeKy&yWF+Ad$HaIMsKcF?YH*|u^3{ab-sa#} zGN3Hy4sN0M>-)E_?%%w<>m7Xc-9P_w-}~zC3~c)bI%VdB0M>!kKZ}gSLLP&3)Z%~| zKz}o}>C!kNdCu^XLZkT#?c!~jH5T&dIWjNT=#|Kz z0BS6xUlj1ypuY^CMlGeA3p%KouR)}4OIMJ8yuURaraUNnyP%?xf}e|LHlGsm)B{~Y zw0fXRNLdebIsW`uP9T$+{C=|P4hWzS5v&s`D`CwsmC*8`*=~fZFnOjN&6yi~+lM&? zTQ=!+4BOR447!&TCXB+{1ojJ$kH*%$L{5|J@?0FB288TdVObcG9g!Q-9?OEu+1yY! zqg&*6YWh`nbkMdko+#Yl;A{M>!Wtc5-S+XP_aBg#z5j@&ade`J@?0CPYyjS8W(Kku ziY4AzmU*R`|Mc$Tn;)6)lR4*A9gNy!U`IH)S~bRlZ-%GAd2uTfH6f5CksFw^zSsd) z)h*orHCMVo5*bt{y#M)^4|hMple3N|#foH~+2%bDIln?(0rHP|f$j?{VYS2Zb+NIC z2fu}AjJUbox2F2dm)N3=&mhZ=3W2_L>E-U?4vIEUQqks+fvQHm$#E@W<)4Axh$1uu za|dZ%MFE$Pe86P)$_qVk5#pU~{-_E>h?)@KKGkq;As=;gF{gM1@$I z{tM1Ru!R(Cwwn1F9cBwC9%`QE+zy^#3jPPYGCS1O6?`CubSzOp#C`lm8`vcVK*VW! zpynAFG!Iw>($~lOA^3LU8P_5oC$}=jjICVhhzoqMr$@pIa1lxlUR;ADoC#|P>Vu#$ zO^Fgmh*BcAAwO)&5P8U6Qjv9A3^7u8xXCw2{B!#yMG6=WK36X>@GjP-)O-}p8ee80 zXygKs%jdgBu%ze(f)#Fh7o^|n~$Ek>m{KLeMpbI+e zzjN5Urye(-Rv-gu1RN8D_8cabICRecaw>sk2+&kgXx|@r8z6P{TcME;vkjH={4zRM zUg4>u@4tupu)WdW*8u5395jzBwi35^X^CurQg_dYF|_=(p;U4-WeQFE9G+^71Wffg z&y8JQUq4A?*<6ro=|yZEePjJN#^$E84p+3PEKh!4}!6b$V9T` za4Uwb@Ndct9C%fF+5&;_R7k-fN==`Amk)Sgi_K!*trrcg_Js719NNW(3{xZqizC{A zY2+MlxG2Q`o-D1Adei)ic^0U!->jdry1B?gajg^V8ZmRCZP7dXvVy1vqvM&1nFw9% zSE(v+-?wHLeFB(I7~~KXbpv#dQoqnfrK_y(yjpL)Fgb4OL3Nx#RY~$5;?t8Tyjd@v zI|@?9fB!P`tM&yhI3yZrDwrrGW^1zDysU&6QoCr^M+k+u+i9~rXbsEV3vZD~?ou^r zG4PhF<$40D1!<^oIR0I^-{J`g%|`k+CKhz}HpJ`D_*`Th>;P1j$fE|ykqQ?BrCk#2 zA{~6SJ+o^>ni)TmEwFCNr;)VQHXt1hzbuu8^{15QJJngK^lAC=-5vZ4;zMvg?9AzR zqHd9NCL|~eQWN_o5gYaayptv9;X7CsxR-GG>f^_|5BEEisz`0oMYhpRsS(fik*psqTARopR;7+4J$x`H6mRii$k&;uZ!iivNqN!08< z45^laD2WHqNFz113K7fEyiywosKt}y1cTsuy09@|1M5QXM!G?r_D)~OCP?4KdW@k2 zEpVxY$3HCuo))6w=4y9H4?TamK}b8v1yr%s$>Jw?P@TR8Bk;&a80Zkdwk5L1+JfzZ zca+na5SLQBW<&9mGj5-Iq~u)RzyBrrI|tm+!KTrbHLyXAQ|=B=yB!NCn0gzt*N0du z#~lh~1<{)>4Wh2WaaM^-;|W1W^iFD+t`M>$yUFP7kMGxaZ|^Mm#rks8hfM|cl+o1% z%j9|0JGR?4Dndqk+E+ybzgg;;^(|8~W5?-#oHz2-WQ=(SN`1myicsL#jEU)~pqeFp z2HA`G49fX*wdx-ww*j}L$Rfh(d1Co!9Y(dwfAHU0t5zT4gXc7F#wB(k3DdI$fO^FBc_Jzal|4(tuh zpzZ>yH{-*>SD!w!>@b)y^p_xuTbCQtAG6P6_Gw}WJ=_(=D5;pzV3Zx5I*a1 zPftOozwiBr(Sn3>Kg%*Wwyx8~Zj~>VAVb`B)>vRaixVHAsuQ$&Uf3zNUf;H!?Mqne zC(Z$r0ZwYn^=(tvRe`iMxN~`byQGA*s*|>_8(;lQP~;9&)Q9yLu`Fq9M&p`LJ&C#^ zv8})~mM>kI1mU9GXqLDk0aPlhhf|)IwwkU7%65DB8|~rPUo&K2>DJmeAkK`)%VO=^ zh+POXP`4Qg)exWnH}vYrb%6D;Jc=Rg58D1)8I*eCG`j*Laea-zC{u4Z-)Cr_bIJ+S zDmhATB%|L=ConlBwL6)phwif8JT-fJdggk6FwR6bpCm<}VNu16+7r#U%h)fsZ%fS} zTbO{z(y&6r6wjqYpgy-0%JT`6u;REr-_0j9$+{s{oKj~WO>gKg<%v_OyDEUX8l69q z`da1>wDu0DW94aaM^x}6rRY^d^cc>t;9f~B5wuDl@5k%Vn)VgFdaTc5$ zme&0Wt|x9FXRlx0K>ZKbdKI6!oL^k_%H|PWQ+?-F$ffT^zvN5DGGk?()|$!T=(;=j zl(7SOR(RC?7aF9HR^WFVr0kxD3{vCsg$*;5+ic}TRZTL8LcePX8J@@v+Cl2R9|GOHtrYstxBB(xCPdFN9=Xwp#i@u4hK8JtP3sir2#?T6lm42v2)(=R9=JLp!H9(u^kBgQ-%W5zaC6P%bqf#HCOU@!Q8E zq$PaF=+)i9Co{50j~8(09Ghf_eGJJRio2X1)~`iyP3}be_h$@k9X(7LLLS37jg^(` zA(?QQM(U8dgD@0!DGwYW2mD7`X#0UfLl8nHkUF8~9u5@<0`z!`vL)o&AfcVZB#k_Q zFfX`IiE6j>_JdG7)5sf9YozJPu9p~~2RQ|Q4@Vmu(SC)bQMUCZq1~-A#rA6_Ql9xC*aff6}oSN&^y;%AH#8Gy@Qfl z@t~`*(fcrWBG@o;0^1akL}*xrAM%rG|F@y~meK752#>W9rLE1EX~W|CUEz~mB`7yy zcwAR=?m?)@TqBJ@1QeL1oAKDTQ@+5K!d+p2XtsyZq1hgWhGu&h7nQ#nM%-kHHK@YR$pW$O zrPJpv_`zYA?>U&=S(DEzK^jRBkfy8;-~w(?Uv0y>02~+6x!9>8msIL9@#l$x`4MjXbYGgoOb!E zbLhX5BH%nVfgmoS_m2j7Q_k*9(_S9 zNd^HgTk`h)cGS>$D(F;%1WN5`~kf1msrn z07q(5HDbl44rn+KtZ-33N@khcbH*qt^NHhu7>tw&s#Ot=U)lg^P5CjXi?l;~%36O9 z01bpQ2^F`@pl_yya_wbl!LyKBaQU+FCPVuS%s&fHILHkC$JfxWgmj#$1#n7Bzf3N+ z5(a=<8rh=j*_OT!n+AqWL}6uvuuv$SFvt+t!0zyk@V7wxF1BcXwUzAe_Ql~BBNS#H z3`fVu!_%X|>FF_=Xr0cpg~d}r3=w5BaaL|YQii~FQMwR5RY)XuqVkhh!jteJH)}OL zku>*2Q4$jRv(u!bmnsntaU-Zc8pMKL`Rz7Paxk?MNomymN#Arh^o_)uq?!*ARpFb< z^jBo!Gt7d*GFJkVo2}7Oh^`hH5K+w!>3265V(k%%Z046VMy3H22~%=ohfg(uglR6$ zaU~{@l=$x{+YpTVbdbSnx^8(NIos`m9PmFd`8 zgLanb;NH`WJJh};QJolt8ugR6?_d38`sSB6^!GT53WUTCDP2kDGKGOG>m|{%CnX_Y z3jL_XC;wWKS{RxQ!Yd+)3=h~GOlMc-Ar&0vedN310(i}Ns8@5geX3l|S*cbd>gHz^ z_<;a|z^%&R6XNaV1@?TDiD-)DGm#ybDA{Zh;1Xr?c0QU=DqvXndXNNY78c@Kr-MD3 zSH~JAI3DU2DbC)DeWW-mEy=7#cVfaR<}x5h53-INKqzujmWJb$>`)ExMDJ;*iNG6|b!f_>A z-%)^iYa)~MhWA%Z<7pGBM~w4>AuT7D>*WpW;Zqyue+(6K+eNArjxu#3wB=eTCJLG& ze?$P~F(qDhwBI|}Kt+1QyO5a2NnTn7fOSn>YBW`)g zvHmf)hi@4UytNxF=E(*0%oO zmQb!pICT}Ra9>|0j_Ky;R7ufGWx^b71zYgrDrYrPITITo zU(DjYBs#TymqxbXl7(@^X`$6fx&xhKeZa}LlP%(O>*dNtXB?^@bIX#HHZ3B&9*S4x zN~V3{+2^h_UZ~Y>jnQkNI>#E6gYVpu4n@7Yf?+(DMKgyH z$!ml1ufp-LH1r|68fvv^jSIjY-IT2oBNxcGK*ZK1#YQb-lO`iRKNWzY9v3lH6;A#O zxDe54h@Rea6eB-$A~}>#MiFDt`f3z305!#Y9@WyV99jUu8S}|WLS{3PQz%q`^(!R+ zmRBY;3c>0nva$@*JJPPCIK%iMO_&}q>u5**zkPNe(hiFW8?}b&!_ChW4{Kgy}|*u-#DKtH$*ikbs?@5CG+uS z7eI_1S{hcj->ZT>qn#c$0=Z%AHQX$m0WUJ>-BKW)@_bo|bZE;~yhGuN$DRbz2A3_c zR`i2>Vtw!YxYJzh*6hN%8JSd3?lz*Q!yb)CqT~!~a=Pu2R!%t4VZtKzS@*^X=g91Q z)FZzd-y)I07L&`Mr(*br!Negw*8(EpcwerCU|IyHDd1>(Jk*v&RzYQ+Nv(1;Cy_$` zl2l37V^m7Il#EqQltdCk#gKg=YbjqhETkv!Vuw;8SYJt^<|V9KREd+Ap3J#4ZVOet zm)za>#SDiT5C-#e?~xS70DcgM;03P)hEnJ-aeB1=xtRwR{VvN*tSqBmQhkRu^^! z<2tXdP#RQ>i}wB2UHz!q#h}7U9pOJid6x~`Q4sIwe3S#Laqn4D)R8XrITUssa5S1# zC>yVNOdfyy^wW115kegSCk(bpRNlsnag>0X^E;Gv&eoM43Q58Z2CoC?`GKbgV2CT0 zFg3uC-XDQ|K)K5n8gi>}KflcwAp)%w&F@E7Y_M5xA0Zfhvnn?7*a^sv6W9_fV{zxJ ztQ1WE!3$$W{ROGedvZBQ%2-5h>~42i`@s>{G#dL>ux6k!!x(Lp0#Op>>t;11lmVh8 zf++aytsR||^l1Vj?h3U$CKuu!{({*K(U##-|N(ki405m?=LRHMq(qt_b)XAK71J5|XlNU`zoc#QJ(wT$ztLVtOxX_$y%HHxb`XAN zrpmc7gyuso_4(GScIxlke^vW&WbEDDy@-}H%4(JZZW1)VMBIH1+!t+o7{Ho^=oU|p zTOL6FV$wth*w&B7Sm8{Ur{AT;PA1L@R+byQ0Q=BsjVXcUHr%KYD>VBzcs3yS5r=~S z4OD_JkQOy1uNGLSO>cCoI8>;g+@|ez$w(A?OYi|SzQVL4(ioV@o^CsGJ& zV~}2f!$4t^d>1EM40hM6>INp0jci81F4F0y~S`0)PI&u`xS zKyCs%EG%BAQkDZJGigmA&Bmo6naH~1s2!xyF*Xtz`0eP)v=x0nQ@{OyuL+lgWpumx zmR>!}Nx(43oFnAHcst5F1Sx@EozQLYoy!tLdEx`&5>D54FH3gEk>&LY#RGw_Kq4+g z6*Jc7PxJ*Pktjg_oJ3V2-c)>~QUmrysSOpSCh7z43e6+aZ$tUrbVGPx)An6#blQ;% zxgnFf&xuM5*Clz`ZYx4mL-a{zI)*BgeCGHQE^|&2mQ-nx_|~(|gWDLO_bF2h4kaAO zw4hFcB1A*YY!m7mK$;Y@7{mTHL16b$c-kzkr?5|Ls$yR$>`5pzxRrAl zbluDr*651uNOWysZP1iRcs94^62OW<3vBRRQ@RAa6a{`N6u*?>|03 z+v`zo=Oqc}a&2eN8!M8*J%BH zrMSo~>P2m>EqxP!eZ-6q$y73G!mc+#4fn=yaEfjn!x4lo1sNnJpO*FI>(_7I53b*% zr{?<)ll!-CzeALSnRFD>-3d>}L)na!8?&N7CXO2rIVWfj$>cccH%Z#GIf$2IpiXyA zem|{vZxbf;Cl{9nuU59!$QE3reN!al#d`N*h7jM`)pCrUc!cc07P0&@&{7$Beo=YRnw3HsUdKQG>We7t}6>H)4^ z_(1+mb%#>Z14f{*j})E&*T^qnk}iY){{!I%_?J?AqQaQJ`ClrhT}6v!=na+Ck};Ty zvW%BdT+JayGb}n7jD~3MG8$QT7h#KpLQw#@9@bmWD0D|e>U~KK2K(%ImiE|UgvMJm z^wXYblf){4Rl=*^ z(QC;`pja$cmsCUW3t@pMHoMxty4tW(i_;jc-q;vAmY|_Pgu~wk+R=31mPOOc2`Gx1 zJ@oFgW)V;@|DITKeNS`OS~A~jhPKYe1U&nzufq#?j_Drkw)nsG#nP-N0YZ~X0zOm7 zSc>XFR{{t(R)Y&R$6mb91jH5^MvA=QG0e0zMqBUVgEHo5^C0=DL+~A>(OQKp@z|o| zOWRA+-z9)b{$xH%mOsf21hTgksSQekmS65(${>*12E!n>sTPkhQ^=R_lB$P6(62D> zVW{zfxWWPB3iVdCU^bc{_Qw~%n=oD8-ME6Aa5<25Zza6?^!DxT&-`De@>pAAVYaBO zj1q?-w&2j$kmw200PIaWhVS;+1m3MUp;Z*X01FDlqbK-(dln))yuEH9<2_4$hW7F@ zS+Q^vghBcv+CxCItQET&rj-}gs&LJG+dnh3O?7O}61@?%x&Qg`(}#ydX&SdA888BX z)m8^Nz|a){oIHgGI8ZTKGe)E@qQ(N*VbYVQCX667ERi?xKz=fEZmr^BJ5%9pmD!?7TRz*s;AH z55Zcnm{X{@K;EeqR0~j|DblMz7vR>1%y4tdjG@^?>Ax&evF0+~jIU?CKf#&t{1ny0Ku9?| zRxLn5iFl>i6)_2uF>ikKbVe!3ytpwdz2(;xU#(i7^H^GyIO>WeRV{~D)BoMYz`CqV z4gQ58S~Euf(5pM4Va5OD?;Od z`D~1}31fVKo+!))d8o3iS%kRj6gd+Vx&xrtP6D(NqA^toDBVfvOVT^l;z&|(gjqn= zhP`PwDd3O{ql|&AT^IZz7`}m0r=J|2bK+1)(5aDvQeY3?UJnOX{a=689ML$574wol z+O&NigZ*`FDDL}5I^)AvuRwX})7Q!X*Af-55%|XINe&yv-w38U->vXH6he4D=)Q)C zj(;VH)VGA+#Q0(kgujQj538X9Hx^{gq;!>oz{yuIpSFIKha{+&)%llp3>+)Qg zU$^`Oh~F_)E||Pnt_z{eggoCEl@f0)Ea{KiJWrDLvB?{JTjIf^PT#3Gx5CeoQUtNZq6F3Sa%4>}y|0^O7~d{^ z1uQ)HHyxs65bhY^rwEnrVPuzP)OOJuQL#83?%SAu8ZJcXUblU1)LL#fJ@}Qy600PK z`?u=e0tj8sc(u&`o4Yhu7o{Uaa}>5)uKLDJu2@UvDe&VdZeEWUH(-WT^x-SVp4BRT zq8*@TV-r{7s@c~iP1N9Z-$*2_Kp5^-ld;W37fMxD{aq#HoZnYFS(VrEM^V|sQq^GnISscd4$xh)`j z70feOVX%0sY zIjM1u2zh$&lNoVw7P}{N;;NBwGJqGnOjUfpY6b$AWH`y zwo7G#Ry#;r!G$FoG@?OV9r4fRk=Qdzudow4$mOGCJ5)$Wswai>6o+OOCPN;Vf*FM%8`X*qG?wAtI$E5%=LE#zXBj z9->g@ISgWm0WE54{@JV z!Z~a2h5N_B`o>#??JTBf$v~n^b{}_8WbPl`LwhLhBDa{HBg`_$bTN+IgvAh(D%law z!~jE&R2bj?17Zpb6Xibai+)PxqQkOU$inaD#eCZ)TYPxxFiDWsR#!ghvD z%aK`*8D(BWlCIIqc zN_6FL)5Ut74iC#ptTn9WLLzsJ%HZ`;yeSLwzRQE9Y3E@!2Yh!qf*Y0vMN)2`D z6?(Nvm@X0Mxh|CphApt+H$*&lW?yF2B8lr2EE8QS^C)xil#G)`=ow-K9a=^}kyvWj z#@p#uKtN6t4!5FT77UaPBxrZVCc@T@=9p)6SKBFXckP2q#=v`;?W!!@tS{rdrY=9N$Hk#l`>z~M;s{qJYyJN~^g5|_j$RiD$J?-M z`#WA5;qQLtso3=n>pT`T_@$IU!6-14Bf#n|@j24X5MG2ZXgL2_nVvN>VU*@4OM-ez zG=RjFz*@WX?(K%HGG5)kec+j7yG41{JHUDjVk$%_9*1*=jl?URX*K*<%$I0MxUj>CU>j(^x2^BhNwIgbA2IsRd9%yT?y%<<@7p5q_(#ym&p zp4FK-#vFN2{Rp9raS}nO(ydT2HAb^GVIm~P17OE~fft4IjewBV3eH%*eKA9N7H;su z&p#bj|Cf%POb?#_x%mVdBK#Xh#HaobABi`$06&Tkl$4|Xh2X7yi{_xwtd$b zq_4?Aafe<=hCy+M&luAgD~U4H^KQAGda28OV30z{5>`}gkLuA0FJ0)^LLj6@JDbR< z(Fv@%2btSTKsOpFQ&5*wR<>D^=1FJ#k%N4bsUn>Q7T*iJzX4)O5%fxY8TN{@R7xH4 zzhNrkU+%=bS>BY=MV%vXvsiHUjYt)w^DoxFg2!;;oi%ZxCNRg)xCoR%hd{HpSGQy= zZaW`>Igc7ZV}KS5@{#NwSDW+s0xCsf$F3T+z;^M=CYhJ|W@ChJ4)s`7 zFx;_z-20zc`oTBIZ$oE5nT_$9zT@b5_G;&6t15dX}&3OEdyI<~U~S ze!=bd^zQNDL$w`{i}dtttx$_8M7!zvxb`Cx(Gx(QsV~p|Jnwp*uV?FHuY^l0#Abxm zA0z~F#4F)o4%Tb=i3@0zJJg)cp&tH34fDlb-&}|e>>+4f;LKG-Q_eb>ii7kcpdKX4 zkj=+CSjb@ZXOd$MH_9*#W&pne`x&>t*-mh(b#T&gYlHPzy_~akR!aT3Hr%GhL!YcJ z)Cez$F}2wx-{wS8m>bIr;SDK$hDTO(2qzl67Ma1wz%()x@8p#mkRPKYR^q{atzXDk zdO{1OFpGZ`EUoY7XOuOP)RV~Q`N9fl3k_F=9th6De7ZvTOxY-3fa{8dfwrK&U9wR6g;1cWjR{c6z7V#5}B5F=Xs*5Sx|~bu+*08HNOgp$I}9Mg7GEv5=XtoY_NJ zJ|q@fw^Nub2#7I`c+djc7RVnBW{e1~m1u=|sQr#M0qkKi86r2=#S5o*w>eyJT0_YXD429S(H>ep?!p4MBYf-3s6(#{LoI5MyyJ7=#`0g4=|yJ?pqu}{_n8bD1NQoPf-1w z8NJ=$f5EVD*CpaDEw>QZyhW#m&E_mREtQ2)Y-Mx3*v`@DV1}6E?Rt52h1sOzvrhGf z4;c@F2r8UhhU|h4UvwB6Gsv)@$?*1;R*GEF2I&Qwzc2Q{&ttyS7rLnt7=;fuhO0x}!Og))rD;{&E5e#l;BtzH!1- zim8*;EqXXY4cj6#0(Y6VTF_1owl=~<#M>LLY0o<9ah1t-J+%_4Z@>#G@Id+*i!j(y z_rhIeUE1v|!$>0Ui;F<^G^dnpsufo;Q3DpkkFXc^$SDdfPpnY zteo6?JIU3d)0KA37nXr|$;d=mmjz9-od`-{xI!0BWZ*o2ooC&TjW!g^m-=iFQnn1| zy;W8-oVsoYH6Myfrn#CFSIx2-&{O#jyzh|1V6&j6ut1VpQ18Y!<2x#NA)hDR(x*ED z^x=4P9IfM816;T{*=#KFHYDTbd#NC5WEz$ug-nPnxztRfJ_)7fTID0&H%L>$A}Ne& zv7No73|tEfoglZZlB@wxekn9sNeT^r zC#fzl{J>|9Lr268W)PA)1@q3ftBu|7=XmK#iijFnlY&XJNW%GmPQflcnawDYztD(# zRWdZ3EzGK4!R$Ls`huJcgzf3e;vK`a=(TLLrv=J1yp~FWQZfrOpg^ZmKz71YN2mbN zikBnT9jg(Er19bo?yN^Md*-G(zf4x5upk}Ktimv1c0H*xW^vsajSIWk*wrS=Uc?ZU zGyBF}W;9w*JS*`KIQ7H_hQ82qe@@eSue!2zH@Qq`M(j}i^!k+ehSfvDa#EM%3b5;l z^&4E?Tp&@A&bqHq4Qe(O@qc2Y{tgmB>JvAWDkjc@TprKZO z_{H#xes6F%7#$v?c*FCbUj6*(%U7U255GSDX^89Z-@d-Ubs| z1#}#;qZlIR!})2!qNN8@*Vg9RZou1)fClT#S_e4{v_*j&FqX-LrYxub1F;7zbCBZ* zRP(?jsow}cc=EBQA`o^=#bq!86so}00?`0o56e0FKCq~A?F8_UX@v>#zzb^6 zD-)z^U7hWK%4i$h)IK=0UCEce)Hk!ctHn9%aKqEjFmsm#bb@7_1zk%8r9z&lu!Kw= zA>`}?gpO0ym0lm13aJ>%cpK_vUA<#~UhMZt&SBjk0py=f9}*unZl%s)k$vfgeqMa_ zX33nD29+kCwkpWW$q-ht#g8=4?{VXthHGZ{^Zq4@?0woNMQ6O_;V- zsn6%I+(O)EF_9nvrMP3r?{1#=lT&W!H}#4!R)2%s{q(#mqZLd)XeOr|XUP~~UwoQB zN*$!z&4mihQ8YoJ5N-w})Xs*@M0pGS#_>?CRyWneaB3ZZYLq4~EHG16G7F_E!6A0= zjH5OVbTs^Lb|d@Wo^ik{kh>g&-vMO=UePP}S@)89S;1NM3nd4s9i5AUgloK$Ia%MtmgY<}R1-&uneo-~f*HFr|6AKTM$>LO zZKjJcDtwyq0VfRUd8mFqgiux@u0-qUiX)b8Q1k!^hWXy)ayLYy2C+=^0EZV7ew5Vn zq#$HAkI)3s8YbM7b%Y%{7D#$}xma2knjE) z(Evp2lVeYXgpHVYvAnkT8c&;U!%8Y7p0slMv9z+uLg3b25kGoOA@=nS{)a5u{K4yW zlGWviZF7262(aun8wn4M6wZ=+mF)v`(FmsPPU_5bHl9}A;0mCj*-C)qO1MCv4@rGA zO9BNCQ>rSSlC_X%?=NDF-b>!iZpGFnt$%p=-#u2Vd?veqp@@=mZ_ay=t*(R{`~+}Z zr=REv=&yF3p;{ z(Jq%lWAXd8v9VVqYmx2dFDKbgTWKtqZo=e8ryUyGLYx9z0pZ?qDg*tW{~0Hwjte)0nys*>mB{N@^B)_Q?b40A-+ z-$Z|?i6q1vng?=SF8iVqLXRTnut!k7hq2W&yNP|DE6i4yD%8RY$e66_%@dMK_W&Uu z1CV62zj4)s&8ILElsrQ*Sr{W~TZgSF+o^d%a5B?XwUTtu zXpDs-kxa3w>0^;1@LSJ!UCpbL&sc~dVL#>bWOBxpNbB(Cy8 zLX%a7WLob6iPO)`p`dD!yf^*^dgk*UL<_@UY_D?BkB>({;p3CDtgDe^yA~_;vEcvl zC+SEe*;~stl;j?+oenljcXPese<1l@wyuVo9)nTkaDk?ayIwy1lV(jZ@sEX_gX1>GUlvM{D-Tw zxkXF>CS}wV-yF5oeXY8N=+s5Im*EC5vRLV8xDH5=p*EtKUAN)70l`=j=qF|H?g56x z5EB`FNAp3@st;07N0!@^(T;QMmR}72caVqM&mhtX` z2wn*A>0AUPBN)*I(Tvp=%d$ub%qo=08^6mZj0eqXf;GlY56lE^<`;WSz~1fwu8561 z?HeK3HBC198o-7r3Iw$fcO5>J7D|eAZCWu_?J;JU#E?@?jD=-n@JB@kdE~3cn0DjkG1R4u6C+tjpv>k`nt`BK~z#u|TY;J9`AO z4Qj6XagmeBL|9>*M)t{gatRL?>eb!cjeDS5`k-9g+0)=*>Fa727Y!LrMF6;=YMD@% zhEQVI_8iR^;glD`$wtSN4GiiXP-v22!DxGD)=UEFtz6~l1f~vGX(#AXZkleq`QiP~ z@*lF1u6Nj_EgWvkF?$B-KogellyeI8A80^}FLs@_0PK&*{Uy!3>|4Es?!w6-H+ zid)U_swy~|4#$Es2mixYDKFLDgr5+CySeV9S6yi@$zc^wbd3!CcwxAQWDwYH`52Qy z`7bk3nzi!CWYqu=rq6a7i6H$ZNTLdj9oM&4r=rX9%i<1igoEi-*>n=ED4S6p2>g@D zz}<1VRyA5hz*=8~mp*BTNIOmtoU0{+ffxEn(qWQenT+xu`7{`|%buv^OI1H0Svh86 zdkB$zGTDIQ4H$yT;~K@wK1;QSm+PKhl-}F4j{Zk;_~5DGMQ37{bwA#gRzs{K#idNt z3S{c-g^(~%(^n8fawa(Mh#;LE;)HD`8d+<9eY2s!hYcLLmZEq*x~_mN5PZBKIQNG% zNi4n%)ep%T_%yx1vFI4kG?bkk!%%kO7Euxl28=h|%5YgY)ATrLlT;2}O$68{#Wh~N zytW-$qYW@>7FdfX3lp#awtl36 zR3b_R(qO*Aa@L&k0L?&a3PnNPO593;hVY5f2%xG;^7RUj6NVYNYmLzlaijHx@>>ca!1-dc z5qE6d)0)MAn+Y`MO>XDTa;JJR`p6@c1}_4${f3I_jw&h*@2Q2n(?r&fUrzehoszbL zw6R47qk>36o}-W&vR6a$qMHzpM4Pdhg_p1!jhBOVKdY4))_&J0EeJUo{G113dfU<$ z$Zj;ud(1o&(Yae)!$Q|>VA`~Rj#E7SKpvD*^Cfs92*49T&_;z%6+5n;=K(3ozBUUc zVx$*4TJ+(u%_YS)caYz5IWb-7!@E!u@=|?X_YAV*3bcbvKb_=)Mfg*%Ha268(uj|s z@d^@D=QQ33qri+9I|!v(hlUamR)?fh@k^-1wEp%$|Er!e{uhpO8lpS9yZOQy#r_c} zLt$}s^bw^Bl{LwxOd6s3&`c-Qo2L!}$eO(i?9vUry5~`6C1ylQf1QhdTGPnN7CP`1`+V>4U5P62$b^lwB6|;c^O0Bp! zUyS2#clK<=_}BWc+jLD>BfgAbKnz8)ooW(|JD?^zrw}Js>lhv%7xL8O$YZpfud#B< zp(jz7NcFKyd_y2#K`= z$^f%fcwd-+VO4aEA{}h*)ONAAH`zbshFEF72GBrf0NacC^@hg2#0Ah(R6;M}KG45v zySzy8JYwYKjDg5}JvcU;qi$;JLQ+`fj@?UIeX|ponFAOJ69!ePKPamA_yFd31F>kX zTTVvTE$c>#%?3zcx!ZZ1IwRD@mqLP8wueQTs)GAFWEQjXh`GuxJM+L8Qoh6X{mBx- z*3Cy%b_0)uzT|?O*T4v{2FM6pwjz3YRhR8+3hTmPKHo*mb2>q5C85lgL__qu(lbO? zq6E-+beg`GBg>YYvnq6*f!*5CF;dk=M+{7?NEzFt^nG_$wSdHksoO5>R2*} zluHO2)mVC~awzhX!)A~aEBW0`QjB%UgvhLXa;SAE{Z3Ih0dVe)0f}WHMvVIp=7ivS zP?mK6INwL;yY6$-m{On?0Z?8tNnoI*&c3$3Sv)w*q!VszT&8+-rmBl_^ar3Q+)lKr zhTQKoCA_f(dnVj6>lo5h-2{$u!D`^l(w$or>GTbykrNj5)83zc{P9mt@30Cgd+s%I zN*#3b-N@vP#tWy2s)u?p8Q^a_O3J**iQMD$`FgfKvu5K=8c+dlO{&Tv=UQbI%9k?gP+f61dM0WNZvRTG2H1$D<$(m2 zsaq(x$WbrdV7n9Ez?U-$WX~oxK`AJQ-T$K5LPim+Hg1a!h>6P1H~@dv70i6|#f2K( z^iMt|e#GfOBOiZ4H_rzo)V=og)_ths<6E@pP(w^iG`Ss19F7(Ko5Ngp*NmyCK$;X5 zC^;3*zKc$UGd0D=50H-#OTi`cS?Smg^B^}PU-?knkMcTv%s*=ac@3QAWG>N~sOW(N>u_wz$eR1rP1`eyd*5=`fivhtoH+Df-DfLMCL3@ZNTK{?zae}w@|`H4cw_YN%fcB;Vp(&h*uo1FE(M%d7g6F z`hAWh4~oiLpMs?Huq*Ih>xSRKSYyfeaM>ez(rmEKCTMn{s|$RK$UcKmnCzs%V2WzH z>8`A&#EUN5Dek9Qip}wq@s5@=T4Z1wYV;vzG!%#N zi@O?;?|H&dCh;^dbaFJKm3cBU9YcR zPB**rH;*@;e)5RS>kD|I za?SQQ1p-(TmeGUZS@X^9W+e-bqP2AC2P6?e;y|n!=!CF181rHHviCn`(2Bwj^oS10~6Y3pM-%7$ZbFdtFdD@=EVnjF<)St%^=VMCXdUUGJn2M%+-}!s5Q#;$LUiGhrRaWLLHYPv(`V9? z7bH+hJ;Bqixg-Q%`jdz@P!Dm@x3yV3l(w{Z%cn zUPdeqi9#=!C}fJWJSd8}uUo}tp_$n~_*s{yuudq`k%)HI>g&uXErr>;Q0*X*JR4lY zG&zd(eEwJ9H*#zM< zlyB^&W@CsQ!OF9*V`;O2XC!~(PVL)%Rzx9A z_u5rSG#k+R04mZ5zG+GkM0Z$Wmg`JAw>MAuAk>b!V{=)iDvl>m5+x zETVZ~avkhVeyhOT=(y4YVr<%SD^YdGgEUyVv{{M0VE9<*r# zJ$HTSRw&I7FHCS(4B`@DDP2iT)*jlRdZlPCt-SK+xCfF3a;#E}H$~B^7=1d(&O}57 z;Izr1c(;aHjb7l}#miYTS2E48)*ZaxCCp#N<7t-LWXw`@r6mhNNX``3NC@mKBn#P< zK)yT}cDfQAq|ubJOEq{ojeEFPyvJTA-cDGcj|J-kHLu`$zjRBwPBFcnj1xN1R0$EzD6Mc)JbKZ<(bA=D&XE-hkfnG4d~2 z9Pog}U{F+2Cpm^!kWRQvOrZf0UN2T&6*Oh}qM(#gXp;GKA1;wJzo;?I8_uy8Tgq30Tjvb zNJY3`ZtF5Ly4DzeLuJkG4~(Kp%9~QoE5wVK6bV~ADQrp=x_g<`j_3DC{5uG7{i^S7 z-(ozSq{}kZmj7#`6_}%ZN0)b1T84yDu~=Gxs6#|gR`UE>_yPo1EZcJGQZH@R$bg~r zJ!{+croH_zSG7@8XI3sHFe7T{0t{ zcc~6i4q8&Pw{(nB*%Fy;v5M%PVs=~mTkFPVo~Uw-8ZeDbJ-xkLOO3@~Q)9c7*Z|b( z>OhU>IHs5cvk&SsH*@o)IT4HV)|5Cs-0&|7(#C@n7fg)-2OJ$g>E%OMKSFd_l;I>) zWq=aeq)XAWXO{PhIFU)#!TGwwZxTb7=`7jez}x@H*YQc03M^|bBwt|3Q@+s*`9`L0 zOAokDnVE0{q#{OEkJb$!c2Pw>&7xTurA& zw$96D1XL2qw)mpoV`1Q4?y<7}k=A+>N{tUj&qYmi5WLV-Eu2-r)=eXF&x~?@rIX7& zqm%{L<>t1SVx*EED+wNq^UIDgw_WI* zfr=T-zJxq=A#`$@p823*Jf49bV7cii{&K)~_~kAHv{u6;c$x_5QD`_kVr(FnRy(`!_!vtR6nR`T57sU;Xr2p{w|}_t}?U8i7ZfK7Zvc=zzy;?QWkLwz@s zm}$u7f0;AY^bhzq0!vC2j|})^d=#IMo5Ry8fYVrOMk0r^flH$uSXBB*a1G*$GL;1A zz{rbd#AfJ1;~ob=0BcWV>nFcAqklLEc7vLi&y7Aov=3@{32_IFgLE_dVyb4$L~lQ~ z$yZb0ngfWC91FlpN5o5_DAb^!rfAW*C?r`1JwgPHmMKQ+;3hXNltxI2-Li>D2jQOX zspEHuj|GV?@vE3Vb~|g-wOy>-)`y5JWo0a;8&erm(D*ZQ#bXFsA&r$(1L@@Oh}NYtKp@+p47^1;8rbIrd+T@BeLJa8v7xH6-$k7*OzAH+84n? zoMTVyu3<(Z9BYUpqEAlg^1eC#X#KD>RuJhldC%%Qbf75#f!f8(^=yu!3sA@LEbK96 zhGsVMYO+DK8x{VvlA@}V2gJBe#V1Z-9RpTQ%*=1~Yc_B1e|gwlz4`d~@Qz`sq$CD$ zl9M3%E}law{5ZfTX$sUZ#8v1+LYhJNTf0|jEN3w-BFeEUBT`wTbl&kpXZV9cEQK}n zH}hybB(TC@ah8fBxG09xa}Bk#^=bOE^E^TZeZ(CX0(RAcCuUtXLnCEHnEdiUQG90NJWWjE|MD8 z+-NMGuqD?{uEwuxwf}PQSx=}5K5dE%^2jTMh=37rY1z*QS_=xp36~*>x4+hv- z#%@{&B3@;5o=1v-{hLda605(u0_nHI0uGw{R>L&hweXizQtMYoh=!8tW0hxXl%A#n z)!%KQrz3V+EGt5orJsQI!4~ck;&jAzU@8D}_O6^HWTJmozSAqflFH#fCPGy^Tz8r4 z4>)<~JorLyac+ktUqBj7QjirKoS$J< zaFofVC#I0yzml06kCd&4z>dS?o6~t}0oIR1myE|~HEvPNOka~cm;UBPe}V+ni-kDU z7GKo0oa22BgxQb<eC)A8@Yu90Z{ zgCZdxDKeqH6!xi7frJ*R((%s|+%~r>W&zg3xr(dNEXk#3*8}{2Rvr90Z-;dwR&$1$ z5ZUS+f&Qh=4Okr5+>kVku$bj$OYDHtl`F?WL-=}lbC{1AtiZfW)yg3l3u;kSFijDl zQC^P~P7@r@DOyg7dQ-x0K%AbFkusMV=tc6LF7@f07z7xG0aKbVa%UC+OF=LjjYJJA zg&st{J{(LinCvl#6sVA+GKgAa4G3~G6N&Q?=b`}s=unGcSV349I^{5c{1IjAfMZfj zhz(5mz5K=$rPTy$mOQO^)nqbi^(wDG8VoukxANuP{Azjkd#vo*flf9rNT&r}5Jve~ zz^dvQ=Qhj;hXPIQ65Pd;_`T7O+wdmI%#mCXj=6~Wu*6b}isWWcp(Fcy{^ylyC~>6N zVTcpK{6sH7rpI^F&Bax(z7)0<1iU&&9plE1G@)AKqGj?Ukq89Dub6AmHlGgio@Lh( z5aS6R(E*kDEv2zzRuR1m)2OU>CpwjZMWPk@?CXP{?*G5fe|qzd7HNc)5U`_4)jwt>QooZrLH!v8 zyZFFoWyArWb!jZbwjozr7+Kx&MdG|K*F3&R-=aqbWZ~8o?l~=h-4(l1;(8qWjWT4Qttf;o2DAz329>Lh!vjdex$MqS7*s(E z%d zF=$BEGs$H==Eea*uVHaHN2wi(gXPjpmf6JKX|)VcO`o!r75$_Y9tJasl>8aZjC}{% z6-&sH*j0f45&K-bq@l#B22u3Wm5y)oRLiJ`ci>T@ZRU6M02z%=@v0svl`jK1AQoeB z5RjQkqit_FwJ8FyoZECqPdYcz4tEqEfuVMiW&YsT`9_8R_(zZX+q&!POPvoni*DxZ=z?pG+u)B-;1t}qcC>g> z5RyxifOA)g67?;NCB@AR0Frndj%O!a_~u~(m)lCsPU;Z?2msN-@H63n(fUZ%F||XV z@6MT6X@f&LWwBxPL!4MD(~$mkSAeL**H~;sin}d7U1@d6#JmB-5UsariM9dM7cjB* z8rH?Yn8FgZVANh&9!kMxeloFI=lcvl2GcL`*Qr`uU)TB8@xCuAwGax~+fCyOOagR} z&mYeZETE`GfSaJM4ssZS5;N3(T#lj{B;>*w&`~#0c0E)`gCkc5ZTPpGauJDx0)~^2 zVmugTp?b4~QyHdj<*)lBLmQa44-Y@HOH3fpY&Db%Wkt7=2(&@@juvLXcZ zKE%iWpWfq7KYw`m0p*?7Z1=}XP(Yv@54`WGr`ss6pw^-}>Fo^?iQuQT@|)EM{*12I z53fJ(-M>{-(?OrzGE%cxNJ}jSf)z>}1|_pl-?D3vA(x~`_yKAPBdVG}T6z+^*$SpM z(2p1JPc|NCf%On29T*wFyvK`NJJGI$nU1nBkyh1T6Dl|F>lrgcLkF1WGH0b@GtAI} z=+~MH{8v$S1U8h^CJmurc0J zFs3Ezbi!5cesf97^5!LNF<|exqptN`%{-!`d0mES4x%2iJzdFZf!;1g?B&`b;^uyY z9$%TlEvw0rcIJTwsY-K0qcAHp_PksElh(2^30zn}C)XBM{&=AkFXss$vvYOGYV6ol zCD*8h6Q59W4do3iAp1sO9W3iMIlWWs1%}j*Y2McqQh80AP`c8LiVVO4m$i&x-V1+& z>K>*SSP?{W7DBn5>UQm3rhKVi$Rdtf`V~1yb5~LcM_7YZB-Ke*$yYYV!jKN01Q!xjabzB?s!UlaVmh{X*q zo$}^n+i2vt;arp~d+{&b(JRF?bow2AYfcd%@-NPQd3g7@dH?CdtB2j~&#$>AJiRL2 z6Crt^5NYd$h&Z_sH%&Ct)&73n?x272tkF5B|MjQ)504KYx;hB;za}f5 zts#b7X@03uQr$L5!4{sL0;x&qDZ>-iksqFUgtg^SU~c@JRDf~l{Wz&tz)(lokTEx` z52_GqyT&5HRcmEKO}>QF&q8@5O{ObfaGvntfG#>A9l{!+Dq9+7HxjpjwY+DXEOYGr z);onE@W_Cq8_lZdrzTrNs$Cpd_*LRct|izO_i_*}wwvUnX_61^?QO+JoCr)AbFAy0 zMBxr-*q+5?=;iUaJw}jysTj_L4l3(aZ8~j157Fa06#~Qll7yn%z!E9?-yWnt6u@3C zP!%x_Lnqg}o@cM@A9OvNE^e=Xa~MlO{pKJnL0U7)ZgpmMZd z{HszgU-u6Sz4@W1WZqJ@0uo-;3mwiKvqzFouD1C2^)3E1mP3Pc`C3xPoT6WOrRpky zGD&n6CzFw)R2T0y+rUi#n+|b2@-3^Y+OY8WP;oGY=$!3Ebu3c@D0?9Vp;qHv7orK! zt9cFY%C|AHBF70ppj=N@FO+Q%CtMhG^Axq4;e8xWub1U;q4dJRNc34)0$ zSHH!gGq;hEwOznrj75 zOGR@mco8cnTzID_MF2Mh)KC^ALQqNM-A6R}e)XVgh@m$pUJAZ%ek<4v{>!uk&{L@l z{{fk|6dL*6Zv>0^gWs6vi15>Djss+a{cCgl!`_(Zi1?Ulj>CU>j(^x2^BhNwIgbA2 zIsRd9%yT?y%<<@7p5q_(#yrR4#vG3^M;=rtaYuuGkE z;lCA4Fh1*uCK#WAC|LwhXJ~+8gEAyJreslJWKVHNg$HR2qD`GObo-6)ClR!pthMCXOdJgZ;KD zX+e9lM%=76w3m-rfee6~{3YbDbnEnz;MBA)riHWAC;3cRvz8XNXM_n^V7(~6@kD}d zf@;F}DTJ_KuQ%|H#>k=yprP1!S~ig8=AA(XbSrPb2qYw^LVWoficr_+k}q(Mr`7I; zN5JE6QaF>r^sAB=lo^6BEmq2ZiHIsU$R5HX3mGySo)A|8<2Iu^^cSATNDN>E%@z@B zN@a%SStvCg8%&X2KD8Tlri~sf|wg<PnP|YlQS6G?+wsfnTuy;yw498$ z%WD*;a1%mrXfl~r3&AT|I_|zosvizM)jD&n#5J_(^36!?wQuGhy|fb5-6HTc?0uk^ zwuUrPSZ*;Yu_MG74P^Z1{cJRVcq(B2Va9y@m7Yxgw|qhx9AG&Ot^I`FjY`VWwCB~LQg)*W^g5ft^Z+5Q!%eiL*8UgsS<#4#0=JH;w= z>)A^Hmv4HrrH<%v*JgJviuTXMvo}}!(O{VY_Pk)nMo_AGOWJe)c{{KiUTCfl>8Bu zrZd#DQ(JC(lJGMQWpx2PMvUV zFq`Tzg5k24_&cKW^2ZlfF&IAq{?XlKk4{kah`$8);uE3%38q(Z`09F0GNsCLofY|x zWqzRHXpRooh%TNof_P6kQ6?R7;ZwVoo64>{yfMQv5y-1wBVb5YQurp68d-xhOWq2O zaojT|#`~aGIn8W0o1zVsm&0!Y)epA7lNG@or1-~pcA^tD889OAr?SSKgb5M&g$+qTC)JN`I)Z_MVuS>L?HzDM1Tg0*N3V( z0~5~T9i4h^s~0-#g}((WMwiJN=`=+g_OnQyM5|K)*azj#Y%+8mx*J;GlR=uK&VI>| zG6cZkNwJs93$`0!2}89%1FxnSM#RQn@ESu4uCEcVZqKT?NAKUzJ+U6}pJf1F3U4j! z#}=(SfGOunng%ls@VC|gQ-nbZ|35;3oOoeSu0W3O!ul!lOw77{TTeJ9V3w%4gE|l3 z1!E*TH*bRp8RQuxfD~3^txYY$xa^G*HPtW$pQ?*2ePD&kIN3}0jU$~dLFjw3?!m)l zi%jNb?x@1zab6+fnFvD($F7;M1=?lKW?(q&#n^V3pvY5HOiTFy?_R%o_X7-wm}~o{ z+r8n$z^2fZp*NVzGt>+j;rGAkHE)P=DnJ|b5dP)N(EUJ@QdVGLCB;zf&vrJ-dMzW$ zP@4ez4Qw#;u1R$1O1qnd;gdQ{N|y2qp= z<^rMBHX*y_+P3Iq%f_3F+Q!JwRMl1*FC80-0|H4jzfXr))c~2e9Kt122dnCqmbe@! z_~j6r+--~x!a*4DOglP8q&|}^-G*lsTMpp}^slG1P7L9{u+gq2Sv|9S5sSPA=4SIm zIOY6>2uc*0wL|bSMY5yLcHU+%YzJwNKnAj(!l*aU#YRVv#u}wv!Z8o=VeN!BU23hU zO6VkQ&T|kSoOI8^3G*;eib6PHL*N-X%05?U3ueAQJgx5Am{y{Wi{*9im-lb)AK$!1 z-6BbcIm(m&zeCtE%nD`8lW*XKEQ1Fl>1#Aryj(zWZ$uY;C2u zaY!iOHvy)#%7N7g)D3@Ym2gy$5_G^5lf>75|BTG|%!{QvYBq z6s70QnxGk=0>a|rhQW#8(@3=-4?nnn{TiXlkVsy=hu@+1@$ti_SC74I9Mk*v&m8*8 z`!}z7rH2q#^9vVE6nVc8*#*W^I}}CVy?wa<_=uT2?p{B9{{|)Aplh1iaJcrwX%~V6 z>r;MY$f{0@XB{7U^`#TP;(ps_=-e|xdaHbUb)lh(xF94=N_kNEp)G&ITAt|R!SIrb zfQf&T-8BXYTPYEfiA~Y5MufqOi6vaXxjAlFd8y4d%&V^(3Djq!w;e(zC$HKRq>}jV*6g;!U`Li^*)w|&V@`Qz#uV24; zKe&GX?hTscDM|~#*{_}85>g-;)E0^MKb>bN7)~cmUK4sk%;@AgK+Ou&=BJ9rhv;YL zalBrSzfFRCuey3RW*;F-k{BZ3j~~Z?yt`Z9Mt(JKBIIPXyh9|!?BW(>n3jl)xG^pR z*lIJ~tR>hpB}Npkl5i|J%OOG+9BW9b;LN7axXcg@|DACAQuBBAn^FH_1R18EF{a7f ztl64<6%~bL4Bl5B@+G8cD789(`Klp&aK+PHtCJY%SrL{p8oQ{($4yX5MVVbRIaWi% zS~NN4aWpX=$!B-B&cS%NaHWY6Wjsm`xm!(UQXsz6E=o2^JP-RQ16AZJR48M9^Mt$0 z7{jaOc&cQA!2CESK+5>6(7@%el-U?;7XM-k#fqoKSXWDrj*rykA! zK({r!U|TzDS=+2`JecU^`Cz|#(*goFlw~8fyT`cLJ)l)3^mx=P5{hOr^h(2I2upGP z%NY$)f7io7$|7zTODsyxdh4|xlFEZg|Mk_6_a7jQqPL%sP&u~T1t({vs-5a3@>1~< z8C&dq+Uo*^Ln4WwAtqOT2%>)|_mB?<9<-C;l8P}oC@PUzGu9m%jr&FpHe~0|a zUC#la=gIn$%2=a8glK4GpvggsStR#zoI(W^977eOnuRn#_WPyP^gzv}BX6x>X?Umr zJ-|AZXf^S5iDjq`ynzpeMKWUZI#fE$xrC8Vs)p%>MpS9YAIgxQe&1ZhK8@y}JQd-VtlBjvHacNxD_o{(o-&Gu zU1|Uu+XQ^bVPF4*=*7ot!7C{hu#jHDWL2q1_MsFuZ?UaRbhW<8(xH0I>O->@Xvbb-Fz%?(s4WzdPE^V9ULFw%U9Q&k|Z?y zhQ4nxcTr$RL1Lh8QYD^UCmXvf$OEwWD<-#FLOi|`G16b0oSht>4g15<>G5FLKRS8% z-%w(%LOdUO8Z$Kj^@l38)3X++K9>PCHW{S~a^0cVGN4drK9Xo%LuvbHT}z}Kjmam2 z>q_!$fb^>%!`ZNII7>rOtQ%b7|LJF*tZv!V79zmSGVKK;D)dBafNuqU*tAE(q+TIG z4M;K(({3t4*gxc+<29B@uU(3|5!?`jDc8_REPEfjM^HjD{$e-JznB@Gr2p0uFr~{l)N*YOrWq@-uns=4dNok0LY86wi`1OL# z=EgUhYly?Km#k>sZH^3r;DVpJynpxl?SmObg(2mhP(cMqTO~k}&U57OEjcQ2f>?g2P!$-wTh2+1~5 zsc218mO_{DfGk;Nxra8mMyqmLL7I)JM8#@nz7|YVyq{ zj!9m$2AYiyj}A2ZLsCr>dm$U6FQV|_zNhDiDfg`akf2tddt{$QU6Eu@?jZ|0>ou-5 zclf^Wit#r+*pt%VEahOfbq3c!gOK;!nLGK(wba+7?=R7STgnmH%~H5)CJ8#%zC>P!7p zj-R`n-&`+1zqO+9Vq`YrP3a4_@zNSh2jqWR`!uh~>N3}Ub~G>Z63|u&k|hKkSlP#Z zTvXZ4DG7EJWM;@kt8xw-7I2fi>ApXQD+La5Lk88mgGCT>J4q5d8X{qQSb|BcID0wu zIaI98ms6}*!dflL4Fr%G>Lj?;Jq3Ihnbt#8b>iecGF&`aclIppvuA0U4GF+S%Xn5u zQ7T#ccN97$-Gq5g)+6iP?$)A8do{HmYZ2--A9LGsNnlB?hiHdp|1ri_axMC5LUKp3 zhh6W;#35lVYKb*#lVyw+OnVH1T-A1k42}R1tL~Zzu5bgw2xzu1arsbCpiY`=&lCp& z4s@R7U=%}qMyZrKh$##k;?&VqD6*48T3{sh)jfz>8%DI5X9BXG=rVHt;2&U}K_@)I zHI8G$Y|<7K$vk*&ttitiE$;IkEK4Rhz=;7X`iS8Y`osQ*+Leo`jBeRy%Q9F#Lsn^D zh{g>i9b+gUO#0{tGQPcXvQJ*b<;RipdReTSlYADW3T&Lse_@db(L09<95L+e(=-Rn z^gw!55K6KKCr@Q@O9S5ZZABvEea+h^vVwaGXVwGvNJwV<1g&$hOIKm|qF-VKO+7h6 z9QzWEVVzH6AWDT{)F!HOok_ho!5@gpvTq+?>3|$iSGCkS)0$`_)UEC;)ICD8OEQxv zof&3nlugQ2gU~H*zCvOTf;YUln=|1{fD2ZgBIeg8k}`hoy8+yy(x2I#naJM zxKM|L0zQ=@i4vW1^1^6PB0t58EcvsrJw&?$n#7;~8Gi83%{oqxcy1HM7qOhie1>Eb zcC6d5`MgtuC;Zv;>1KCWK>i{Erc495jWRh!oI) z4repstHj6KzUCBpMf8)SVT<^}go`XliI!+)zPv{6OSaazJ)r{Wd&|tZmZpwYHnDQ< z6ALW?nURNHIuDh$7+0WIej@9MNiaypNQeckgv1)=n}Y-~V9nf1Yw{eDAK;8kCjEV> z7Y5P`K#s0*pC#5-$JQzb?es<6SMRV$7rA_bvJ?kiIMlz&m4e0?c-zzuYRvbapC?6) zEu#FE$?BJ1BBDdY2$}^eEl*8 zhE~I>2vHp`CyC{B;n(q6$b<&rz6bh!ypMh#gMNb)BFKofi0yS(TSRkQjlYGFq5P>Y zo6b?nxQ}1)NCIfQ*1@z1V4t3W;iUY&h=G^1K{8|6iN~L;bqG!`;u6f&mp9utlXMNYPYE4 zA|w}ieL>O=N3a1&7J|ieLL>DQnpNo?o=v(=G3r5f?x@{?0q}pWcV-gGy{IdghF8jp zi=jC7*-6Q!f%r@^CK_XRv)O9ByrysO1M=tO>ys+Tph3V5Y(RW2GB3czOm$YP6dX%N)&+l>|4LDlwTL#Eih+hao(%&8NRE<5Jz zdt$&}7g$_kI;@xuLYCO(h`37R48|!2`y^=owh1i!Dd-jB@uG?{fUPWE zW)V~ByKrxDjTMd5Euvow*r}QTCz^=`Ww9kOnEa4ST1!a)3J`N-#Igm0Wnh8uJQK*Q zicJT=)+c?eFAlj4|1*J5E0{+32EClGke{gY9CQ-RB&==)(v#%=$!t8lcID7pfN5`% zcG%xtwNqaZqsIF_hake`$gCtRQwsX6fZ-vP>nh4JC}bTKeJZHtz!^Z#!-*V2w)_Rv z2A97)e3*WC^NXEVgPCtWLtH;*_3FiBFt4=8v^);dkG%i>`;QNg@4r7_Z0hGgRG5;P zKK9+GH*X)`yxS#s&j$2-L~VLBGZVNZblsv3<+c@rLS}OWtcVc4aDKO3Pd$mG8<=X9 zLuExuCR&7*i#qL&@K2>ks@xHL@phpjS5aG&wELU zmcbTT$}&qD>oYrTeb0g}marw@T_}Bxh9`U}{w;SjciR{6>^{^Q4o50AT_??2rCbbxUtrH4`Qa+WG~YqU!+uT0%M$ft=U71)*~izuK)$f+t|3CUSofKokBMWk=rit#wA10MO~AgqDKXxJJgDTDaqAww5H1WgG4Iw)JD{T3loC4Ir8}T%mQGI; z7;q^FiQJMt`g&BT)ZIBD`A)q8GfyKpqC^Dzi(_eL!xQyj7OW|f?~*hm7HF=>6+WI) zkzxnnEP}4JMCKoxXA*ETy#fIu8~ML@3rr2E!lSpY*!}eW_4lZ2PDA%?ij_$>;~Pp< zNfbk0M}D(!6rA5UvYw2H>RaGERalLFC9)$NXD~ON0i`_B?mfPl%ns5YpRww;;N7jw zv*^#58ni%epcs)hD@Un%ZeT0}@fwJ^lsqfB@e`7Ea!8l}dmxzN|4BuWdP zo|!zIE;PEf!Sn3E z6M;OA>R`}TYGx!#n_)V?+UpP_8|WS7~0uy8uy2ucGny~+H?PC&;7GK_xp$Y0H}vtw4n}9Nj653{9_66 z$)J4@j$su1?N7$gTt&9C3wIpQxj1n^=PJbkoy!#mbgo+*fTqZQ|2s}+`ZjG`9B{H{ zK=$P9`^-FG-)H6l`#v)d*!P)v07?KqWAK$c!!RU*t0_#YTt~$cM!X;mAch4*p}=9^ zj$rrYzyyZ^O$M;P^%NyCiK#HYtkC!Q!<)yy1?fb+D~7cBxJTPg4-K`ctwkpLsEa8Z z56BVz)Z5)a#O6KT;4@K+3S!g(8Vn-%-J`?09d<=$PSWluG;UtNZ&f$~uk~9-D&R0e zAwHTXd(9gfWkT8f5H%vda+>bteX`#$D`BC%JKE2%WQhxb22n2?~wbm;|hu#XRqj?UyO*iy~+ ze5v#=xkJe^fFbQ1A?Pwk(jk_340ALD6VhnbLg!+fw4o8Ap~N^onyY8loU{ejLqeBe z1Y%e`rxXkP*Wl{6FbPJ*M$I|>j)OG3VCpzvtyFcAZ=n)33fm8$j~#Y?H$oG`nLaTi zmnVoG?{SFEcXzBBZUYsaJ$3SFp1oZC-0R3!nk8g%RqWt+TZneOANch@_ z(#yu{Xt->R(c|Eo*@y&JD4PMv$7p2`c4(yC**^v)Npk7H;=4Zvi7MtMJC%m%2GK9_ zhU~g3(+tsrmVWzNM;|s_YLG4psuUnYk#$V+l_)!C4U9!CXHufPSnp0aXq2^Y;*++i z;gKdtBypPybFFS+s1xCD-18YFRVp-&-Ba}ghfWmBJw5RKQdZ_-)~+@sWy$?7Ca2tZ zIp_$$x3puBk>^**{gjPl1g+^`_ZY(pSiI)Tt0`?^>0f_X_CwMOFcQcimAxk{V+Yhe z*J>`oUZIb-B!_WV_(sq)X6JWTXG&@7+Abi z?0M4^)V^PKp;0tIqGYO9nAfZ^NOL3KBgbA|qwrR@=2D6L7){hro%7}P5&<|bPtJOIFvKP_H{8K||C>)~9jy7RC7M_O zNvY(DAQ%g^0qf1{E)^Rxju#2n(eUuVs(X*;2NnK=FUkDLJqV5HJ#eHZgW^Lm03sNA ztYpNpmXnWo+!Zvo#~jvz*>Q$ifaAPrm?LCbMm_VMEE%czKB$XKXw4Q6;hc~qWV;-Y zCD_wrgpk|j8UrX*@ic^}09=35jb^oK$>r+OC~?124aEIU?GN`mbz9s&le-Ro;9Tqv zA!-1vT<>O!_)n-#%uF_Mn#M6KJ&MPG+!U^2DPRNDG$8@w%DQAxfpktVm28h5L9=RH zivW7%@n2!f9&cXw5XDLOEn-cBfSj5sxpg}ysNF2#w}<=R0|Tjg7`EGCL~-KD`=8)# ze&|)V88C2-K&6?9!`b1UOBOXm$f{L0h$2mqu$MUAhrslbJ;3;@>=E{bqx6&#hGh2R zY!y1)Z8vU$Xf(_Xhdc7YGEAG2Y;pLd+0FtD5Ykf<5y3Rt9cQE^v2yJ+pQxepL^3Cx zMXX>vRF$(?WF&WSbITjoTxm)YC5kx?&2DtMgM|*aGS^h+-OcT$S)Z8Pp}_PJIc4H0 zDNiCi3@gp3BGKYfFQb9<{IvkI6^6_x`h@5h;HVuQ6`ce5;JK2uS=k@(>%ke3ECc>G zYyx={Z(VQBopR*i%^|Q@Q}4zPTRR^l6s#C*(E}#YB%+?&u!~SAtlagV-hEVy^&b89 zL_~`0AfNS#&tZ{D`pj3_3;rm}y0B?1#139ACNOh{n>pc%wJ)0SrvvxilOJK37ao)`!kXeiM94B^&h!dRf)8ic z8u*7@x6{=;UwcS)?Bdn*e3hzv;!ojL+Kh52Tbh>bM{|IV0)30fdbcUhXj>|hn+~0bMJ<#NgKqw3>hV^N0O8S82 z5Oo|^@D%D^*ePtPZ1v#$*!A@m*gmMZV#a%gNC;bAtryA;D(kV!2tM zrXHeSA;01tUW3A=hkUIoQ2s6{H>z3@6J`BI*mR?IVq17Nw4JA{)s@BL;yq&Q3QcgG z1_+$!G=hvf22hZa5(W7Oan(AP@`fcNaslc?jP5bB{vBh1&gbV%9OxRMM=dBX)i-{* zyxJoCbGJbz$gH2JAoa~dFc)l7ze6wypR;F#JJGqSvt*-!ye?Y-bfB?!QK*8b!&|!t z$cS%ALMTVhxT(qg+qd7{zxsPNk>aTVma??7hRs4td>`B!SJ6f%cTpK z)BqZ@?K+EFXJKyN81+d9MK!S=$k?gwQ>+(EQ{lnfTqqN6g zysvlAPe4Uvaf9Am#@}g4OjUWjA`f~=!m_d&qc?=2s;pY-t?5kb-B%MZfLb#YUv-F0 zHg>Qa$cF^R7CAK&wql68!sVcG zdivCm(^0Qq1E?jm*>P*cXNpVEKZy_%a+?FfhndO6jU4Wo2uorqehn{9LQ8JguAP(L zQDfS9J{ZB%LV*wP&%>1^R_}>h>V$^?FSr(s`dWY&g2ZX(CMSRKBx~3+!i-Tk{3tkP zM+42xi_{}Qo*#feOgh9@$D5*EItVZ;3{-P!R2dnYFfD_`L7Yf%JG`ug7Zl_JRF4qP z(44~>p9~T&akLve%jU@6v_c-A{xi1AV~ZT)v{3JWUQEYjx1CVi*Q6b)IZM7uRgOyX z1MLz;YJ!Q<#9TaLsX7#Vr0PR1?8OT$Hdul6FNIY-Rm=yzl6mu8>3+J^@cJI)oP?^{U$tLGlS~r_Fm?fNWFv-z4j_PJ(HeBs> z-YxS!s#|(=*V}6h(pp6oCs}&w(I_-{PxFzYU+=G0phu~;feNSOQeY-(I0-eA`O?!) z4Wd~QrAqO*97T2n3kgfSAlV!*coyv|Aqpj#T;x)&Laz|f=DUo){B$q}MN(!K<_B5m z*I$lO>^}MbGxx5|Z6sH=sD27=pEwhgt#%LqpJ%S^06~C+MG_DIl9In5)M~a{VYTEd zQ6BY-=lu4&*4jHWcUBcBw%Z@3!xmAsvtF4y_xo|ml7}ppaRZ5woj(uuB2pLS1yUm} z>vbZ$K*ARKKbl6bUYU4s;f?`M7`?C=pawr=0O zRya@?oWL*-{;}8J3LXjxB@5jPtAwmp?r$!mSssay`V|(qKvq&UlC_#f$fgC`&xvY~T_kG= z<%X19B!gN+zv3M$c-^Ymn}T&w%y9s-K_>6N`?B-N#sS zO~#LvvL=CcVL$Bya_y*5wm5|c^_yEB}*xa)zo53?LTkVs4D<*ks4J1HYY#d z-;Lh9v3U(bb%fa*5yf)7sa7nd&@6&=5oAbIDur);#E4eQ4&sseO-*OhIgn6qN>S0a7piZUlU|eii3;XC zUv4_RB@w7cDbTpm47-Dkji+<1u1?QyT-;2DS~_APnu6oW_-8kLs3SuIs7D(~Ha8n< zF-1Y33DX6XwNj>Hh6U2scN8|Ny2{xPTU*%A*TW=HS&M`o#MQutwfjTraA#vr5@BZdOSoQ;l}*Ba_Cr( zJQjrAJR)BhHXN=x&@s&rvv)*8%z;TYzH`8p^2|eW^Eguv$Ud@9df;{?ac;-IHE-4~BHEP9Vl?<< zbcGBihCh&89I@>cxlb}pdSZiT-r}|QLCjKZUju&o2igRte}2~M&Vm5( z5CVCsxPS@_wX4kSBwH`5Dk(IIC~&9Ap}B%1Hb&1>0DU6~6(2<*mNmNYx3RCgM(ENi z^wEmLV{}UY(wh-dr9E6v3g^pR1$t8T@S~aIL6y%z4yHGI} zV`Oguh2c-O;)oJn9kIN|5DIhlod&b?#7tTrf z5#T7&MG@i>mDH^U4@C52i`fE@Fgu=N9xf4;2dhOYof)Q~0oJRE+E~C%4$JjRDv$sDCN^_zh4{-ZHJ!$d>6M|A(fVbaTx?s0HE1ka_0+a`iekC$Ayw-xO?x+L z+7bnzu32lpsi8+X)^uoPfVhk0ZZG^6jQD}NjMPB}wwY7fN(IqOf5|`wQ*o zu%z+-S;u5$N7peK1B~d7C5@wSo3$0q)&SktC(462gKZ@MG%#D#m4UXkJR|{b-Nal# z`>!HP?O5|+8Cj#{_`G-6yr3}|S+VlV^*+fdDARbP#T7t9vG(3YWpaV3ixDQJg19s% zOO%!eCzk2*1ZtkAHeH!@-KyKCA7u6Or}f)6e`Rgp*$L$SD~maz-A2)iuy|ne!e=>J z8}Y>J_0YHIiCak^(@=1siDc9(=8|~YQ$OzRZ|>gQe_-*%l+kY|u)ByVu||ALCF&j^ zR8JxB;0lA(B0#n8Ug8hE^}r zk1t;&YHBBBGD2;H>w?|IrLnMSxF$-GDHQrBp+6B)3h}6pL>Pvf!qjBeZEbgT^}!e)T*4%kG%paoBjr;jezjf7u=LJ0d2!TI;=E{f_^# zJLY#p^^ocv_kZ;}{>$!|-|?XFjt6*0ZdBhwhoF=w^XD3!HNuiX2O63gupsxJx4Ubs zsSn`1$U;L*Z)y}lymu;+)Kt4}@wGTWuR$|xN-Y{R*me!maMA90 zHkOA5Nh+Dk5+XB1%+-qn9+%dx3k;6O)O%c0mmRTZp~T;WQj`6KeIh1FZy6F^wZ42< z8DP7vPQLvjQM&R4`I0gu)GqNpcsWs)=5jIgF1Kz?Z^Fu(C_V?iVnlU81nljEV`K+q zfFYZ>xEoSo{Z8xR3T_l#X^iEF`aw_(5Ge$0C)%6!xjLVqx`_K4t-(;s^lEf+G0{G! zsL6A3+AA2#Y=Z8fK`d6W5kBD!ES!URmavr&k5y-zW)KBk4Rcr(f9WnA=e39OHM`bV zMC0tY+m2Hgboy5|CvWesKL7L`s!-cu?%Qb=vQ(MdtNW(X+PVtE>!>}te4!R#{ zPq$Bd8Xfu)-(XH!-pdu-SzbcVmrhPJM!k0ijs~b^p9n*j7?Kd0<>D%k21DdVj?dOu z>Lx6@HxY{&ae-9Y9iJAZnIbe@L1}O76-uqcfnh!8cD~(x*3l9Z*zkfKQWdi9Vp&v=&GZ{Rt6dVl&nS z+X$<+)iavGdPX)FQB_;P$8YZA!9n!!>NT=oz0In+-RgE#kWg4;dnN;O1p zmTZp-V5F^*KeXl2fiPZR+)AGhQq%WVGiG(tW=K@XEm7t|5#5^HFuC;tR$jy*>WrH4 zf{>Xx=w^+dsZ^8?^k96jHSW|VuaUNzVK&9>d<9Qnq>n!N4<}b=IS0>e2Ng)SB6nr# z5_pGn3C|Lz8_G@TF)k+8;E5)#dVub#qL8YLr6L;>NHmkpo)R`@3f%qL01I9VlaJ8j zdggJ$=qsj1S?nUuG<)Tob}F-OT8GKC%eIaZD(GKef08!B_-C%& zCap8#$RwhuWEXN7b>vUxorq$H(YMSD)niL6&z@An#SE=%n@2CudWfdl-dR;4gSq_l z7+-w@dx3YTMgEUALPQ$bD1&{bV}P&<-s)cv1rFsJag1BMS51)idd{Gwy!(jSLN-RP zh7|GfD{Oi;fJRD{(!=A4LLssM(vsG?1(0OO-PXF5CSP@6Fc*;bs&BE9+^XIntQ=yg z4~@b!I2jAo(EQpug&q!Pk=?*_4>rFy8Io^Im5o$}g)O=)g(v(P}E@>) zu)P>~dBNQ%`+GG%Pg?>0*&`lV&{cywOPmSF!d+~*z&@T{ zT(8c_#}$_WEgqS1hF3rZk_WIF^v)~^_^s2L$)HOyj>@&Q?TOsT{h{z-#!iU9a&(FA z2cE#2RT&DIwuqw(_<%>|?l&fm=^5=_GfPo!pfH1_qS)n8SKK15^V*cayYMV_*lkqYkUjG;ogvC;z7i=gE72OhUR)ov2 z6&Lacwo0d21dEE445>!YbzYg+z9TP;R$mS?FL7tTH5W!Sf3Dd1>ZQ zCC01OHtkO!VV00Iu*2g@Lu*5IQL&mS#5U@54UmSDTv0OmQ!N_Vp*~DbQx0KXoB5?Y zu?>5LJAX^?c<0uM@(x_B%#tW8s<7v*kzp-=Rj>o@hDH8mkq+sahr%4_-C^+T;^WlO@gAMC^#`FrL@5a0;0|370cGgjX_zZc2gGM_ZA`^Bvh=!|XY}5%G z6kMF--YPKbr{L&JC1%J{6%fe&V4VJk3K4nVAX+A2`07k}&oKKcw;O=2BBmn>cS%Yx zhz1+$Q&Ot+426};3l7vLg@`tVXKQXcw1KD(HKOTAGBIKDl0Ioeey|?IU?X7y&&R5f zVRNRE6#?N%sf-M`7+IUn=;n&nws=Q*%jGRW13~DKiTG4LTFjMFo$h9j&!S3GiV1IYmANKFQ z?H{ODhhd0SpMV{$QJ~^tp&AwTp;}8|AKn;qcVaqbI&k#hmohmy7=B`T!7eaf7;U1= zwv`fiy$E|GW?8V^#@Vz=z&5@i-jDxyv@cxzCJNUuEkWuzl#02Zef;qGZ*SlKrB~V! zH9;lQ`}XSeb|M``VZb`nM3|o!Z=?vq;{!$z9v@kVk$l1O^a@!OfQYvBy>hf(4zj|F zH5vDiVRlqLipTE>JbXwuw1)Fr5gqDZe$- zv^s)JD9vX5^WW}H?|$h0=BZ`c&?eJCGdkm^BC5Gf1;Wey-A`jA=#9DU^!j}DwjI~b zRuec-se^2BXjD*4Q2RW5bRb4?eK;QhM%#)KxG zIj|Zo-3--%_iyfE*ElDQ%u3nvZ4v&6H8v&Jl)6*M!GX zBY9Y^9J74M44uvBWDX&IeGb9?9Ce|SxD8T&t+K75Wf(e<@r7t!@PsR@X6z}(0c9yr zTxNo5N%g{MqdKGv#ill_+p8!*+SLhGF0f_p_cX!}G+8vfD@1XHT3OKWa7k|`pF}Xx zbcBFN3UC1Y775ZQvj_4HrQ|HUQju1#=2u|SCa1=;WX{Qqf^~m^Q~(j3MzawI z>C>b+FfC_b@6l(WBBCai8P2y}`Kh^gxiCkMbGj8hPKJX`t&CraQN4763BNp{ufXL9 zLjq-o`77*cmj7EkYA#(cW9q-)=3hnqDBLYB5q?c>VC?&PG&xY;X#_+V7UE) zUww_Hd+;{R;3?dgFlrUqjd|N|O@L(Hki>J2FR_`U6x9{tg^3->sz@^l{=+bpFkOJT zs1Yd&X-!UhYI}plACIl$jedfVyPJ1Fmu+26-IiAAK6Y2LU104p!3rT=&qNBbt*;>p zqChL%YRCm+s(OwGD^XwH{sGyp){T}8hy5Zl7PF8TgXy-8*lx-0fD{?%t5dlG60Ce@ zN7;BuS3!Kvb0XI@Q@>8seNf|4>C0_{4C(1s2U@Ksv#GN?WokQiD>G?&d&}@lvW)g= z$z4SE&mTYCU);U_%l(h2J-Pn)`u(RL?mm9X$bSv&xPTiCwW|O|xvkX{QK%-hF)f}l zV5lSQ$3ismvl0$s#rudq-p5Im9@$HhV=%a2&b1}1XfF4>%E(i%E zm14xKELFI19R=-1Rb`W7zn3-;kdQ&PQ!h}6snX+ihslhhhQkyJ+^3pcthSdbQmFyUxHv{VCou7Ns4BqMlQrJ;;knvcq(I-gE`kFs*}4 z=%Jh-sTgr@hdLJPAq|0oJ71WT5RQDUK}g2yRnHdJ4zv%Y=3Ac_Yle$iUERNa|NVDA zUw-)hPK=s-5B5V7#?pbV&aa5AtF%xF_jC=BWuKlekFb03bKJ*o<3OA}lWQ*_*ep|% zWH-9Y^==o>^Q8!r!`B;D=mS`6!M>zIJK*%dF|XR0?TU8Q_S|Mj#-5hjL%ckxm3nLr z=`hZ2yRUBEU~Q~}jOBf;?Rqm%r(ndUR&Z3w$Ze=lfimp+%K{ZZSyx|qhwW27Jx{FM zcv8b|uUqy@3X>3r1<~zE6U|`&<50HsHUrQW0_p-V8lXONW%-K&HyGDMkA$85^19OI z`8YePYl+s1^HK$mT7Xbos5i$Y?&vux7IZe7HX}6}K$|EjQ9`y(|Ab+ldnTxFpWc1< z`7fxh!R9MBn1wky{IO(>kWg`$DiD{tR;8v@?(#REfzvVN)uyD#>r;rB+%{x+&c|w) z-q-0KNhjZ&4|Zz5nIH%%bz*ZO$f@g41LGA%Zs{nHk_nrd$(XGMvnUaHRSU?grAZW! zlR;oY>Mf0tYwl;OHw&o5_~1DB~G7e51o zayLxMhv@zN^}ByJ&kTMcfs{$y%gM`I%HXll_ivv58|tv0A*31&J$avh@BMf0KYo1s z?heG6GL0_6J)Uj5Fa=}h3wLr?N9?&Z?E08^Ml(~cg2#F~v+`Mfmg3gx!{?80?u`5e zfps<>Sl1^DBIlu|oeY@#ivef~^abt}ZqAt|vCSRyD!na|_gwYR95FefMprv+cO_cY zZ@0zg;KB-I;y@7*$X@ri_kZ3`YP2QWn5@pjUAjLpR5oKUuXZg05a55W(>aqX2W9! zG3);6?w9@1XrKQFPhu%NQ|0|l!rpB_Ft&*M>098xYIFIATsTLZDLxn5zyDzMjP3y? z5BOyIU>@IERPcHY#A=3HS0qS?9wtd~!Dh4>4JE#aCMsW5Kd|J~v7;lVL{RC`AUgJFOF z@b0(6-J=TzlEJHj&?^u#EApG#$K)eycpKsaQcvh`L32oo^m$+iLw?B7tS^~|K1I}M z0Ua|EZqa%{DZ_lo;B`ebCWw+)0-0Pc<%B)dwO^d>{sU&?{_t~-IFrmQYB}LgTTt3s zC4ph@LO2`dSXCbQ_N6!4c^{(bP9el@SV>jS^5}dwb|mL5(;(*8=!iv*OIC2jL=0IL zL*%T%qAIUcljQC-<=s!|Rg&Imwd(5FizdvcG{5^1qkZt=Y+0&DmUm1Myy4Xt!%H0$ zvw~<3uZqF1!`{s1NL2*vr8B7j;owOSNKr;X_QxCpjwP|gc+iwwei(ID_?}aV7Yx_$ z?R;AW0obd5+w0q6QBq%AWTAbb_;OGd*>*YIm2H7^v;i?Dlnwlcy)=7f)HkEKAsr#I z=OEbuh;^f(@kAkmRL^M~QgC@x&liizoHKIcaaU)1@1`PpfO-VyxF_Zg-f@?~-H_gf zYrW-Dz~o$`+%B83td|y6F!TyQhe=>_^)GBJEMpVu$+uvlbjlv??ycvC++-GY=jJl* z<=oe50A)QM3TySQCo79=%W)+%O8}p^I6xA0cbMA_DTh;$k>pfLh9hg42(>~F>u@VA zXDb8;RvO3?(ha?cwK&pGp3|W%p#=bfZ{|qAo`(5hIc+=NOV?zFW%ROVm{!HUk#!GH z7&{&~eIeQ7yrmDNwCmq6IYX5J|8QR{j_mkoThV+Srsqit$lI{|fqKDlZ*;Kx(G?us z1!U6^N*21@NtK7RS1FMTBovn4nLKf4!0y7pEFlVl_*q;g?IHtdR`?zCHmMhH{^4le z_BPeS@*Nca2h&`r&B`Oak3?ruin{hoIIY_hIzC53xS9_gwJNt- zd((G;ldolgX2)d0;}Oi?<`PMUY)f*f2I%v^NHI^IaPAtO&MDWUWT?`Ykdn6)bz3&w zA;N&Vb{)=hDOgvR3@6G?;k4d@RS!-lY^`J7I5X0n z)GA4<&&4m;x`yGQS08HCU7xYwIN3^MCrQdrT|JzefmNj@h^u|Ixt-1+&r+|pny|ah za8s&7#&O4lBst}>Y~piP{J7ufjqA&VhE}ONF6jrn#eEpp^?Bq6qzVdArMW#9(jU?i z%wv6^nNeYjqdCq^Q>oBnglVDp5Dv8vHvO_$0^{*C1bhWdDEU^dCbrP_$=r8CEFhCM8`o~Nz(F9KUY1n?KgFP8ShzBx3 z7C^(T%|=c~rsYDUXGrSnPoM5S-f#Z)`s3@Lb|Cm;vN5{8<|)h_9pmCtHcJ@A!8>uG zPP4}LzxN=|%%-pCM&4P{FQCpfc`wSD8D5Q7WP42fZ@A zvY4-wrN(e>yo<5JrOUL@@LfBz5d0 zniP00Wrz`Ho^c9wnFLqG=;GR!(50h}{TW&1`fCsj6Y+ zu=SooV%3%tMQj-(%u|km-p>E!vFy=0A(jRuT?{O^sDR*LW{L}RTlw+~C2T>m?Qb%e z*Jq8yVuOZF@3dtT^0apupJ}0=U{_W=vX2@+eb_P5c6B|2oYYLCsCAVw(KkW^sHNo8 zad#rv0M0n9L%Jb7{dlbCDFS(XKe|{PHze-bhRY0P{nJw57D#~@7|Jmv83pEB<8r+n zt~Qii)E+S*JNnrGRG1^&f zIB4i`oXr~|QM@;RBmtQY2ObT>PvOLdAe1XKwtyKF;h?E{6=jO<0Vchq3Zf}O#LSVr zElHrXvUIC-0;qRZs3F)3$|xk(Z~QvbLIdhk$Oq1Cx8C$k^J4WhdH`A8_@=L0%8RG) zm|gSe+3$=l?6_kaR&1F&8ko^PBu*g%??f0opLRQxhO?Z&pi%8Fk9s!W`Yn<2o7aC+@U@q*dg+Ukkm#M#1 zd&OHrY~5?clq=~1YgAb^wB|8hS1>58Yz<-jXJ8ycUlMd<P!W`1 zGsP*f^-LusN(`J#97HK3CkM=tzj@$*qDupkWjQ;S$J0 zaot+cnkb#_1W_8X+mxBj{VAatn}*u;s^#$Krb!S@1^2(P!0XkSVwcGRwL5+Ox<}~Z zBoSGRV7;Yln1*YEX8A1*cQa@W)OcBUfGW4wQ)_8xzqR02{&6}PQKMpN2Vy;J=b5ss zKu3Dhs+}j8?j41_e(Xf!VO@1u-E8W#yLFDyZHZYaexLN?lvF!?slQ6s5MAt&AzzLD zPX0yFfn0p}fL}wd?I}(q@(^|>FBk9yz)kdIJO-s6kH1{OS;;taa19(*=ZtG}J0p6< z3wLXC_m3p+%*p#<@jF9pR)#qxzx-28F5gNJi9skazPScw!^^hm!K4G!0yoC35vq&G z1Ry@?7+)EPm9Q;OQY~$pbIGpeZ@9p?tX!Rt3mGb&>ugo$Bu{276`bDKj*yPsB%Q1pqJI}4^$EIebqfE-ZHt>F% zl4pn(TZ@GE9Fj77j5+lXCk14*z3^N2&zL+u@1v(yV{@8`7#?8(^$;#T18h*Z#_QIE zRCd&^!3v{mwg*_FuE$)_Cv#OfvK~ zG*BWHZ=a-WzCLv+5~!R{S}#Ne%FBS55v)YriH6I=&O!#5ve^ITVzIow+MG~g&lGH@ z5pMC@-j2Huyem0||E4z_JVn~hj^6;!vus>IP>RzRA*9OiglV)-Gg{lH&cy6;kM$PT(jaZk$7>8AKPfQX$gCD9 z=udV*&8G@xY(jO35h@SjR-&XaZ>M0+$pc)fUUCqozk8ipk6s|r8fd_0TUuia6h1%^ ziHnKsiCv!%;kqo6uy$e3TBWFj2wanwbv&LKWq7YlN$4z3wU{?;*1d^)i}_~k}* z+}NZ5d7wa^t`S*>G$x%Vv4%wjUS~9%1+6pCAT$T8ZXhU6?0&iKP0_w%68tBGDv%h7O`y3q5|&doXaJ?X(#H#)zv?^u37rq#et5t0&F_}4f0}-N|K=M?cD65wY7owj#fU1G@8h&a zUh6ue3>q*wraH}0MsC71;nIgw$OVv^l-mzmYI7Rq`ZHfU8jBBMcF?wIp42o$+fK3g zFA$Kv?(O62sXh(|NU>FroSC|6;Uq%z!j#cXa70~72=?{xCe&yE3Lz-22%d7BfEt^` zR*JoNYsG~0cfHU;AS(9usw3Zi3cOpL3 zLw6h4)o|Um<6jScl9?X;5h7b=aF%-4un@b(Ry05J)f`&z)0Xa*1*!$YJ(2{4hGLnMW;S1d zHXQnLDwnf*-oyfG(-EpmlJLEJIloG+tf4LhjpI$ui)Qh)7RXzbYO%^?_p~Rkp@vPg7wd-bqoD6V1DZ;^@ZUmH z&O#{@wOGQ^EfiO~05RnkbP>Kt9)T>QQ=ig3CrgVjK@lMWJzoURSPdE69qP;32|ZSB zD^|N)U9VD+*FGJ5sIIX-LoFzh;Y!*FylTq`XI3RWonGvY{PZ}0rb;NKD5G=oDy3aK zEPChB=w^z=>Xf$g7+X#efPz3gJlLK@b`Y2@5h*wCsHWqw*>6*$A3f**TpglUxlNFbcIzZrLnsF@oF1lYx4>W|ShU0EV|( ziW`Xr&Vp1vUzFZj*89-smdR%G*Gt0uMkz3VoK5N z2Pazw9SNmcEL@|5G3vV2dq3=gF0hu6>J@Um%_U1i2c40JT0=VgEx*P~CCB8%0Mk3( zoSvrdDi)X_Y^!FLn7x0))@=G-ZshFMOF8MJEIRLB?5ygLmMJU)7tnqS4PlycG~{$6 zP!Wm_{-xi{rRW@>(S-Z`%@PHb3zZMjH7+J3?&&~XAkN-2|GwB_7Ji|fb2?kXy-z$> zEejD-qSVRkR1H6Y?1(N#Sk(MmJZX2cbGs04pQ4hO=l%;~1Q6G<(Cw`LzsLA4hXbNu`NRC+}lL3q2+5wpH26JI< z3leDkY#^Lwq&-MCFsnTF<;f~EueFI{ZFGB+Uh{U3oLNAVRq4vIOssX=g$F71EsGdquq5YQi$5us|u$j+Rd}3=BtLMK%T1 zcoo^o>@;7xWiVvxDH~%x`T`BsTgJF(IwPAg(T=i}=xIn>Evix%i3DaYq>;Y z6qTpi1aJ;<1E|4b5tJv23Z#wN$bSlR)}LAsqG{#7KB^ zZyaaZ)B9O~UQM=Yl@fpgWI8dhAT-zPt_SQ9u0U});v+NlLRXsL`# z*Y2XqvLdR>jC(T5;R_)%dc=`SSsungG?NPDoMQnE8}aRoPGC2^ocxfgdrpNqRT3mNkR`|%0Hy6DHjC;4Bbd+ z6A*!L%vQ&|)0bEbTVaM85EBwj*F|# zk`dej5Tg)aAQD-QwLlDBKrIObnPhV5$%UBVtQeZFCVY&Rp*;c@k0InwW@m-IVuV%&hKP|^ZaFf1_R^m?7! z&-mTlPcDe=ZW@^h-gB!-lH_nyG{&omiMxtXDUzCXk)yz255Ry2wjc^3TS!GFu6V2q zqch5(ZjLB3cX|f>w6$u~;1>xrt-@9|@MhJOsLAvZgNPPweSLaUjkj zs94oU;5pz{C64IB8_MxesD<2AW-MHJS>h2xYeNqhBXgkW+5*u&2lLe9{tO|)Lkm%oFb!RyP;#w@AnCd5b zH$2nX>Q5H+HGsa>t=aS>ZKi)#V270P)g`hDvPl3#A?nd0P#Nqk00r1K&ej*WtU1cm zTE#O#CdFUrm-bV-Fir`#U8uT+1*h)5S^;cf<}k7$Q}6v^nG|WN#P&39*!4@yL@Phk z_E&-GUZm9U7b9*v5p5iSnkW7|TG8lND1&PJa;}>LbT=(sZA6Urk`A!FgjtvqO~f2x z>WY*(L9&0ncr~m%x)e#Z9xD`6&~+VmOOhkj=yYS-hIXLjOO_xhm~K`rt~Ee9?sc8i z(s3#nbO=2USKHe&YMGS+7o%4f^U-OHzU*DDs=e$+S_j!Axjrr-hh(EI<)pKE zE9!0_;J}0v)}Dnu0E7)`qdVz`RJd{gr3~W{7pPE!=K0~4^Lty)qg%FEbc;umN-2Nl z_PKWp%SSeu(H*d5p`dZV6i8Jh&eM@|+GzgrMqysbNuo26FxO{Cm)p;}2{{c2H=KJ7 zRO1r@P)}utKI?6#-W@2~JhCo*jgy=Kl17!{8Di&Iqp5cv(0ih4Y^N8iA|y<(uTE)t zI>;1P&D5)mecHohZqDj_ms2>){Ljjuq1WE&{8p^d`PQkGT5khPP4r&B9+~S^Cyw!@ z$ukBr(-zl?rzCN{4$l~`bXKT*tpysjAaZMQF+nLQC>3dCvdxfrU#&saW-%tq8RD<3 z6V#^-@36f@rXj>K(Jm8mP!Q0MM((AFsWEns&&a8n4wiXJk-wP?fT5ehP!5vu_q=WF z24}@t-AuBi+o4Ca9bgxmH5S1*lVJjf8xXFOVN7Ol{9g3kI}RGfgE* zqL5ajimID+Z1Md-o1sRZ?i@pNIe=$c7CN6zw`g#W_6kwxfTkD&8Y+^+g)MPxq^!a3 zt#)$vP`v=DkKP)>J1QeEgIYpp;~co4tP>W_1(&1{XM3F{jEHq#yXrI!ec$Xnq%q^-$nCLAda4nYri4Jqtc(a81dU+~X zSez&hbIsf0FrA5zHp+{8uFj4diz#U2pOx)5CH2UVi+9BO!zaBBi8`RThAW?Qw|!5P zJ}wmVJD{%Z#d5LSJ!uT6Bp}H4OQa_+qL}7}1N;0O>hmFDC08<*I{6SRu+lM@jg}au3aYZYELuh|OfIFbA_~i7d$sWHudm z5h1aYK`uf=2EKf?*or=*2_kbNeUf%26GIj)+%{pV5=;@2=z-k`WkO|5#4DYiHiK7d zSY9Z}63o73FZo8paX)7(utsW``fmhT4H|`?bln@X2=@=%L&Z|oCjS(z-AU9M<{O15 zf{#PuS79KPY^KPQ-}nBndLJfa;}x<{M5ga-d_XoXDw|_UOm?cpa7d^gZemC7zRv!5{gYPRZv7W-Q2uHlzH;I*ZX-RC;W7dtf+oRIBVAqXz~_yM`eF-E>(N zhyW7CE|AQK-N-WK4IwoJAjpN>9f45j5&2r@%W+2t=<{9v#<{Sz8 zmuv*7o^NbH`sVe!yN^BNB@UgeWf{*tp@id7$q(AK0+F%lAU%oS3TfFpPja2=2nqr; z(61Q*ilgO;Ba`+xg4I&JePJCD#AUA0MN za<{>gWnddTSqQelnOJDHh1R>_(*LpV1_Q_c*mv9iAN+2|zy95};!7V@pTD*!+b;&9 zfBj-={7MW#;0yekEb$8;)86ln_jV8V5BBzt_WFapgZ;g`Z-;}u3+JwGoGG!0$DokO zn`gjp|3D>X`sZi8V##T%Kl1N|h#ZJ6qMi`O;ER;))qXlB$|Rbs9W?bji+QYs| zE_U!q5K@Rs;2!)&@?@)y1qwbvj9%)qNF%S8<$}S1EaQN+e}gwq?jZ>e(LU`F0@W$a zskpzwCXrDHDO45P%g3=le)#9K7uYoGMAJuGW7PeE(|q5BI!J*r15oK^fjK> zKo|jJPcOOB!qW%R;@zd2Bf8?V^k7m zQ25GfGe{PG2(xJ*A21|_^?!%Y**zW{9q;e&9v<}v`*+_SPO16wa*MTq3hxb_8IrTZ zf5eXM2R4<4(rRqwuGxgpx#G4Vn5q~RwQZQkLgk>>@n|+ROD^+fcqF{8EL`TcLP!8A z2;`t)3)m(S1xc@gUICKSVHkoCzTXl10##WsLw4YvM9m}hpndlY_7uKMwC<=K)HUGIT6iHft#TdHvFthx44uO zPE=R3vy?%WYUm@zAfO7Yn-3t8ppHlh-F@~e3hlOHlEIt+VD%H)eXZV(`CDmv!zoDX~tf(3M2sj=R74f}w6ME>Js6~T5G zr?#K4x5Vmgak8W)z}OEx`f`CFJ>8q@3hIp5H7t+MOO^J{B5bw(snXd8-Nl6HG2vu3pl%P6`y+9qWDx_?yR74P zSP?=7q7GwwhS@~vVk1#b>Z)j*LZH%4g+y?zMzA9UGNL7`t$hC>Ob$Rjl$1ij3d65N zD;QkY@G%UUMoha^%Hxk-=UGuHVE`zXSrL;HKb+90yy!HqR@VMw7n-nTrDq@Pv5oz~ zL2|r;UnAX*;^+$qhe7PH1rKbY6K-af?8Qvgzw-&C8Cf$g1-I;zLX=;Qxb5;5jd7Z| zBw4X<>L6F&VeCvH*tFdQ=D{tM60ODZJ=lh~!bNJ%23v^POmR%B3yv`t2}xMQp@G4H zj4QN0({M{5Rng@rUL%s>p^6|~V0pzTg2JjIx;MlR(fH;`Ly=(OHU3Q7iA!R{EX{aF zu3--Kq)8YPNi0I%+VaJFy+JZ?(lktmsVcSv>v2RncgZ>3F%!D)-9}O=jq5G5Z@?Gt zb`a0#E6bu#iAk#xh00&70y%%>Vv{$l-o5_&-DY+7|9wVn+qbXZZPu)c|I^!hIvZMp zB6N$G!rE7zQVIZ??BmV8O*fL)ZWosb?XAq$Ve@r?E2Fg>{52Bfv) zSSvxNK*N(6$KV6d*~r6a`v+b9@ea4AHlpE3vUOfp@=!RPQ7cm@yf-}@HA<43HAm=D z&2|oT=m3?GpodW29k5W&ROt5dq^mj$-0nJ0$W zuwq%rWMmU>e?|(Yi6A{BGly8w7!c=^Al1316U${nW+*9zQWL283E~UF(mrXFSN5TR z0W|iNFLmQoUL?I?5&;c8nuGMNsDlD1%fKzi;)OIa;gDSw%+6%8NKEGsYpD6murkFS zMABI;IKwoYOO&JuFR+|aTWgTNZjvD&ZNv^bkRN_k2@c*42E2do-T(Brk9U7TYtcG; zh1(12l2^5`1L{t8(L)s~GB!vyt?S>ItnSR;sZx%m775BnLdqI_;Y6=bF#8;ojXGMc zLS^y%9?jo?X-X;QdBV#Ybte^{p3Q?0U{oet3=9urhKe;v+`Bdj5xWGIzLXzL(khw} za)%x+o9!wYm(>gmW~Zc$fp3AwU`r?j2(sqcwh&ao^f^XEpzf_K_&p$N1#)!462eW| z5JrQ9&J0lG5adnVpol75Y>SU?KYV<9|1(~t zc?xWYv&D6D^%0HSdCqF9sbLHjYIzNDL-~dU_OvRnHeSl_C<9U+?=fM4AVRAo?P7*# z-0t%BhS{xQ`tpqWl9D~$uBOnPLws!{#BUSb+Q70Z;H!FN+MUg=3M^BVy@Op;**jE> znfXE`p^FnGF(-*AF7)7ah3F7ckjg$&?ZIk$Bp#!NXS$di$J(FqVqj1IJR+N;OBqgEaFPFl3b#3KBQrN|xd*UyQ58Q0N`~3FZ{oD7OH}C%QiEX&W1f3%k zdvJ6-Izh&AYJ%{v^d5!HEaMmP9bh1;Rw-CL!_I1g9IdOsBU)2Ze>|8*8vXIAp}rNu zX#YIc1GSk%1bdBq_WjiWM?Gof-S6E5d65sZyfLF1DIHU^a)jM(iKT~(ay~md&rfz2 zwI$qq?IOJm<-zRamk%o+33<4MWL!h&)pLX;8}4W6z!YdK2l!Wh3lEK@U{JyH1J(Ht zf@Ta}l3+^R*|Y~Y5rEXu_&?~8AgRIvkMw3l=-C)O^%%*s99>}rb-y5&G{AcPSLOz$ z%(RS;n@qEPS{#MG3$eI<2hUT=UzVbDZ9~c_Ai7o(#zRV>GP!|6NMh5baG#prE(nKVHAR2XT)Ums*U<-V<7A5}OJf%+r128R4fXnV3h{HdE#E z-#kq!ra8gZ=&!v(S1kB)@jZ%W!!O|U3Y?%nog!R$I?_~DO(H_{6wcG!j44X;D~M}e zj9*UZd38*{bZM_QXUyov>FpHHtYQRp4HS70&dotxsg zbsqRA4EaYdpZAdtLE&!f9Tl@1UoHl$Gm|jNh*=9PoDyq?1`KYFt13Oa0n%`wFj~o3 zvw@7-7Z=Z;a9SXismP0Q`~jS55Qt&Apb!+I_Ncu%NcUuccf2lo+ac@!20_+}TR-h} zpO^WGx0tQb+`UDz$&({gPpD*^eabldCgX5F;6L&L6GM;!i^x=%Tx>Iz6u=s+yNd9+ zvgX?{^@Vi?)RhVzK)MSjj*NQp{`Gh7?ry&S{_Tgs<%jog?>~GLx&Vfvy&cfxAcbf@ z?GXEOC~5*(W>r?4rYW!62I|6KJ&9q+ zuQ2lkh|R4}#skt22I+e&9RFMn728L>LQ<)CMo@lLXoFz8-o{0Nw@~<~4W_=Xp@hYz z{LUWX9L&fwppo&?0!x8@jXP`|pHcuHJN_uUnaeXDdY}HmFT8-w4ZL3Rtvpu8A}OV1Bea2Fo|gN(f*@lC92hn6(!n?Zj-Kt3vKur`;Kjpe zyd$Cs9bMvetzjuZw!VF9SV6uA@0P-4zjC*NnGfC#k)V(HgtC(!yxZa9?pF4|gLgwD z=wsfEL7k5p_sDhVKXM`Zk6elVBbTE8$hAOQgU5aEBj<1M$oU&Qa{dO7oWH>%=Wp=H z`5QcH{%$BHKW+jCk3{D{(;vj=!6O%B_{aqrK59YESdsPdBOkSRy62;oPa_|-fM?5t z$G#@AC?2zdyyGKZ@?i7GcSNPk$2}VT;T}8ik?#mm^Kp0Fd+ek49ydK;bl*MZ$>a0> zBgYLMId1sKaR-kaclgM0M~@tL{K#==r1r=OeC!PNF@+6pwFiYHXSH=kflS1trEP*z z8(8d2>ba&^4E>T+NTZ4yTJ~IBKbYE}N z(GjFq)y0Dyof_u}jLsgUMcFmK(!L6LG95Bi54P6mA>s&PAWPau*_E{*d5d_?RXK)5 zL#c!L>C*MKa7MDQly1br(CB;m%G}C~jqziRse%YnAF5bvSPgK@W2b!57}Oa~OULYr z21-pkY5VAc?^U*-?h(4VglWt$+_$V}Cp?frMfxNA3GIHFsIEM0kEs1AE9~KxAaLMf z1**M6msP1hGszGO&_CnSv}x)X)UYjR!y6#FGT(&h?SpZ^j3}vw1I&fVP+$Y2tzMoB zHx;BX2d-+i)@y*Sla)yJZbT^PfOCmfRKWY;XP*uP-U6YRe36V_MOoqYY=SK`1_8|z zltx@Vw^A4BQhib<409ifK&&V5Q@|;T+FSI+Tu)F(6*;E%WZG%ihC z&n0!r4OcKuoxc4<+m#Lf@ctfgY|A_Ti#9P@K2Karg13x1T-%XP(i|F!^#neS7!r`)9LHD`fQF5yS9%{QAw0>G#R!AAY#| zD8TCTcgwrK;99@$v(?-GynEV{Rd3i!XwM@+LSauksX4 z*_toY)7v+0R)zn_9WqM#>(@zt zIpR-OR%JEJVpE!Zwkih^TPm;+n6{%8DC!AJz%nGI16x&6ThO4RfyWl}Vv9}-h87mTx8jDfeUv;L{hmr`oq zpc(w5>vHBF!20q^)=9CEA$JUsDAkvN5wv34t1m-QiDmdQ9+I)Z!Cyk;vjC{rn^Pum)!au}6p&wEB(Xk~P&nHJ#^(cIUu!=wI=i!fCF~C^=62X( zZVEA^(*!d9kFVdqzkBDg_W8>ccUQLqN=0r{I6v2op$lv@JJssvBYlQp-St(;P)0p{ z_a0YNtsY{&9Nd=y63vVvxpFd0^NkHZLbSwyw$%q(PXlJdu?z^zJH70KqkBul1%7HV zx&SQs5*rpQ(3$&O{LM>ztSX^c%;(Rnt$N-<{nVoT&~aKb&gb>hp)f9`}FyzJNb*THK9LvD6=lN z{SHUQaB$K8^2H+`A&#;Q#OAywGKXqblGH9H2<&M&yVRMz34c;GiI`l@SdSV}H)+$G zr+mvG%^RnOpQ_O1{3CyJ-c);3D<6*Ni$iqp8JcZC&gTEL0X--+oYpY39AmOBbH^CT zdIHBR8=p*<@WHaKcH{KN*Xq}ZDZ51p4J^0$?JYc&WtgCLqRPKdfd~A^$&z7uED<-i zvY@Qb_zIzO>nv|3R^ZNV)M)qHhv1e1)9pn|gPz}4^*dma0=0tRFg|B9ug8-~*w+JB zB>yHYYoSg|<4M`!sgObH*Px5*uoCP~aI70oUqbi>W;aps9EyH~2oI7_#Gmw!mZG2b zQxnCQ3N2m=4MH|BcL>5Ml+x^SBU=1U*hR}L7<+|*Mm^(UC~xac6dJf~))1_3>9Jrb zE^OH}WaB2r<_+ZwtWW7>Nsov$)0G4=`&qBIRrb|aYK=>!Ur8+p_*1SIYbl9DtgaCP z*wZJwple^8ELC77^*2Zc3sBn?iX4)f#1Q?gc3ae0b*edo|fZqZ$vAYW4iBCs`{`q0Y?W}=R^TGrYqxe)0Zv#@25PX_Rdd$fh-y&@oP z8$wN3(}!oC&QK_l6`{b-@|32i>FNZSmyT1-!@8uQXHjL#Oiq08u#nm|qY_{)+>pG1 zNkLO^L!l>jP%dSxC1Y%wDtHEz#bbm93@KH&?*6{)h^gkDmv% zzgQzydc&3;oE>qH9sR444E_uA!O@W2&`$teQmX4F$yEQS!O2tbsKG-B4wXRdMg0eL z3Q{_2TNk7qdm1DPaSaL0Qs`#|(}a?gVYo`rHK#tE*T4|$6UT+qcE6y1bre3V6)-;B zSqGOsGRg)>_pTXo9TurX)L`eO9MY(u-n6PVz?sKzGPYCjC{}l?tZ_O<^x)QPfEJLbZ^E?s;2QhOt>)kp ztdfrJbn!4#M-=jA1wxCH^IhBkYIZ1j!ki)t;Fa>x_#~&b4WKS)$Cg31vj_QA-6M2y zp>AMQl~;obB1op0Or#$+s}b@FYKU2KQH^@qSJ9&*;Z``Ot;1!>jdV((H6tMnpugcY zQiNt_SCdnfYCx9D?Q*uB?7aT|`;X85{`wu>^Y0(te*YBF(>tH;KYm8ngLO5s_nW60 z!N0udDWX&Vj<_pahpXMlL$${F@d5@2~+Gt9Tamr%sTW)E^-_yWGt01>cD zbyEaK#j}8Buo_gMpGT}haFmJ=(CQ}3f?M3`hQpqvo~mSbj?ouUR9k)i^tZeB-%Fdx z6i0e>F)Uavo1^fyLAoP5m?(yE+$%pd7u+vUiO1u;`Lq`g1Qq{HwqNfLpAT&=op{Q0 zy-g^0pk9T~NP44L*h0mr1kgy^c@z&}1bAUwQ6geFB*~$CoFenHe2fqiiGO4aD5`sL z_xHPZ;}7qDc>5P=y5bi)1n`MWR6qn%b3#bE8N4ha-QLFUXOas=Kqe!Q5OAix{lh{= zA`U8&44&Xyh*(Oo3)YF*rRv8!83a}(%Ofb`$nChY;U>XBrbhwuEUFaOsXvtB$9R0ejuGi^pF%kP_BJ}UP$9S1*CkOuLQ5%PphCN3|> z=&y@3I2XP82S*Bu(?je5^gzv4Z0&)XMv(nZu0hIZ;+8CAKOhQ)E3W1nv#-0$yK9UZ zkSuS%K4NpdoIfxM>L$u}%bNedD0|vN_wf;WT2q^3Qcp|Feylb*s_epE`Lfrco||^=g$#B(7+;ibw=ll)ag1(FpYE={h%V6kI?UI+D4MTDB|Q0{ zDR$H_`#4+w!Ev@e;HTDdO`#VC#uM}m*u@@ZTK6mXJHSBUqy%bnUQizb3LyT?22KC% zCQBYggJuU*f)!adrWi~B++DT2+-ssqqbkh*8>bX^MxhN8Xgm#19W%RCVe>bp0r{(; zA|eoj`$NC%nptT9=3>w(jFU(??vLb$s(#(QN-jl3~aew|QD zSoiWbsr1kRW0!qzwo4BQTCULB^Rbh~A=o|M9M(iGiM8!&q1abMFA4BIkD05Pl(pTk zkSbBq$SD6YUm)w2i%T>p!wbTntM{U;C5ycT7dGhd+ScV*(;9UwcHF*FvOrR+bVlR! ziJ~CLmh++_$caK=JDdFYOt#ef%aEnavR*YHexWfUdpR%EHD3-z9)Q~_)P>_Hs&181lY|ILdb&{w zD~3R2%Tn@9D;y*x0g*J0(9KqMo(39~NS89gCqW8G{$_}|)_T(dSjxB70B}=zVSpe; z2!d1yVdGcT3b7l4Tm7p!z>V=p_2Y0K?E&Tzq`TD5fUhEf`W|$j2*kn8!pTj+L zd$PH@9rcE&mchLT9xF`~NY&qUMKhQsy2og`<7VtA$KsI?2-pgX!`qRbjcW5uOQ!p` zY>_Y_&o092K_j6(=Jb4d1m`DyjtBT%2rrN=w{S9BGVRDo8Ob2Ml3OveU2-S?lEfa4 z+=6*I0=Ldq%y}y2nNKO>ixMGn&=&Js1c}7KNm{NPzxW1~uX6Rnh0%J5L|V5dihU=` zBFJkYA8W+0;Ik}_LkxlbGdPpo&?|2m?7SvlG+Zc5&I^F-TETg24{)lE?wkI~T+;3V zxN>9gqg9X^_9V0n-_`+5I>xY{Wk~$g9VrNipAIOe6qCnLo3hzP zv@u9nsbyg8DE{9J4JQ9FrUfWV^pCN&Az!SKJBE?OIZZ?rN*cb7mVyeFkWFn>61I7d z6`-5kRLY-&$)Z(5SZHU$hNpx2f##-L(>i=e(=wp0o~pICgYu@5nq1@|Dl_2Wg+65?S!oPTJ2aF(iONWO{KFr5sD8>UUl3%FdWhqvlb28b zNa>PY#e4t9eyo;ghk%c}X8WpmgMX78YLYi>>+Eu04EhmuD!Cj%w5xLpNO44(j6wt* z34-Axw*9QeLxSk)p{;ufrqMPvL|;@a>aWj1Fwf@~h?zd0O=0<%tmYTjin{pv5Yq~g zW(qu)B2#0mh-iT7@t9-pFMY!KR%_`K%@;lI=*zQ&&Vev+uWEywRdOax(+5 zy#doBCHAxDGoft?<5Rp5qYd7-_b9zUl}bY>qQ+BMJc^NbpOcVx+NyDJC~R^ z3-oTO7H|3iHr8=gM1zVwW&$JoXo@QhnfgUw>m_7@tt^ z%r4V)vd+2{Mj-&;KIV0bB})S5>4and!A@C)fE?`MBxY_~EPNAGBI%%c4|~$Yv012x z%Q|EeGMX;WA)P=l@F4hb!bva|@Stg&3h&=08R8Qhxc@(^$4k~ z?$>O*=Q}ev8v;lxK|F^JEis;pI-(da1Tcz5w5x)`$_bkcZb36+A`j3ohr&h|f*|6x z`*cP@M#oN;YP4vgQ%>ZN!-*9{k#9bIdVSyf-@DIx|GSU>557TVrf+`#@f()A!G$c;^vw)Mddjoj zHwMu?db$e+q4bSUbBf_Pw&~4>npW=l$zpd2aRxR1y;^xZVUtfZ$TlsYr|P>A)Yj*U zJI4kIkFp2lcE5O2ZZ`-GNyJh~V`i<) zpl#mF&=o$j<0LOs-ZfWslBv#OhMxAUJ{P!#yWB`CpUFcYN~*jly4u<^3^BZ6+@~}Q9#D{3D6~`xIBs*H4 z0R8=fR0@Zs@T>|(&jieJLW@8eL&l81?MRviP~YH^9GKrp4sl8uXdx;_V{Jpg9;{k5 z#hP3h8Ut7t(cVglQ{_H!#?pQ`p|ofPDR%In5IZO`tn&BFRk(%8;qGnt6BP`ejp=RJ za2ZYu@y*bf~gmHD!%o~dk`$!0BwfjCz zkb$R5m*{a^Mq+_?^5!eoY0_Xazh;kC@*~FK4}Y45zfj z5(HGAqkIyUpRv{Fx5YD~=!}O0wBryxk#hr#1gW&Cp}bJ3l^#{MXV{k`=ex(~mUO>O zXVW=aykm)ddDG<{g4aDJzY#qwC!nOyr&Tmu3LSBfhG(9(0D09|?XP5bo*`>uwjLvfUnL(`w=4}hxx%h1JcA(U zlw=w5?us1Tf~p%S+;iEWkV2oZ7FZ9qvluLa0;hUA&d}vi8jlw1YeYBA#{IOH@YB98 z#xX%R6d9$OAtsi*Pv!>CF2ddZ=fHjR{!p{Hg^X-EYpGqoCZdGgC6`%vxrYis^Nt2? z=xgLw@&WDl2hST`pe)itUO*@WWq)sO8%~H|*z`c&g1MYA8B)3=Z}|z0a*CN&&&wuB zoi$pA1*8y5mcK-d4MPkeDPs5P7ouh_Nlw%PkzSk0%LN6{Z~MEbA5$Fm`W((PG+K~Z zF;!$Hdfj4@Byv+&+rimjI5osaF>KkqYmnAHs)@kiUmkfx{Iyt;pV|M}DA0%@)N7oT5$yubT6{rv8oN*Z#v69ZA6 z>jGJ({TH-GPL>Q+2_96`wo8qW^$rk5*>?+0_GGZ)>+$WN05chDb#BeEtPr)mvm%gO z6s}An@^vG0NiPlUQ})n;nzoX?!X3K@NJOUaEp>x}G=4NFfYh|+5IuJM;p5%u-FKh= z0>6efw(pC`xVMeb4MY}6{3h?G@Wb6}U(y0%JQ16BUUxpM0J=pom!n+3$#dJ++FQh} z9IKv*T4$`fQ?>A>lS{nQ4FtjS=Pa7I<$D^V{B`O|#l8hW=dcA;x>(ps#YAH2WV~8= zIb%=$6!-4r_6>+gDD5lCLdrkz8noFp*qT{O(Gm-u?-YfPF!>_2hro%Tb|tYrLG_JT zgkr99RR^u0(snAaG}?CN_NOgra($r&+3b1LPsuqN90?)K+?5k?`#I=830n-8 ziQs%Yh(4F?b}V*QgUCjTFUV`X$mNp+I+&dmvnC~E1}OthJTsj8fmW7OKUK>H?G;{9 zF-_cHAr=t>uWE?BF}8|DGJEO<>YPd`ur016f z$Hy{-e*^LTdg2RPodbG^DI#wX`ool&wy(e$``LAp`p{?^eVw%CnNWF{PbF>I*7XVG zmgV|zyH^Q}A~dbDT8F{}ph^ytY4D#AVR(5h!l=K|aDbNM_+%tT9PIAzAM2Z`u#Ld( zA!jdVXUjRFYKQ?aijjuTU2;@OFjx9%ysDc;K%C(8FozBGhApj4#2O?blde?nSNO%# ze|iCB!kZH5@^Z{)7xH8+fMKNBO1iLzAZ7CtCJ?kYSqVA}Ns#pb;f!SFAaEX5rjRyN z7v*q9BPp6Ks)u+7q$xp>9$i=vTt3p`;)@uN%}Nx}bVAe9Q)z-=GYp1w8N#v7)gX_O z%r+K2>tcfFaZ*drQHl9DDLPyrP6sI%P^|b@HmTA5etFyp-$GYC6m}vX6%bOGf6A0& z;>BHzX5&AAo5+R7Aj)+BDjvTWstCe z%g!7rM)I$oXKgeP_XxF1B;;a$bd|t>xG0E5%FviBX}-+dDXz~LIc4)uhS3_aO-Bjm z@(v!KGo&HpbR;!_TFnYlF@pPmqoz7QS41sO+tiT!*%istRMU~}zZfg_%S3Q`&B5v| zji3oQz5BtqKmBM-O7+GRJ@hK$6f&SX$2#;2d>+N2C6w9t5?|}#wWd`KA;FDY zn$z!mP1=vQNV35#%3+$TqHWA+eUNu&!52?eUKDwS~^)AvpYsDnlM#gnCkDB0(xuF$$r{@X%HMUo<~-Ee}hGmtk{^w6+No+5_qpreUH+hrIZ* zSJ*<3^A6*@P!g)Qn6GAxfS_o*Bhx$s95~8L zcr!=(?)CRSk6*ug_ucC^e~t7&i?&Q7PG8@@&ZFY6XT?v0P@C^R{4^YV_x2u}5pzHs z=j>3%@=QetEtbmMSFEmBB}`OR}FfXc$qNToeCN566rEedO+-R&IARLiKBBc6Z+yO>o8>v2(&;5y>blF1)FO6)6!^* z&!ypVz=H!LrD7fxm991G0_5b1i}~o3yN7=;<8)HNNlTX!96>Okl;5I% zk#vq5A>4C+I6XitiInvz-ANnT48kytB*N$Wss=hH(0Q!Y^OX$9;Ip*gi%fM6(ihumqz*J?HC&f#fprnZ@?20W?F4&L1!~NxN}@eP&a7ry zYs3?iy5=a;B25an1?G|TD~cW!mZM)i>@vJe16WH_L)i{WK&)@(O5)06^f69eE)j55 zw^gkG8VXjapc3R_jt8ELC@VU**g0@mTP@_5>%1a@`C+)+f*jh!qY0ADOlijYBW^wKL>IEEl@VOR~)1Z2|d zbt0-#Dj>VDJcM0PYy_R!Xt5FG=%Ey?3z5P)&yGSMKj7Oc#jlLB{PU9$@`qj3hakk+~0Y3pD7(e7R;m8HCc=oF+3wLX+UU z{`BeYPds9u5ew%uo!ZNH4Rs-axrVtJCZr zr!Go)*KDUf3HJ((|F(x<$JyfCH^ZkNKYYAr1mP0|Fid9`FcetwS^o*i4V(ihV1ln1 zO94oONaY|bZ*h0ugU^8RsFcI!A?o^+`mr#GgwMZ~h+tR(Yjza8^|cjLtDh##^mWdt zB=4s1O?_VDm2m)Shi-q1`NarTT3)62HkQQdJpebm5{%b#US$?+^Br>$ca;N~Qq&qA z{AL~}GmRY?W+=t2zQqX}b`OLNM${2Gv_^|^c?S-w2F`g{)fj0Qc%c* z$AmPh2_Cqfkej6|%Q6*6GaVws^4mgRwd_hPEJFjFUul{U<8(pu!O!=1D8DTTOz4IS zMDnSZo-?TqF;Olp5H??*5q>**K7l_-)18NjAQq41VmUtVal6;2G)MORphzq=;2CwC z8fMi2yRlDJh>n8bD?Z~~i`tiML-{u4JgZCQ=0GZ?;uwXtsBrKlc=XcFy zj!l*0l%tu_d@jyu@C8iz7PoUv|Z#07`SKgcOj8?Hyu7>-b??bh&+SjZG7#-@4Y7!*8PkFLfjY~z3dTs4ZS z0Drq)zf!FxifQ;QM8mU;93Zl1XMul|Q)54H3&F1DcB}?vHHb&osTEZlbUMFfNevUd zv89kcaDL;9rZGSLL!`y%_ae40~ED;FZo}_Dqk2xTW@$-Muv& zq`B4(%_$!fMob95;@~iQ z2Jq9Smy}3dN3jOww_rs65-(AHX|B>1*Tt~+Mt*METUn@a4#iRAI!N3 z^~sRD&(l7tEhl@3vrAd+!rYS;3v;g86cl)st0;~sIN7q(5Fvvk47KnK^$wooOjZaS zXb_|StU(N3br`hFwuaR`;0ddHEIz*d@bT^a&$$ACm4AXP34iFt&ipfC@y369HbW(J z{Vm-kO1lWZWCyqk2V}bDDI#*J9uP>(wYxA$4tNKlKAwSw#!sf0Ln->^^mI0d`@w2Z z_}SRn7tm-bBX)2JouIh_OCuU5G~L;;6|y`@TMjO@r_`~f)&wM5Yr&-%j=}Jo%f7-) zVY2nA{|Q&Loew*`0uIuvaCp)?hwWI*0U%a{dCS}XRrX6en7kg?wY)T zDzfs0ix=W7!hO&}XLKDT2>=hK?xcd$BAcril-Or;UI5IkM3BZU5`B)pGhpU{A-|Cvyy%n07*Hx zB-gm%yifRA#)4u!ZJpMO@Cp|ipbh&GqRlQUmjvnMS5bXi7&R{T5F|%*$VmtX9PfN# zN?bWGV)+7djp*W|&Nw><38VS0;G5t#40$M6#q*`H*EF}qb|;#qm$+s1&`#5LCG^HC zB^`+q*n&$Hn4r+-csxYmc;Y0ftSMn$&Fa#01O@z}*cCePAl_NqASg1!im|kz`be5| zXI9M#-5L%hp@w5yLJ7CaOIQLCcw&7*=mGO%jmeJshrIg8O@Lef@c0+H_5Cstl@#KF zBEe0z89@3p@nEK2L%VjjxRT(?{6qIRUtM32wRMo$uu!}e6_s=Jhub#XcDU#Fc$D{{ z?=lAVg0s`*%Xsga2MC|)0eXK}opMMGgW?ip!>(=w#i16y$O{x4R7pu0%sg5mf0=9w z^3>w=RO)2lJ`rM%Bx-w+Sp>1s`zrgPIc`KTgP}*Un$6sV-4Vq26I8!l(5rGbS@jPO zSUS1bNvt}7@X<8WqOe+bfB=FRsInAGL9nH`b;y|XmOx&)`X(=W9p|24=fh75*9S*+aBTwDQaO}fHtFvcvLzNLhB_evWgipIhRwQL?>5NwVYlS%95c$;vi|w7+Do0H!z7hz9J?kDFfLK@5tkVT-!)*AC@-5>iNJ4K6Si= zYV(r|Xb$N4!u1B~`LRA6Q#3w@`w+fb?{vhxkyTJU$&EHst1rpOSoqq}tRyk826nq5 z`ju;heb|JE`hawQ@(SffHx^Z!!|oJg%Ok|s?UZrEw10%dpCe9;Qf;N$G}YA!>hErf482(>zi+m4s7w&nRXLFO;FHah((sJ?GO^;&CFB*>6S z2248NP3&dzcXan#efa$G%^hVd@fg(t^_RuDDCc;7M~NcK`v8{juSAr_P5 z4E>Wcl(chSMX_ZjEg%neCZCF@s>gydV}?LT{#Pk<(u8L@(-2rZ?zKDI`5V~ zVud0Cdd&y{%q0;=?h9!0UB21^(+u&YKzC1Ge*%)A0=%$j16aSMQSYd2EL{B9)l5j(?LTHgVW@>y_LDE7n zaczgw7I+N~p*9+~A>Tnsx&Gh+iU8E#QeTeK!f(j3JXTQRwJ{6v9fwon;-{izfXGw` z(!eRFlzeJVBj}KHJK@gGfq%=%

RASOU}&Hv6FexCjyx+*g|oVowEqz(a@8^)*ki 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∾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 z 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

7PUE}}CU$%p=j%u2KlnK(!1V%?hEWG8GW%n*WI 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

-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 z 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 Ld6>i$U+;ed(g9&* literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.su new file mode 100644 index 0000000..131741d --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.su @@ -0,0 +1,34 @@ +../Drivers/CMSIS/Include/core_cm3.h:1480:22:__NVIC_SetPriorityGrouping 24 static +../Drivers/CMSIS/Include/core_cm3.h:1499:26:__NVIC_GetPriorityGrouping 4 static +../Drivers/CMSIS/Include/core_cm3.h:1511:22:__NVIC_EnableIRQ 16 static +../Drivers/CMSIS/Include/core_cm3.h:1547:22:__NVIC_DisableIRQ 16 static,ignoring_inline_asm +../Drivers/CMSIS/Include/core_cm3.h:1566:26:__NVIC_GetPendingIRQ 16 static +../Drivers/CMSIS/Include/core_cm3.h:1585:22:__NVIC_SetPendingIRQ 16 static +../Drivers/CMSIS/Include/core_cm3.h:1600:22:__NVIC_ClearPendingIRQ 16 static +../Drivers/CMSIS/Include/core_cm3.h:1617:26:__NVIC_GetActive 16 static +../Drivers/CMSIS/Include/core_cm3.h:1639:22:__NVIC_SetPriority 16 static +../Drivers/CMSIS/Include/core_cm3.h:1661:26:__NVIC_GetPriority 16 static +../Drivers/CMSIS/Include/core_cm3.h:1686:26:NVIC_EncodePriority 40 static +../Drivers/CMSIS/Include/core_cm3.h:1713:22:NVIC_DecodePriority 40 static +../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 4 static,ignoring_inline_asm +../Drivers/CMSIS/Include/core_cm3.h:1834:26:SysTick_Config 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:168:6:HAL_NVIC_SetPriorityGrouping 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:190:6:HAL_NVIC_SetPriority 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:212:6:HAL_NVIC_EnableIRQ 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:228:6:HAL_NVIC_DisableIRQ 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:241:6:HAL_NVIC_SystemReset 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:254:10:HAL_SYSTICK_Config 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:290:6:HAL_MPU_Enable 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:304:6:HAL_MPU_Disable 4 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:317:6:HAL_MPU_EnableRegion 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:333:6:HAL_MPU_DisableRegion 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:351:6:HAL_MPU_ConfigRegion 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:389:10:HAL_NVIC_GetPriorityGrouping 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:416:6:HAL_NVIC_GetPriority 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:431:6:HAL_NVIC_SetPendingIRQ 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:446:10:HAL_NVIC_GetPendingIRQ 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:459:6:HAL_NVIC_ClearPendingIRQ 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:473:10:HAL_NVIC_GetActive 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:487:6:HAL_SYSTICK_CLKSourceConfig 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:505:6:HAL_SYSTICK_IRQHandler 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c:514:13:HAL_SYSTICK_Callback 4 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.cyclo new file mode 100644 index 0000000..7a3ffe2 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.cyclo @@ -0,0 +1,13 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:144:19:HAL_DMA_Init 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:223:19:HAL_DMA_DeInit 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:315:19:HAL_DMA_Start 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:358:19:HAL_DMA_Start_IT 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:413:19:HAL_DMA_Abort 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:454:19:HAL_DMA_Abort_IT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:499:19:HAL_DMA_PollForTransfer 10 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:600:6:HAL_DMA_IRQHandler 12 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:697:19:HAL_DMA_RegisterCallback 7 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:748:19:HAL_DMA_UnRegisterCallback 8 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:826:22:HAL_DMA_GetState 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:838:10:HAL_DMA_GetError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c:864:13:DMA_SetConfig 2 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.d new file mode 100644 index 0000000..a4a60dd --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o new file mode 100644 index 0000000000000000000000000000000000000000..c9cb813d447bebd2fe84ba1a505f8345df2894d8 GIT binary patch literal 717096 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%0D5}13XWJ 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 }X$T}M_BFtfNBQvhtP?4CltafQXd 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

Qu! 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

`YER3!c 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.su new file mode 100644 index 0000000..60ab396 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.su @@ -0,0 +1,9 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:142:19:HAL_EXTI_SetConfigLine 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:237:19:HAL_EXTI_GetConfigLine 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:316:19:HAL_EXTI_ClearConfigLine 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:369:19:HAL_EXTI_RegisterCallback 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:394:19:HAL_EXTI_GetHandle 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:434:6:HAL_EXTI_IRQHandler 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:466:10:HAL_EXTI_GetPending 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:495:6:HAL_EXTI_ClearPending 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c:516:6:HAL_EXTI_GenerateSWI 24 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.cyclo new file mode 100644 index 0000000..f6e8b03 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.cyclo @@ -0,0 +1,13 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:229:19:HAL_FLASH_Program 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:271:19:HAL_FLASH_Program_IT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:302:6:HAL_FLASH_IRQHandler 12 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:417:13:HAL_FLASH_EndOfOperationCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:434:13:HAL_FLASH_OperationErrorCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:467:19:HAL_FLASH_Unlock 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:502:19:HAL_FLASH_Lock 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:514:19:HAL_FLASH_OB_Unlock 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:550:19:HAL_FLASH_OB_Lock 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:563:19:HAL_FLASH_OB_Launch 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:595:10:HAL_FLASH_GetError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:617:19:FLASH_WaitForLastOperation 11 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:668:13:FLASH_SetErrorCode 6 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.d new file mode 100644 index 0000000..ff081a7 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o new file mode 100644 index 0000000000000000000000000000000000000000..adfb1fda02105583358f844016524b335853b6c5 GIT binary patch literal 714792 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

# zK7oR>+=DPz!wCT=Ast>2xpK!P=0#|(%)fF}8IF$3Zj^NtGAUQR{tGG!uC6r{eTtm9 z{U+6|K>53q4m}te?xz!zum~TY*`@HsV@$ z3SKH9dJUeS62UU6zFOJoQUWzvqPgjvEdw6Jvl8OMIJ7Nre*9bBJwL(RdwGzaBIOA0 zzr4Bb6~BdHcnbVx69}D9z0KVP8x>dE4AU+lxHB?9Dx)vdF#!VLsAZ9a3Z46R+K*9G zTPeM8Ak%;%>)75xb9fURsx$sK-KVGjXAEfU5VGY6KT9@k3k==~l3axxJp zJeKPrCJX@&vl|hSCHd~3h4soi)1BgdP0E3gZoRzJg9aVWlb~-I8BR79aQ*31t>`ce z(@35uS!XH9c0h~obFP!jUiiHH@uplBu;M~#YR$)Ta?ZCPu z6k$s+k&DhXKWJ2>-Q}V)sQGd@xaj}x@T9CWXu255+77Rbo^(2#wt3w=@ zo=HWk2vbn7<|Q%~yp#enCoA>Vs=1(GNNP=l2Q$J;Br5l~$ZrLC9ANro@E&UjO(FQ3 z$ieGM7juiAbPsqTvoxsE8fBO9QAHWU9aMkjBN6o?3c=M6D#8*|7wlTGVm*f>A5AWy ztE3~u7akj*5BH9@I!lL|O3MLYv_8Y0 zW+2YH*bt@)6kk+!nx`SIb)yGKx_s$%S4QN-u|`)_)8AKw2NwOV)j zbWOCkrP-snIQY+J<&P|3`$x)yJx)?S)FN?x=>z{zi zA#?yqk*ur@s)O1waL>(dCV8_WeH3z!Oo5n%afkIg!*pZjpsq%QIlAfXx4=3f>dk* z0g@gMmrfN$Dlit_E(SGngKLUaE)M4RB(7RE9hZz2hg>@nKlSBSQnTCELz``qIk9)4 z>X8!`$m7^kC=MyAq6{Rd;MJ61RsVnH-mFKmG(8WCnI3Yu&4?V4;v$I(wy8mNv%45^ zA~G_P!x$=S(#Bi<*BY})-uy0j%WymK`(%OqkkaCFkt-xU-`nY zePP&FhW~-D?R&%W^E~hSt>;8mHzflupsM10?|07m&bPe#f>8cVp-OsY__c;sN)BK) zk~ItUU_@}ZAhUEV2XErB#8yY~(h=uL=(YCRN!9i;>4hetXpxKW zTQdg4Sc0ttGs{Sn^E3Ei?OwtCt3P%v&yWg+8T@EI_ERUVO(88Iamkl|-z0`cg77|U zn$EBf2WbrwG6u)%6`n)jAJs;)DzjbDKE+Ej2Jj+B*(fFb@NjCDbbDcw^XsCOj#g-DrlKov;c zBQDnVI{&y|H|TV+kuJnVrNS_nw##wZP4D3>g@o8hi~m*j>d5vgvHI!GL3pd945GvU z(TltaYwk`_dh&^1VWHNJF1=`&Jzrid9h;6s;)?NugH0RvZD+eNUt28o_VN=uzKVd6 zDhuB<>rgT)hAHMoB_F8hBXEN5!W1vHJ_+F?D(_(L7%VF$qYq~(=(kwttVIZDo{ih_ zd{H?@8A23SgsRTMj((xnDd!&c{0`Zfzj7W#5^~B5FUf8F0LUVOHq4GSwSIuZ=57n|sIuNdDOZ&>m#eDm&h! z0Xe7#e0_lgIUr{r!ATGEs*E=xLERwYgJ>VtB9NEmREw(^lB)=FmQ=G9TwfptA+vD- z&v8vd@(8e+9)SRl7fqNMq0oG$IO}W?-PofwwCFXy@Q8wk_RAGxOES`T;ZC&RT!2N6 zgPT1Mf)N55?P=&^J}{F~eG*+{&EWcW52l0DoqvS_Z}f$syb=ud)wTAT;iGY)f4<+` z5ZD51>JqhbQ6rOc3ss<$U9oIERDo1?**#QuaWSLQp1(LPS`O4}OVMmRm_jrg!`eW* zzpRjwYjm7~-7Rc|oCAt5Jv5#^)belzkk)b7_*zIX!IBpm-Sm~FS;|Ui7LJ_wM$LM` zrsh0n8>&&sKhvr=9iO-~?nu$oM!=!O3=UL|inn2o6|>{-!V|O{Z*~UTz)YIf?r!aN zERFR6sxwsLi{;a*DT**#tC-+;xk(*VmfqMJwEIXhaa266<7`;Pb)0$bSX&T_)3d}A zan;~IT#hA&Xe1n5WQ(95(%0n;8VNT#O%j(7@k}qEfol zIsqv}M&}Vf_)E{cdIRNPJ7BSa-VJFX*3_GD?HC_Gy4(^2SU`I_r?C~rnyx)%RMS_` zp5)7i^mu=Ws1?IoS(Zfv7&u5QOdxK19Z6j9iM4NB||K#;XKBxj=OLo#7OT+PY^^Ms71-qrk>XK9j)$ zTKh8fx}71h`8YdAl0tk7Eop%?Y+wjh%m%Bg zi#YelaHq5bCn<>9N=ZO#nE7NOerVM6%r$H=JCiyD8G&HL_1NvAk;}l`lfe}r_$$NC zK^}#c^~}nj5&Q~baMHNi6#=gsT0IWt2!GCSH0wgT6xp@5{Nu2VR8 zUGs`sZrP^hrX6t8-d(Xb@1h|lwCf5hCF05^AtTKvoWK6;^Ovhnub#YIp}IK(`7c7+b8pM<&rJu*v+wnb zys7NZP}5MI2z&f{;Q#FVtPfrANovWsrNa9KvjMqed5^27;5gG-xPoM?8xYm)z3LYEO%Oq4S2vi_-9$Vk7FN zY6>U195hwVsC3L2C<;$cP;79-;u6RP^GE!SqO}-oz{S{>SSk{+R0_=6=;xE~xEOwx zg#k%M=k~(`%wz!bfX2qB&f)TV{xKN`r1dy~`@AG7mv&u87)o;V^#rfn!C9rWvGep5 zGp<2JvV68$eSY-fcBO(Zt~2QXmz&NDa96u7v}!)=pynBE{p%sGF<94;ejJc{Gy|jfO-`@ zwXL%F;`|8CC&nWsp$_5&omQf?g($viEAe5OJF2nVQBGVX^mysTzyp*Zjmh5bnlEgY z<}S?`;XVRb8o{2qUW^;fbXuEGL@h{y%h{-adNT)uSz4Sy`%4j7X*1l)?{;`ew0R%U z>PIx>m)%Uj#hX<~r&1kwjk zPmNmJ_~1t;$2jq>RrdYXhU%u8t9LIYO;=kctQ?u#MN0~mqZw?uM}5w$v6R-J1Eo^D zAc#ezp$CS6xb3$Smxfdo=iHS*C6uPXL;-IcosyL~oeiWnC>s%ju1R+DP}0ZKJcKfT zm}ex&i3;C?vDJ3UlIDPU9Z#Kbvb!T%(iqcfKnnW`X~{c^f++X~YSBPcL1g97pmOQK zxe^Lgv-A<+7TVN`#8%|hDZX+hK}>~6id>@NLi?6Tsch^O87@{|eEyQYKR}N5jL|F5JM!82iC4B*kMgK+sDrfZo;`W{U_Mi@D*2Yl|ph>^k(&JYsx$&;KHU72`hWL)3+a9mgYa33@9&7}}8ON^LE zTVvBN^K)};gO7#xc6V?D8*B;?xpK3uA=nIP#~4q;8saoF100%w0I9n4DxQ#EPORi! zDC=o#g4#v=Z78~iy;^<-5PT&pWZIsAiH3QLp&__az%Srx@sN%ceP0e`V|s+hJwM_8 z<&=G5q9!~0wygtS1AV~$4GlrQSa9aY9DGzQCt`!i+93^7$!-z(!mIXmKRf)Mb9dE40avZCUW^F^KnblQA4#Ha`ihyCX%zLA2no)IQbkFH&@Ip`P`6iA7yc4ViFe2H3<9P%73i?7OHsmqkZ>hsG_755rnalm{g~b!x zVF253iJxNj15~Q##ODo$MueqpSA$&ytzd!|X5@xs9Ek;S|u9l8Jq7XBj$n$N2%2o`Xp#9e7Sx5ei5om_nZjTmA9I1kyOjVdvM zG?Up0Xul+Geh2lwV2HaTEk{}2q=&heJ68W<=j>ns<+QoI#|ABnFb7XOkvm8P>)=p* zp+7_Tp@D~FN{Y7AgSGm&0}iJEonzWI4ySg6o0)$w^;8Fh%sIp0jl!4jE&#=Li59K- zzOt)Dr!Bzl^sO5rqbSuC*oAQhxm==WWQt2ioZk}+JOu7Ug-jOe!A9)> z&7(_1UeSfILqX|MN=w=o{k?O0Ru}ou_ne6 zl_R*uQMYgE0jB5*ua6*YG{b#hM!I}`mHdPNbtTU%^TP?4mi$7a!yyR%?HjVXxU;*B zU3G;m2?jVVj5;uwp~8-(prpX$v?g$$Rf(O{&)6+1?{JnAfm*uJ9`pNxxuoTG2LW{4N%^3I&r-%ZYO%gFpl9p+M6N6kf85+wx15E)c)wg{TKifGJd=7cL zz*mU!zAtW1MZ}@LW*R--KyHzKfT-&RE^V<~(q}B{xbOXS^%$&#IDS}pEWseZJ>#q@ zpgvMFlcJPe+RYj?f3_G$ATVda`_zml%|LLXLE*r&?V6n{Kzd~%2_!AA#0JyyO2wy& zO_iR{c{S|u$hYygjR6xz4HpPF)RsbEPRp|?(C%w@(zqPy@mpzq;s208Qw-E#lNjIF zQ=U?CO-I+yUq5~I>Ka>)_PDxP1C!uqURiDS6>Cy}q;jOM19ZA~(W=lxBL}Zg1SH{u zNt?KXJd+RYr7ZMQZiucP_CTzsC)$EvZyp`UU&ed}Dmv4{*{OR>GhFm>=_1V+cL=x>@IXDEk zvM%qipkBVM44`kK=(G5EPSMBz^O?EBys0H)Afv;b$N#;%M4myB~(=iwU*VS}tk^@i^K$e{e z6UhxSz5gXrOZDyO6ikbR*A++u5LI#^RD9JM!c}+C%`u_` zYVi31%m%*QVmoSHDB%*=VcY=64q3)Y9MFP-mkj9$nKVXB>=6y|Rq;b~FB8G0>WBWA zA|I@(AL6(fIv*hxD;&ls#wL(HMJm4sXICf;osLY$ct_Av z0TsmX+rq~@uizF$g712|mLL)EW)lclv@~)cU>dc@eDQ-!%>5TYT72=C?xP;1VDDYR z)ZLE1`z!Bn=Z+*Hg{&ke_>Pc9xo}$B?hBBf8#j}XaYD;J{86AI>-y;-Ib+57H*P-T z#n2}5AXbXFo9Q2s6F|0zDufC(4kKJoH`KHs&N_0loi%AT`1MNXN4J?W{$;Si5=Vng zp+w(gbet1SlvapFsA{21pNK8y2C5*WT^ze(1^BX93$D|_qO+&Ym8+L({}NK92+}8W zgW5L&4O}SUAGLrx{a^%c=!prV1bH1rGF@H$==vwCE9OSy-^sY|RpA2n4@6AgEG3%B%0XSPv@qBWcj}X@?D<+Jnx}zjffj;>HN_FYMN?A{3x`c zx=D(t!l~f^{s`a>u){M?2Rb$IsE$-4bfwUv z=t6-6OOi{2H)!xP#oLFQcVVyY4sI@F#pT%vT#irA1LaZXL1b1*^Z~9*$ftooMq`!a z!jv}%6;c5&!BD&`jibI*=;B5sV1?|Oz4*;WqY6-(=qTGXZh0mTEhLpGft3NXe~%%< z+)AKhsIqzb=xF}p`ID!gN?5TrYXF3M%#>7CplR^&=I-f-oBL!%gDM5h-0!*JuvZ(rDAgGEC33u4sw7|N_H;~R_ zLgVEQa-hv82?5g%OL4kis#vMk6W0xgEKsu6xx@105UnIlkn&PLDx3(ok{L+vP6rq` z%!sJ-^+^GSjRR{!7OZCtlt$r91C>j9Fl1IHiOw0$7Etd6Rwl0r8U6s}yDgueQtr{J zA+@7})QA~~^cl9QH9>{G!OMYa%L9$ze~i=+sO1Nrohi%GG1!BMGPQwCuY+_+B^fAT z`U(!p9D&R*vpk$VS|B0o5-J((?i^^%z01p;J<@&r7quIX*b0zdP#!2`7c3i)zGIvM z*r0l+u$${Dv}aW|&R}{dR|NDFK3x6ulOMa5B@3|z#E^3yA?#QW_d<U+Pe+&)U3qzOizs3?jZA`%=i6!Fl2F~WK>tri{?WLFjpufPi z6Gd{{Su8;b2ocB>no#JO&kmZ3M1$O|`O)ny;J_}V;=5~iTn990Hk!tExTzbtI#8`4 zbt{}zy-tn%kA_wH%4|DhC2DB2WuQW9svp1$tsuWlqM$1NL0&&Z{`tMK#8Uyn2O81u zCLt}D8 zG|Mv|6K>uHVPD!fc_1<`1a1|wKeUO{&2l3di2TTR^|0NSCws9Rnq=&P5n31kDqPR? zf;_YcSjhazvURQ?#er@GSXxqj6g~1Y5kVM8I~uhxuzk1G*uu} z3j$Bl=QRD)4We+OZvYzJZbBLy+DSf|UG9M33#Z0Q-I-6QJYxGOWDjb&i7|$3_3ra9WDCrUYzfKhzziccTFa(PX&;wCo`!XGXcmM zW1Ly+ii}fMgH5%uAE&K(j_n$46woh_R{sHRw=)x)gS?N^hW?%bE^HVnj0XjOQ-Smj zLw?lQfXlS!OW&6H3`KMq_!RD5=v&k3+0Mr!n4icVqDl`s@M4B`;gSNQCiqmgneG<@ zt~xk>7t%|3cA|LcyMU^C@NOr&{d<2+wnX-MT(-GGjF8MBWk2zDN!UI=^OU$mBjnyq zpo5bK+$MPs$)d21rT=g&?iX<&BHHcptEMZ1t^M#&?!m6okV@P(1QWFnna$lKdfz24 zUwr!V`ZGgbP%fGGG$vQdP(xp>W{pKo07Auhhs58jzSPllMuG%L>u6fsBm+oGOL@2@ ztnP1@vZ}6W(gXFUsOm9V(D5Q+<>Q~dUfsNS^ZYdjL%iYsBI|l-=XrXIkCACAPscFa z)b}IerAQEETZI+C*p3H8!mo|)am&F_B6WeDLsPN7&r@xPS>LChKV&RR&6bmdMbzhT zV?>5pNzYuMu-}zH0d-5}0pzopvtwOg_pyLAjHn{ao#R|{u?R5D7*7lKapKcyhsS3i z>9m7nnWs0wn0XMIJp#07vpjr14P>wJMy7nNGpXeCU{^A7P4v{Dc~BraD+V(#Gh7@VM-`$B~q z%PoC!aW)6pAxBoWQSmJu8KeuyK^Wfg0ab()rVRvsrvgX;fbTwlD#%YnqNHZ25^9qF ztlk+4r`!ua81a-{zzkv>n|rvXZUGWJXWNib=RM%xgEwt?3mJQya1jer-)@$RS3qoI zf^JdE4jaVw<*t;)=~6q3OQU)wC?kklaC!oMwRj8E1rxRnSAG*cVdzR=spxGAvIg~{ z7>9@$6yAo?W+d?qQ_qC_Xc~cuhED`t%pa_NMu+^X<&R#xe2ohzmK;JWp^)ZsA6pO? zY5f9QO>!Wy7mGc+dHwV!tFzT-FJ7-MuYbIH^En;`t!w~Yzb=4c_OR&U>DmeoQqsik z#VstG(cK0}emKwf;_?DsDCIsYVOk`^`ZS2JtW#d}Bc$O~L2CC=k6zpX_+B1UkC;~0 z5h#7neA9pdJvkI(HAJ~#ZkE(?HEg!sl0=e($eH10!%S+MW7A|nF~;B-%r+gbyyDc= ze&2Ypm;6VWob|h#T4K)Euod8NnLHNdaNtQ?Hzuhhehb(Xp%!G zjI|(B5R1)tsc4)+X|YsUI{gM+=<02pFpb49*}-+IMjYgmbErnF9T4-=p~);jJlnGM z?(XTF`)_?ln;{W9B5s7-*FfAESg#OZvD>XoDm!R2#;z-U<+#fVKc5Gfx*Oi(Cxqx$ ziXt(E{T@U?#?|jF&RomHt{s7{#_XgU5nta^y{tb%4i#!bLM^S#uR3p|b2Vp|yAJ*} zv%}LwDg9bAm+-W+k>=$a@NgSR^M+&4KfIuYqnZA)!qQRPX^3WGb#_OjK^AhLX3*t5 zFEAb)!} zAm5IiASFgf#7d2rkbv_-MPV2)p(HnBYD%Ok^yA-KjIKq1v*Sz~JNsk60ND0ZTLd;jHqsOyr;*`&YOS;d1X(v`AStv81{Vi+2?jUjOu@q z^$KRFb~of7HFY#XG=n-CKQ(!p&*)__^i)o<0Y>3XBl}=Y?-^^96}MJ{j(gyC}a`t;?~7cZZ_{@LEk7jHg)`utNM&~+d~ zXjDy~Au){*|MZQFKUxI1pTV>N2ZrVT!S1=oAOVq_FS+tHF%a94K{Y5aM_g%W+z<}~ zFM{LwA`_o0Q5rq5W_hSXu*|0{fWauOD8=BZM(XB#fI@Eq;jM|Xl%41S+8er*wE3*D zVCpP%$FaW7``LN$Q3%I>O!g1@236|ao*h5HqxoNy)4~P#zPwvd3#8sv2UIj_2?mff z;6#WMXHvlE!h8`dCA6vlPsVliw3I~!3OSZDFoCWk#jNL1B~}r4km>{mDcb~sz18c* z%a<=+;t*1KfSNKEqR36oE#$brhH5*A?N)ZObL1rtS&ish#odE!S#&+yv~oOEx%yu8uUZu9PxczZN-6VCHlCs zx2cjH)`q(`W-(*fw!8YmT@&BPlYj%Fq%`?y&f9I8;03gE0!=g>1c&$)<~I5yFrcOE zp&LbHGv|DtVG&AOJ$wv280Zxdp6Tn=0;dO77M0T7y^F5PhAl1H$@b!790@B^;-XNz z;Fd>Kh?8T6!08BCd6Q%uL%L`N&58>!<$vZZR`@SFn@DsFZU+?8F43ml-hFp6<8&uO5+cWpS55}adCa4>obbslB z54SX0WQsB#-UjXuE=k+irNKsP33Go*5It&6`bxeBUFkfr{~>=KY-TkgMM_v z<2~q)9nfpXwTct3qg^G%h~p0Kx-{>otIMOTvk{Q!0J-c6LJ{0bjBHpE!&+w-;x16C zDTZCJAVL@q#2KjCLX^3VkXT41T@CxbZ)|4XW~Y`)H@L<#CPfN3`>j{Oqm6t#US$)@ z7ZTBD`>yaor6*?!!ggm*-eInt3D3ZdI9n2>mrF>-S#IR(_70jJhpNH7I;MD7IKi>bOB^m{nHSaP6XkgjSWR1;l~0HT5#OE6*n_C?fEqcGwClTb zuS=ZL&UTHMHPj95nxGI?52vyOgn3kE!GSxMm1PGUWV2{1#VMnnmH)$R1RsciZ6-tk zr!QaJtZv`DT%A1MdjXluOt1%1h>pti<+#*+fGF}T!46aINaHRZHr-PCEHDE>jI4-L)?07Zd zKj$W5RiLC^hUXbhPh43A01iUd?r1$G|AJW|b3hTv|M9W$2;^8;59@NSFfqP#uqR)G z8#D^e8yEQ_ta5aS3zxpj0;MM+9DhY*uX_TzPr7ReZSFhriZ;^zo9C}o^;WJVJX9)S z2rgg`6^ZfBRex#|M$^FMgA4dGVI`ambUiBLp{{m+C~tA>v@Q9R_wNGg`#30MY?$Bs zg4NHnE4+|KVMrH1$mOQUA=Qom@%36R@}D%pV7Bwo#S#fL00fJTvM(77gaSsDy9*uS zKE@E0bq>29#;kHc09N?N?-PpQcEM^}Qoa_#s30jsVHaigY_1zGxWw|5!8z036NU51ml_Zc;B?=$%l!@*X5`-3peZ|{U@etW0k-rJ}7?On#`Vggi9 zd;{m)9dzIwguK8cfK|fZ1_=XlHCO?#uHx=x6GsI{G{I?<3L88QI=p-MPu9Dg)e|OE zVyi587#wcIJ1*hxQmd&8kYm$8w8^1ZrWTXU4fE%0ihMtlm=+@Ab)(7Ufqz7x!$YJJ z>0<$Y8h-DI%teE*qxPMM{yeB^XK9#y4Pea>`{OAs?x=lwOL97{WFi z`1)1Xemj{91&ZvQ_l=?OE5V%~y7|%dOXIAu_B-1iD;UZL@WJNXsEj!hWWmlb2q0C= zzF^pXro%-tEOGKm9UQ(EZdUNb0kzY&#w!hl8gAwpgeO!=Ccz6qU1S8$fzhcuMGLn{mtNIYYB15X&zgl^SbXQS;DOdAh)R~MDRNu!Za~Ooz z$|-d>n-p5A_RpqgUHLT4??T3`s*CRB89ZW?#IEPfk(?i*69Y(HsamD0|8lW+#O(a6 zaT6Ag{-69~Z|m%-XJj}tq0@D7MGPw{7B;%*1g$Z#xm!zuX2H!Rc1cV=p<*GNOGwnQ zmN;eWQA0T!YRp%!U%t6{-9MMaJ!-)0007JNPr}~fwoHscsN~Tu64BxgvaWIqam^x= zWYK%^^bmEIsO&r4o=VME0MMwT7z^hr>%UoFLfIJ{%L*J;R+fAisMtRqHtBCKr! zTKA6AjZ@Tl>LY>Mib3r|WN4$bs|EJ_tLE~Jcha+2hm;t5T~vMxrVlSm!DuugA0yQl zxt1;xVOJ2Ce&Ax~VQ{CNAl1Q(m#dxC<2Roo_J%olSzSk!c`yfk)C6)m4U4w-8HTH-2KLC&NombFlr zd3H|RWr{4{P^8$Iel$~OB4XBR9g&ZM`yoo4=R$#SYJ}*M?9@4>=txn70R~48>-6Cd zD5&iI@Pkaj70C;Bx8fVI(J?MU$%8x=JJxYqX+rf0@FWV(Uw2nPFeM8O}>8~y6h(Ex^XSUQ;(rv@IJ3=;dU zB$Xm-`~}Y0iCo$4%O5B`6nu!pL=5j$ADdFL(c)-!%9SAHn9$CP;7sH6m3F#p7h`oY zm-jPLTYYl0fIbc=MCn zXEXo6lEZ0Y>Nwpga8?G0^N)5#V$2TCaM~Zi>_N9QsPoBxQ6&l^iU-y_Ix((NM8haX z0dgb}(*X8m6Fz|lA@crR?IBE_%7YMu@}7%(sMJh|xm;#3&o+W+;vg~1p?VovU+0}6 z8swX!grwc40;?k*hUe6Bd0N6v47kEA_`ny<;2ZhvEI&blMg#%zDKL)qQlYcO-Uskq6+5-qdyj4ryo|m8Zq+owwRG#s4W9Z0 zig-+CV8TR0*E92cl0pO(8cz0P9j_au)=3dl!$CWSYOrlnOV|z>yuDl9m{MfaIrgbfS!?WvNA8g z!16yvXU{t}4qQRS6auBygdA^5jV<3J3e=39|)} zYbndZIRtwL5%^cnR@bjyBQ4j}?dl19@NQv~L*2dka%s`+<~C*P3LF?g_-1}qb2b0b z_4DVeXJgOKskWG$lR^bN_<@OlqPUw+FR=a0j1RolVZ{|XRUqWSqwP407m?KD0Q(iAL<(TzTY_4w4uBI4PCzZD+AMG6GL&l3mvFcG88S5! z{gO!RZIm1fk!wnbQU-R^Fuja<20~>Dmzetr>$PB5Hw*X9v?p2r7K}7M>hIk73!+Al zFC)mu5-b4HEywgtUs{s4+e%rUE5ExyI9Sjozp{fmP_M8=I0n?i2%&lisc5vXCnzA1ATJpl|k&c_OI$sm6hGRN$W!1+sd*W z!ZQTLy)8%Ajx8v*>%=Raz|1Q$B+jFAjuph$nB>U4N2pW^6;ccSzz!iYl9%DOJ zb5le8csykLIzglj?CmVJFZO`#kmre-A&fyvO)7CZyVhRAp`Xvk2hLm5zt~uNruvZt;<=#WwRWPGkgEJfs(eRqNr_y+ zH74%tkcE61CNiYlDPaByQa!Dk#x@Ys$B&je1mjXxCrMsOOA?wXk7cM)JY3MomWUBV z$(Ca_e|T|lw&;^iCG@wPK#ch~Lwwd?D6fhO@!Ak|tLC#%1IDTfvA}3ZE@3Gz+orC5 z;tZ4&v)#i+lu;_s3!_TD0yQNAch2k&_F$Lx6tZEc8Okt7gs2Kh{Yy|M-c!F1f4~g8 z?{!3qy?TB9`pqkUW?c?A*0^%9!{~u&Sn$pw)U#%miTQ$ut+UENO=eMp%&@zw01ok+ zftu}{952_BIs@7S;7jRY$b3(5|BM;e;g&EUM>i@Ng22lKn4ZDYK-1qI?EhifbNMiU z)S31dCfT^y*_kW$GhAq+*h*NERc+hd?Zs?oYfe&1ti$6B)w(&!W*VRprWZwRr<_LL zmYlWfq$dy|E%8Rw{fygVak>ewl`OMWp_iGA z2j?e~jZ}}t?0`o5tS|x8EA7GrP7Lqpp#ey&z|a^v8p4YhTtP$y$w_v?`Tk*$p(SE_ z=rb^UaLgc@AVL9uh(dv&v+TICzfmRH}>l|v9a(rOH$Uxomh3IXU^ z6HH7tALZ2nGA^M8C1ulXlh zBEt*eu7=~cMpNGfHsmQ$aEOT%w&bZozCbMZ&Koi+mOui!YiUT8gkX4oJQy}x)A3|H zYR1#y=5Y1lcw-kvtAgROxRe+akeF<3qvwVgr}NKcn^;ZB6%kjjH4I^L-$&Xui;;J{stH7iEdoA;mTj;|a$bZ;jqnxo38D%Bhi70z~dM zq82sqt0tvo8oFc)+q>&i*L5)s7Fcah1uTrPP;(hT@sp`{alQ4am=;r{jWTc);1+o%ofxn4+K*!v_R_kgO+4lkco zI#AGaq5qTXXW#3q3BUT^2evqbtoiXi_bxb?*zf)KzRO3z-|@Rhe@6>`j4PLb3F9p9 z!b3h-cjtS3BiHf9d#DC0T6jvA`?nQTR*z~$hz6;>XrsLxyWHjWf|P-!<%iRnHa$GY z%ni-aXz93yQ-LB!WV7l22LDV959oxfJ;k1##UuDw96f!GEM3cg639hJ8rANgkHa$+ zi5Zlh5+Xozm|)BG4^*d+bv56r%t0y`{hnCOhBEb5w4H*jK4&r^}V!oVqz`a-39zK1-U>!>dm%yVlNU1Va0&mu%`CdYkL zcx1UNM+MgV_&m8CLb2$%Y4uAJmLV-Vps3Oywmh4)O+2?&FmuLBZ4k}`$MX@e#krN0 zNteEbj0d}mwy){oq#gSOX_w?+fggUQXA`-TGaE$LV*K>C9`t|m;@S1@d3I7cY`YAs8VW{@fYjEIV;g*+bcefWv3;+D`$mcoEwe$^k#3obgXY*bDw8^sJ3 zRk(y=z_XmDGQECUbBI>2W-5_Z7;GU@<(P1m+OG8OHfhZ+;Xa)g*7SFS<2f;;tyyQtPH3lb45HA}7p3VY2r09ZZ* zVV8QF0;Fd=IypRt0~P|vj`8o<5ogt^g(E6wNC%yD%clmk7@&Iae0GeJMe7H`OLk`m zENE@6=Ux(&$AS*fu{izw6GRWwS-X6CcOSij+&Mt5F4|t|Zuz|m)4>h*@`Ps=K zvK1n=?cpM6{-D|mREQxkr_DH$A;0$RXX>1|?VN_{i{--_A-1`(yF}6+Q-Iko>}g5CWz8ovpUy!0tE)%X9cUCvU#gB9A^YBknKH)Ck(s#`XbXRd|6E zxcfX%W`rqyzFOUa_#k{=9%E&#Id9Td(dmzJC&*CQfbgD)QF$u(z~Cu?1A_!3gU1qi ziNO=IDuwjo5mFmqd%>$I6fI@8B50}^wFOI#-h^KG>7@<4f7al4Qck3Toy6ACFZat! zW0EtItb5<&Et+y@HZ;W9uJ%ZkfjL6qPS;M*EO}_h(v%HbE*C^R8BnuJo;5hCSj1?& z(r6Oytv%jzh&}3zHrN=SS>LaR?MNVWOeM6vR;PpVs9HnO-s%}C8 zEOt-H$+N;RjVxkU)Gl=f>#eWo6ryG^?_*#0jxTM_TXHmQn>?UAZXS*J#YZ z4|_IiQyMv;#orn zcUPlY{ABg~_437=mp7}c?U$?TA8U9@`{|Xpx4|wwz*H~}X$QF~q4wM8S&@54(M~0I z`gMyV8y-4-Ecva2{8mK*mb9)zsFO%9!IKkIgb=EbJ_adh4^d*RA3*ZJHPu2Mfxb_nd`T1Bxi&B3&$$ei ztH&MI9HV7Ut_4_YR|`c-XH{UV;Wh}-vaBV9D_&iXxG1&Fm-#0)F$WTv zNf06DK=d4Ooce(Hb)wg$?yFYKfChsOdS1_TVO*x1d}z^nc(s49w;zZ-FpS(SxSb#t z!z-6!u^990I?e~%5MY-&@Ip|b6|mIvqb|33QcyzlP5Q*3DR3iFytG$AkW&RY=)FcM z6A@!mtg04{n^OI^Y|9xQ?(X1AKE`)QV)bQ@*LuH^N1`7IF_zIuGy!A3dU&z8@RVy5 zak`*H2Mliv+AJ!?98TIDZ2gLw;@Uw`i_Vz>6FMu)gW^)(qOSmgwF1)N z@R%S}!n8PK!x%t~JUntqq@V}-v3q%fih`y|y{k(V&&bMF9IRD9bX7sSsB?{Rp)R-Rce)U z2Y(iaKF2VjRRZDHEF&)fc#U0#kOn36$Mi`$1^at(rqU%0<=qB#ey}UI{d8&Pj_A@8 z&0udpZ>Z;r=jC3B#*OHP=v1@<>g)1jp3!#Oc@LLq>LX; z$4U#IIz!`U;32?ZObD)^a94OA=?I!Jv>i+^wVmQFAS&n&O&U4IhmI?JeG_A2y-2~J zvj9(?Q9Pl1gi~yAZad`+0rl-hh=7H}*U-$7(S#OIw}_uUnr**%`ReuI>iMUye{{8R z{_^_yD^vn|CAJu&*uH@F4i3tDNCmTj@~p?pUDV;ubXL$_HK$n}mE^F1sxHTHTcYbi zG5oF`8c-4{Ff`;b2W!An=@zddlNR$9<&`n0$kt7{JE!)D*Y5;dBdSTFZ3^^VoX}A} z{k|GGYDa3N5D`!g+@>)DYt-OgERYZRF+kY6OkNvq@`B{%#+zzNGC*7!%Z7h4A0HLC zjH{M`)V(-8uK#H0XKvg0bOAI<>%INQc_2EHLaeOS=S_MjC8txkKP;{qIuk}oYK}&! zs}GkKR5|;9K2`GFEW<#W#^$~uqfn>?kpTw`4B`k*XBj^c85_@k5^;sg0b14wv-zU& z{9yNFaJ2wdo1NRX1E`N2+>Ec@h8j&(sBtWE9y#Vz0pGKp0ASAB@MxicUI$^UnH+#z z>zEDgCh@N0ma4>7RCt411DL}C)g`!h#q?m?B%wazdY7IPkB?GbJf||^vQEsP1dMGt z4LB%npAes@GafE9WNsv~S`bR-qS9a^Yt5oYbcMYpbkVd4y@Tswg=0S*isMju zCRi7gGGtTbnWmvUlZtP1uY}M{FV4w4_Y9u$8LC=)JjQ31O+)|LS>$tw&dhgs0cWJ}q9Eq^TY}Dx&7OjaEK>{J@MB zujv$q>UF^M3KTKM;E5;7RxD_k8qpFbdxgte?uG~=BfD`%|J=!$w-c1IN!Ffw4SfAl zq%fj?&|%KTbRLXgcG^n=NMBcAayR>6FYjfToFqsKSaKP|%{$o)fFqxw1D;X{`!1!) zi@P@zjV=u-@{HHYc2tUX+YBjMw~J9!BIO~&RX8UhQw=PxgE3SfGEC%-u7q1qnq zg64ueNLq8tD`SDct_%#OqjgD;DeRgNUpR}(vMYOxjfviA2ubjrYEcCtsDfj5xV}MI z;lT1gj7}mjhsjF>z8F<|DDTV9K$wd>R)cA$kw;Rz(thIM;5Gqe#ly&2vqd7Y)K1o@ zgQiAPU%IhP)o+QXR7qY39ku1p4*L1^+1Y`1LMYH%9!~C&0MW-5jFN9Ax^9~4%Moug z7@;m6EC5m{nL0^C+BYNYC}dAdMqNSz3oEgV%TSXD<)n80z85bH9Y)L8F6`ubVWn> zyc&_UAg}0&*A%?Lnl74iur?u)YsBu{lF^i!pz4oms1Hup>OotulA{df=Nu1hYVrKQ zg(Q~lisizEQzw#T%Vk-DWgXl-It6}3w8adS8()07`}7&CiC6O%&!0T~R5Ew$U~PG~ zTvsdOM6-vq2N@$eginwru`(j7)XkSL9vj=ogmWhssF-MRK|E~qiivG=s`-1Sl4_RA zGhhPuy^|g)G&yoIeLIQ==r(%@&?;5*Wn)w@d8JNiSKy_|t?Fk6L4C-$R($ecBdAYD z(Of62tr`Kj{SE|?_5%+)*}m9?2s+z7M6nrjQh>1Uzr5T`t7oTEgZDayWh6b5{tV!l zLU6AAA26wtgpLlra}k}1)3k(!?*O*tV>tfMY22hR52uFbHQ%t@mcN5P-UrC)QWGS&!lhdeX0Ich?Y&*wz$h;}*WBsg3) z^A0i#Cuf{)zjWAO;HV?@bWY#61E9o@(v`n6Iq}D^is-|iGhI@+V^v&~J%eSQ?6F3P zjf%Cn!)Ve1iev+Ec6bb1t1l!OG6_697|a(n-|tt~=8@r~179tkeK=rtpy4puO(2RG z##Z1iiYo+*V&crQq_$d0V(hLg&{Vy%!*I*ecNW2I8|3?JD_H8tz2gg-{}*$VKY>*n z2 zI+IolCQ7bc5P7_Q;*^L&zN%7)_vAXE`7XvY19gL09Xf&e(N3R%^Hp02^;Vuo@yifz zEa@X914_M%ZmD+#saM9%8Q4Crg64XQtXZ=|rB8|%X<)S#L4f1y>yVF@S-1C4k{+VN z&->^f%Sty>!}w_r2r;WdtSux=wUDu)gM+$=XkRYC3tYmtQT#O?i;c1D-`Pi93jV>f zh&ng1Rq=UFYKV^E>_7C(JAQ;3BZe6lbOcOKt$2}0kti~rKV>0bZ40bWZPwm z#U`E!Wp?ME-QK(T>{iZt{QvvkH_hjJe zSaZr~O<`gcWLqY!gJ%HTbNQ2|clnDK|}`f2qda6q2ghh)F2Aq9m?^cN@G&t(bIgSV-2z-j`e zI)_xWuG#3H@0vA&qq12NhI-5rodFfL!c{GMHPL!0llQhLEv85zCo3HW_=b^(&QlSim>ez?q0Z>A`n zY%^6rO>?4PBzc8;r^~jnPP>DfUAg1wDuN=APCC$+evBY;Om(IyO^ujdrM&$q%VQzq z?T`8`bUG7m&xqkEKtfJ9naIJz1Q(^c$H}k5^l+ij zSQ=jOQlS)F3G$(E+gtI!_E=i5l<*=Z5Xvw?bl5kbUSQJm9LM3{?C`W-UTP~E6^23a zVCR4c+sSfjP_LSsL8aDqlX^mBfd!*zw!MFXw5J$`Uo|B<7`Joigd7NB4HGHbOr#8E46^X_uU*Q$@n~@*zX`}sJHdqG1bA&H zEv9B%eDLo1rp>=|#hb=H;jCC7A<}ShW4LXK2qpiF$ZrOlM+x+eyfi0j9Tk8g zOx?=UM3>qOlCm@bV2rlAX<)+v!-!2M3Zx<3nlw#u6C*AFt}Hr0o+qvXX_y>2QyAd? z7_||z975be5g2Bzx6#XQjItPZpK?M#0K!km`q*p2*2ou|erh~%({uJ!WQnz*`WYTLrYv{yEHZ*5G&wYW5;Y$d-vf#g4v_6y=eW<_JU@N$)78tJ7e9S2 zhFs8;nk9$JpO57s8R=<(N`9eFgEoF@`5*2rruNS(vYQL31{ji{KA$d=chayoh9&G*y-$~ zIkjAoF?vGM>McBDzQ z8HmlT!UJYIz%GjV7$=uI8H>>c7GkuMW2g~MfjECy&eD&LWN^Qq2&~Xg$|z;nh1#KZh=P%Ar zE@y~6(CtN&Z%z(cHgg%qq=HSG$v&p2r>1Yg4OC?1>x&H8xtmwEwt(mhY;3macg)6U zB8MFgyp>8p=Jg>p`|tGZ`T5yW+k;Ak!frO4Op#1;IN3_sG~pYE9VyRM z@Q|I}06_2s2)$hpq|AKPAIJld_(NWZ55#w*GQyPmxsLArO!`m&%p+2`<^jB}=CJ3T?zKaMY)lFs+Z#uhrb z2rZ)sLn0vYLd!RgnS@Wv0G^06QV!DC{n>AAPVoTdyA4G7iEwh(CVy_=>BP;I4ibh4 zBIyJvWybdE@Q7{(kmj)BIxW9V#)b0a+Sc?GNr;h#8eEY^eFKykk_eA<6aJ8iZt_B3 zD)p$xK6Mn6EaRdego}N1&jF~YbSX=EsI^wKAX`;_g9x1Yl!C2$V+F&Qd6sD|QyyAf zX>^fssWS48L?J!0eO;%xiRaqH7t6d1%=98U=E9zC3#M9OK}Lq`y&I`SNb;NF!jxqe zXazW_Dom)cxdy2NtWo*eL(_|GftLO~GVTErF?ioahG>VT=N@WM8pCXEd|rzxa#^J+ zf@m~xV6KSp?Lkox?#i%`o?!ELHOARz4&wejPH~Zr1cZ}A^Y6gG!4dU~D?Pz59kgT$ zj@dw-k!CYEoH6HQI3j@-;T)o@s~%J~>1npb?JeLrqixJ^bD{;oG#2Yu1Yx+dR>wt!uAn(6FH0n?+5j2@pHgOMnT zRi2JqE!Bn{oG^477-IxMfFYnr!N972jt4kNZJ^=2kbe>DABL8^#w-Z!WDc7>HzveT zxG*1q4U_fb2xW)h$-T((BA|H4*^C7?p{w%LsPeg>Q~Yx02w8$U30Mu%l!aWbjhKLV z)mnTc7c&#AxCZzLg1u8N$n5LkAX!7hU1{}&wo9)O+X3!2f~6Gx3SJ;GV8A^@r#0lW znePuCI|5z_-K2P`UZ&+6iPyHSG1PSF4w=uRgzidHvZvbOi1J zH0uQwSKu_xz-L(CsZ~!nvF9W;EA#n9I`$y*Eq4?TA#D4~EUaWOLe3>(c!9LqV!p_# z;j<~a3Yj^ctzo(W!LO`E;#`LciZT1np}d@E7(wdGM@+0u;+9?enu23(m5j<3u?uWk z0@KnJHI?~>)9s1gQ~=P}Q!-9vQ#RV!2WqO@Y^~i#x)uSn4t15PzY0#m&&lqrTiQ5W=hpMNB4M#}!P%gzLjo@(I!spK{S6|VBbHZA&ZYqZ> z7AJ^W5a<$8A`)I`9{I_NOw4HdS1M13kd4^liFVokD^MLhC zKI2++k2ud#Qri(Hc?gxmc}jzmZN3L7+6T1nVPZumQ{73!lw>B3)IOsqf z#Wz$6B!+{s;NRK=g_}zg6i*G7Gmjw}o!=EhG)lg`+LD1Dbt0(*)XEv+r6La6AwN0z zHfl|9+Kv$1*@U&q6eU(|yKTFif11Qg@!n3L;{x;_JEl3M<`YQF6KFtOEJ? z7)Wt-b^YoycX={B2`iu^YiMkfuSw>}h8lxFQgG=iB~uVo(9X=;WNTe^(k)~s4d?S5 zH94h7_h@Sv|K>-q>qK_7Z6oRKphHR)-dx1CgqXAIeCuL)A2y!tsWR0#Nb|%o636a9 zn;XujVZI!quCSuyIq~f>xnNjqN67YAp52jLte;nf{xIWwa4>ywS!+gRe>rg0>j*@D8 z{D_iD-l%mU10F;eWv<3-mLK2MLqo7x3FS|;>O@;!4FwO08$%f{)4s4vy67a@=!jDHhRqd=@}Hca3j~d{K6(23rX%l#iKEg zIDOPCl`>q(>emk9nzT^ZwGJPxfLbZc?S{$4Yl9dEbMh7@+hcg=C}`8?9`oNCdLTza zudRJjL*q7uRjA9T5R?a8;^0}Ezlv8H{prhOAyTj@ZffMEPmt}Ms!YN*)^PJlE);Si()`7KR}Vef8OCGR+hN#H7j!A^E{ZM@=TJ}2Z*A*F&{XW9 zA*17%(J62{yi^ZA+5E~mjA;CyZpT^V(I(X~Oy)Zc=`7NPd>DuiV01c;sh0U0i=+g= z6uHcIjr!-#G^~NhoE{dou&miOx8qJBRecG|k5_XY&}Y>tn{M{7+}(-x+7@zL#}0ut zM^IGVOCl`20Cp~ri9upzywZ#+9}$Z1oG^Bv*1iCX7odWbfWc!x&i&%VJ3a%u(7008X39l^yDeoYJqCRr`(tp`}Cc%ORB zU;=U@^n1uUksj>;pfsG~z_~ynjGPo)%;G(*r&?So&?`Pk#_#gk1-Ro4X%rp`!Y5(( z!(pTT;`cz()D}cEY<$fvg-yz7ArKIFne7&naB==Hs7Z#6#iT6v4|YlZFSbM33t0?3 zmr3v^#XunSfzwzZQ%iag*TaOt<+JObtY){jFXz|Ko;|+4`LTp0Pdt@1ha)flArFyL z$OF!uwuEUdU9*WPPk0Tp@6F$}J;Ez0wX7Zq%s>}jCbRpVzYfp$o3MIx2~yJZ&ayPX zL@*`=qXt>kRGJNe?p33T5#}(mLTUYpogNT68@7*b;xI1 zHAg~Wi1_09vlln!lt6b9sLMgrJCj6bQ0!-yxv3|Z!x_6)hLEkWw37nr22#urrG`XH ztRa~j!aKmajazkve;_2tu>x2q%3yQ-6S_+*6kI7OBRfva~IYEf|Gq5)DL z3+A~h3GzCb53ZAQ{yy`ziWyjs7CQrJUefcVaMr6pamZ9Cz#|gZm_ng)#fkb$2p~T$us}l1Va05%>hB;NbY+2pD?-BPF6DfwmN89;C55WH)inLq}Sn zzpU@ZQ?G?|N_J9Wbl!pku)!U|wS=$*PYyX(1)F(l*8Fi16z-v7qQ#ZrWspHHMyvT% zaT^hV8BRDz8h4*)g(qx83^_?BS#xolb{A0+&ieN3Vh83)s~dyJ>Q7Z_*o$PHq| zvddw42^FBf8v+})Z~1B@-xN8gk{N=sd+D0Wxf#(loIciT8v3GNe&$0i4;&g-A#*9sVIj5Br9YSJ(CC@lpd30hm8qUB5hCJ->bW z{8Lmy1N+t0j4_<=UmRhPSq2_VoxPK&9t_&C)V)dYsaZ%yF)Q1LB9GeVZl<7~$9C2T zWo?^jGa64Oqv=L7olaJNG@9;WRnQ0GIpeGkfGm&cO2sg1vN(x9Mlu>-n%q4D;qcgd zkEVShI$Y3Wh6M?Ys8DWh>$F=ivm$y;sAKR5g)1QsLns&ppq59&@{O3>y-hkSVd@^R zuq#X8lwG}}ql0d=ZQ!~YqHm%Z#b0%uosND5f9$+FcVSruqj9;jYQ;QCLUJO#AM8v% zrFjmUebn7e3EXt0HQ3LS*ASWIsf&c&@&=t~(2-C$gW>=^i$gj9uPtmQ)UV?U!MSSr#{Kv~9$c^Iw9gAEM z7=IhFkm9|m8E&1)0Ma82>yN;YEzaR|UB0gZ7H1ecNgB@$a#H1O;S?8L>}KvDct0GT zZJW-MsLWNf+AtBO?zWpW3X1hK;lIrs?J21Ap|(E3>R;HQ!7NkEg}P3R3dsKJ_rNg2 z?WQ|N0YcSnZ^5z1_>C+p0MskF`BTeUg7r1Wk58{ZUA;Pgv3Pm?Y9(X~0cab)!DKYz zE_h8xFWeL)&dEN2-u2`@6l1$Q-VLt-t~D}RxJS}2Ci%pqT3cLWX+FJ!uQHkG?OiMa_;2`%p^K_JoF6QFGNyn;`9pY<3#9dqD zPY`tus#ZEodxV)&Ocytp51RgbjLS$eQc zEyLcL9(pL<()!*%vx0Ul9UB*KB9 zbKxjIl1|vZ3{Bx02G4(cpr~|Lbt@+7&|;#x6_-yjn$&6Kgr)%K`#`l^*UaR!!+v!w zoFY<`X;$~KWF|3Gjq0sHVNHfiU%Uj_cmyuQ0{SXY+K(Gle0pHH{q`dk0?W0d^8?*< z;o-7_KC-~7xdDLOS8h&lSM-DdV39`N2;&jXQi6O};;#D1$|NE7?hb!OAA6VzWx)>;DTjEv+t4YoUurVv`2Z>u1FG}1nCCt4;ZI#!}T zGkmt}tDym`cDgxjvSj@fl>ZpN;*Sjy4`c9TVzm<$J2%A<&YYX?L0gbc-x=7}oPBCP3+n=$i9_(-TD6*8K4PMcxO3c(~LAj&w@FwJVeuV16LwSGzy&oVIjD{K= z)MQ$ch}<{K34|OaX3QB69)h*ZMI}g9{qzN$@E-9^Z8#FX!5FL^qbS(O$RIia(LQw+ zQ}oyT>Ex{&%88WQ-G(2M{hOr>oZ(wyh#2>a2qHTPzq><9`vb+~8-bA-fvRg`%VGVkY z+fA`bE~{d52lmWNssib&T8kg!?birwrU(R9Mad(ks$|N2&?v)YCeF6WNOuQ)4pf(v zj~PIe*)Zuw8_M1=-!T`88E zaXRW00)A~%3--)HfEbC2lCk9G z_za%|H$d(!ppL)z0q$j5$)=!Li69s;ZuPM5XL457jc-ajEvF`d^Z|TZaALhtrsCQvU#^nbNG7lW}~0PJ07Lol(qC z`NnY*q}L$v=B>bk+sr~Ub71aXDep?EB)YvTHF;o|Xra~&GSv<*bkx$$;*`c3L%GH* zw^IR)xOz{yUR2!5w0pYU)O&r;$7dWeiiARrL{MuWFJkS&o>boZ!mFTwq`Ay?Sj^^_ zPiO(xZDEhc@yU|Iug&DGnbTt=_M7A z+03WM$bwc6ATaVeN&wCd=j43J+?dn>=L9IHp&o04dSKn*l@HApRpX1ZM@XT~*=slZ zILS9^PAHXArt=fa_FP>M!0l5Tqd3-`T6tjV)EXg!;vn#`9(L}Cqac@u9mCUr>mDwU)=f>cq=?R5n_I_lc&DU z%g<^X`vJ(ZW9MD8%ZzW|#7NIi=;AK|Zz}R4r~&8N3o;Movx>S=hv5HaH#e(SuXNK8 zNr@QdYaI79uTR=1eKbbii-Ma_W2niEN ze`oP=|4;w4kEv&7YkrGFIrP_l1D^(^Bbsf>mBAWArDQ9mNe+5I?PUK?^)1%H{cvM{ zz{(ro|0EG!Rdsn!j{kkhct)aEEFn8EPeswfDP-Ep^-^vZ*ab4CWgcBIg&KCV zsb3A#@inkju2)IK{0hV~AO3*eCY`CAfEAc2LCpG4L52lckFbcdW3amLcDxeq23Lx) z;#tamKVjjN;lv83fLFkuakQtHIlbu%4f=)Qf1VdP$DExv931hAku5p6>= zj5VV2*_9^xt+}Dl-*uFq2 z6zxA~FX-u7Tgp`Wvu@OQiRV0-H&E~Pp#*j9WMNs&K(JQR&sZ*)K zLAmww1JQnvOX^r-qaSFogQp8Jv;B-gw3awBs!-U)-Gq=Qle-An_5Obm*tq3vlIb(S z5djtNqec+z#LWNlSAC;I%p;eBKK#MK^H;C0pWm$Dy>vGGz!@q?^@uZL)?<3AeC3<| zY5%7`dirc7f8|c^@zNUY0fH8~YinrhU^xGjiN%#yJegtA*Qh6QH_w4f?Jnj8_d9oj z5)tRsl$^HHDZDF?kV4@32;3Kvy<=YLHcVb}+kju}`H7rb_z=_xlO3e4g+pxO44^SO zL=~qoL$1gsxz^+55--HRMlREDsLCCV*qYsQ_lApIGcdF;JJ^3n!27mNmZq0`1U@L- z|2V(=lJosDgzK7$MIIOuf7j#zY{6(nKEVCw2fLrdIvsffxif@Vcrv{#*(h-emVgw~ zc`jHeT!W1>y|}zMZCs!f`s@@abHqv$`C7Ev2KEltWDb#LC8$xNin^-=vg@dGF$$Kb zQk1KJA_B#EFk=VgcVvSI*@s1sDI&*s5{SlygjfOfSSjP+Ww4%8!l$+2vi396`UUbT z6)yo9_YA*Ayhv7Iuyyo@B!hevTy&!KHWabSK)!@xWCAS-uKFUIf@u7i*<|P3I4jjn z(6?esAgrdI-2&v3;E5@nGe(61G3m2spT3}%x7c{&+h>P+Cvp%VXAjC8EWdKe^_>)~ zACy)-k1Y6#+%48Fnf(mSsitGtMbIh2pcU2X)iw%HA9@&p)pasN?pi7iAQKpXuUHA3?S zy-{30EjUXmXc34J4%nQ}Fj9ek_oxYS%7HJ!h1e8%ARxG}8Yh{S2+|m-`>36dC*ud( znNWonGp9tGxyECK`@% zSbHF`d)xxl1EAs#4L8m+t$wYx~4t_vNDQORcBc6pIYQ9wU%R>@58wG7MkI8ZR%_AG6Hh@Es zS+(O;*!rLiFk+v@C%U4Kry)QRQnAu%xbCCK8N7WFri)a|;Ni_DPc9=n<`L3r*XgFZ zhA9(4*N}k$tViCUA!ULp3X4a{+d0c_E~^e%C34-NtK)n=L?MszQg6vtd{~Be6%c)S z50zSx1OR3I`sXiRJbTrD^5SJ*Nz?no(f!f=m#b&P`^}&k54M`ghr`VwveXDL?5lM$ z9QS^$*X#Wo{P|k%>p%bYuYIf6$94Gg=lC)E_AmX-*Z=v~X5a45zV*#dzx_+IZ+)xx zhoJ-h{|oi`#@~34C*S@Cdd&XEZ?j9E|M;K3_*(X?U&ph){$J@~`Ln)*zO!%ZS?n>- zpY>(?{e$pA{Qo*W?_1yev5zW;_cQoG2mEhy|L@?L;Sa|g=I>kI?Dg_@|E6I4)^B}t z$KTx#H{$<)Ex6D9?{L0OTJ!Zkt52M-um5>AVY3eayk1>De%kxmyZHGFn;#zae(_hn zdGyO)|IRml^J~BLwcmc{cfR(!U;DkU{r)e$i=}D($=kls`@jB8-r=1dpP2r<)BE?* z1%AC#>=0i6^uzlgo=$6x&MPVbMa z{(r3gY5)9j)qha+A5_mDRQ-ol|6%p~Vb#B>`Zwy|kG-1si$C7!jjR4+_5bzQYaD-B z|4G$@|tMtpBv?Z|nEp$6nL;%liLGb^WK+_4ljmKdY{1)%AZ;UH?sWJ+H18 z)%9L=eNbILsIHHy>yzsGVRgN%t}m+V%j)`*>iXZWuK$DT`l`CVuC8yY>s59AX?6Xy zy8dx>{aJPWqPqUe>iSi6{ieG9X?6Xx>iVy$>wj8Z|3}sJKdY|)y;<)YrS#> zzTW#6)gAv+as7?n|5IH5LT@wTDgu77_a7G5-|YR%;`*0*|66hW%e`-YJ%8Y@^rpr2 zul7DKu79ofFN^DM_5Szb`rEx(fe+kgbkK+38_I~>t z`SX6Ww=AxItM^|P*MG0~zZBQM-TT#F$nXE1-h<-$cYA+RT>oD0e<-g1e(xKyR9KS)3E>z&?zT3!Da)pfCW=wD1eu8YaT zRWTX3Eu79<<{wCTbHeBPT@ATg9{jYw_nS2-g%l}zif6)7lYzuHT{s7l}-)lYZey{QCzOMhc zH!I+XAS&R)-lu;3hw9(-{>rbpQr`i;@Xv7_{%G}Iz5Z;}JR5%T#nq3lpItqnbIJXi z-XGrf{_wTy(%?0+c=__h%Q+OSy`O%DN?-Q}*SD*!>nB^+k5`lF_2aG8^vRQ^8BNF6 zlj}*d`9$5yC*Qny{^b6T?l+K>Zmw@1Pbat2)p#)3+#KFan&HNDI^7rzR$Hspu)G=f zjHdTDA5S)h&G_cF+1gw^X-2EZ*H5m|aJ#uR+`1lY<@anfU#xi7o*9T<-11rSA(0aC!^8k&1B=|@fK!db-RIq-VUbC zB>CJd+v|)pU z|HrF0pYx8v{qYoE|M>A_I@%g++>CFpug4pcjqB+KKI?Ha8QUGNUL(iKYrEs789%um zT|XH;z8P)~CX-3?`0>WZ*64a`u(_I!!<73C&FKCu7Gu15J()fkK=~ z&FRMKRW1CFwKe-uCZmw^JThrkH`{K#g^mej&dyQqD;_b~%_Nq^BZg5XCxj%lgvAH!} zZEbDcZcMfYkEesxE?K3@A>TWH&@p$Kl{lh-hy=(^dM=C^(E1(#^Lc^}DE9^X#K z8=ISBO!DI?mXxC#-(cqs9_PnGC-vFt)9ag`aXOm&(`Gun9o>wd3??_j$8d|f9d8V7 zFhir!#?9)<$lrI1-N*0Rx<9zR*%}Nck4JbN-f_EibG^cgxWd?To5goIX0UrVruT0K zn;XOF?Qk?54X3NYlk36e=<#TH^Z0uBWHNm`C_hePefj^gcb8#T)$hLOA4(;pk(Ms$ z?(PNw>F(|pX%La_F6kB!krI&-5fPCRDG?9>5djf_Gv_lubM3X)`tNJ6z0ZEJuXCLj zULWsSV~p>pIqvaeK9TFKK%rdu15;?K`w*)P;Ka2(6uI?Z8gbFSOiwbG2*JHgLGiQ?x_dc7eUCT_Ewm{}j!eKd?c! z&y%-9=-Be#A8tbj^2pQzN6rrU^Ayfov`t_Qw+|d5+7>F3uVA~jZSxf_7>MLwEqLU+ z|1I|52ei*qIA4c$`8u@8SGaJ&4*3H|`~rmo$AQ3BUL|0=ci zgZg=MzBWY*1(vyOo3`!p=MPLcaA0rOwm@LNY*V;!yMpci#TpAtv_R2Zt=r^p*P(6u z0)Ycc;J6XkxQcYhS2SUJAR8i+gM1<`Xd_3@#c0kZ25fPsUT^bQ_ zE$Fg{h=0_H17E0uk2eb#e1Gt}Q1Eku-+zL2@GDWQH4%~D7K6?X)`8DG`tP2P8fYB_ zzgqQM$HqN->88WP3B-7Xzk?md;u0`IR?8C!S~l<@H=L(Zp$tl z#NgF&@cECpmHT*{=NMf6;Ok=smpkAa%)mUX#pdkJz8uWq9LGfrUIPa|e;p6-2v6{P z-s4k7j~aS^Jf>hK=4DA%3mRB&wbjkog9CyFT8m@Vv$!m1mWYTg>is;)3qb>4oNuTf z1Wgy%j?}LPF8`tiE-4ZQ4J>c!pn*%0tm^zhlSM?7QdbQcxFo8tZW1(6L_}xxU=9x& zxb&K=Ud&ZN0~_5A^&y@L8n`sPqQ1`;d_8bk8aaQ=8Z>a-kzZYgHQ9v0tJSE1jW%+> z2)sV9D3Q}i8#FK{^l2iJWd=I;DbjU^*3o z2BuRjXka>#(+^B1*!u}iClE_SaKC&lXkcdyUZqCn6SQDNMBt^7b>wmd)@$VF7Yf`{ z2tHmoBBHwIBR?-a!Lz8W^-_L`39%S}Y=BT(A!8^izVCh=`aKv}8m? z;LsEKzLh}(3$Z?E>4=E!9^VtROhm-Npn;kAI%v6wi0^|2rgxb)f|ienxDzxG!qcD? z1OG({{8uTkyg@5RM8pjmSUE|91`ayG8xc_hVPy{*Shzw#YXsI~(3*i9g9Z*t^@7%p zh-eWsFx}2U1L5`wS~swqLEnyu7$3A=U^#;ZUN*5jMGgS+`ZI2cJfptI ztGvm(e8{JK$r#Z>+gY$@9o*g$FexL?pMl3SsIxIQ3$i%NvNCJ39vibI+p{Zsb0CLt zG$(KhXK?|SaWyw`8+UO(!{_Vc>d5nUV0q7~FY!8WGkiXOq<+RI(L*`D%J6wUkvcik zFcY&gFAK9I%d;wLvjLm3H9N99`*JXcb1Wxv8s~5kS8y#ia|d_x0FUqlPxCx4^9Jwm z0iW!R<39<1qY{D9=|J z9P1LyHxZLF4Kp!2^Rh5YvOKG@HXE=hTeBm(vo8m8ILC4#r*RG!aRt|MGk0(|5AX<2 z@HEf!GH>t>AMgpEGg{!nAeduJ#$ytuWboch@O4?3llfVcrCE{HS(gpjoNd{eJ=veZ zdpN=Aj^ubw;tbB?60YQWZskty%7hTe8gvr z5-XJFt9+e_n4D>tiP@Q#g;|p2S(UZffKAz&9oe0IIheyamJ>ORbGV2rxR#r_gS&Zv zM;JKGMD7>=w_RTjGGD_vj*~c(;p@uf>b2a$o!rMmjO+&ljt8gJ7kHJo7`~2ttbWeu zu6zD>^ZT#9?|=7o3C(A6rezieTCtJqJ=`A%v{oYP@~p-{iz4#zMhy1_I;gv|ABS=j zC-A?z92vYm8^isi!s^I=RbahUR0movk@NSz`uYF2^+&?}tQD4L9k=pRhWjFi)h8J4 zYh6@dn+wk`-8;f!12&^WnZ$D|JWqV1K^L(fokZ zIG0Pfis3%icJ*$4!DIZE;r`W6>Kpux5BWF4eXGcRWMKP`=lB!8ACX#}k>P$-K6Oz> z_9p}HudEK=w+Q#CBJb}6o^R{<;8?xj_om()#Q%67W0J>basih!+?U#--pPGD#IG6d zM_o|=&$g5Q+4HI8_+Ne9e>@KTpWg1n{nS3@YcNM}JSQ{UNByrJC&J4a$NLj81=BGr z!^`*o?@yua{r~Ix(^dP`E#Bv2hWonV`--unhH^>BZScle@c0;c zUo&7_brPmxxIg=rIxmYbI0iZRIh7dh%ZBfJHuZQLhVOs&QiuDo@2SV~L(brQhWoH< z)SLMU_wq}I`>)@r&+`gz@*cx|*MHQ}^a*1z0h2M@Z_TXE$pS3Sat!xb>!=&D1>3V5 z!~NAE>XCe(!7ebxD9o)lkfAlN$ zDW2nH{=#ry^iTCOMtvoePfW&VxF7naIumm+KZ`Nk2d$#6&3D+G?HKNV_E8V!2#)7u zhWnli)hoD;Tlp!&{m#Sc6a1bRd5z&d=kMw#e8Cv{a&Z{$Z>CVEV^-#7A%^>!71Y)F zHXE}Q!~M)2>i&F}qZu6g9o)XdeayM)C0xag+|F?S@(cAbe#^7`iQ&HGZ|aBqn^E-F zUSqgl`Gz_*Gcr4aW66W_AMR6@QCDUy2FH{KU)PM`{$v+*Zw}&cj$^nlIa9rW%ej_Y z816^zQy=2jJk1LX_aSeo@AEOAGkVO>a)kSj3DwD&mRXpK;l5)Db$M1}T{dF4-`GLj zo&7kJqZsZpPF2t0Vy@%{hWm@3sSofdPx1$b`-(rS@9+;kWrRLjxStqTorI~Ffp0O~ zM=YW)%}T7v`V99E+o(IU7YFh^hWmyes%LOMmvIfl{lZVwd-)}g^E;mB72f1MKH@)& z7HBXA_lH$@e*hv$=>LaXmlgE`H7<{Dx=v zBd_yUKHy(`$yWjwY{8sfXJV#gdS+uD7G^0{WDVA16Sih2_T&H#;}}llbk5^auI480 z;2s|2S3JdYyv$#Cmw)mZgJau*`NU*=Cgq#V#2n1eVl2xltj%}WobA|^eK?pSIG&R^ ziwn7e>$sJlaz79A1i$A+UgK^4&L@1q7;!^6#bF|*U^-@HZWdxmR$$=kS7h#i%{0;k zOv-S7C4)K}!+nKtpSifl%d#?SvL3_zx^Ta_y~n$`pkBt++{kU* z#c;p%koq`JG2F+yq`uDE{2%sTU1!H(c>Gxkb>M4U=s3W{Ov&^N=loyolZW$d;{C1J zi9I=h;atb4CvrOHaVf)jZc^{y9vJM=)|6XW;S4>d0}NfqJ2O1;gXKx2iwoejet3 z9QS?E09iy{&G{R_w^|IP&oL zyLUZ4njdf)=Q2F*Zk2i?w{thYV0gUUx9Z@(^$wmNe&P-O#_%}1ztvHqgLVg z>eIZytGvbVxVgvb=ZvmD5t|7a9xsP7sB>-jOmUzmsUz$ku_M4O&A`J)=Axy12~Lh z7#@cXNL$>U^8w@nWsi9od8Z`7Xob#6D0@<6JJ`Du&00 zZCCH+7d*yq86Fq*lllgK<3s+<@OZG-^eN);4W?#BhR1>BQx|0!R%R`R$A2|bw`CXh z<{*a0eT`F3;!G~!a)!ryZBg&!J|5!NJk1Nd%3Hk8$9&G{feXLj_8glDnVe~vg}GRe zC0L%-SeK31k{#Hc{Wz4PIDu0+hl{zA8@P?1@c@tVB!A!~{>(f4gHIX!al**+KjSh9 zQ!xYIVqO+uX;xxQ)@M_;VQ2Q@K)%PZ{E#y^pUb$0oB0X%@=G4)cRbH4yvcif#D5q~ ze3V5`*H|J@_kO>Y%bzQT+ffWi=Xodzu_7F$m{%- z5BL{f@)doT*O{0pnV#90hlN>+6 zHwSSz$8i#8asiifEw^wd_wf+F=4oEwRo>!#KIU^q4-6=dJpVHxlQS)|Fc%B51k1A; z>#`ABvID!bABS=jCvYm~a4}bM1Gn)r9^g@)lS(bXIv&>DrVqY z%*!Gy%}T7v`fSQJ?95&q$oDvwA94oga~aogGe6;8e#ztfj^}xWH+heb_z$B68ri{| zVle@eF%2^_CkwDR%dsl!upwKpJ-e|lhj1j{=M>K7B7Vg6{FuA=Igjugp5c$Y&R_X} zfAJ+>NfOHGbtYy?re`+hVPTeHMb=Fpl9wPUk!> zlCPu+<@7oeGbPhA8}qO*OR*wrupXPRH9N5<2XGk2a3ZI39+z@8H*p8|@F2h9DW2nH z{=&Qblg}76FyJJ(9mQmPCgq#V#2n1eVl2xltj%}WobA|^eK?pSIG&R^iwn7e>$sJl zaz79A1i$A+UgK^4&L@1q7;lDhio--q!F0^Z+$_YBtibAgn~m9u9od8Z`7THE15V>y zF5xO}><9LixPLczlDYnUUF>XpLixPPxJ<%S%)qypmql2b zl~|MY*_3VAnY}oW?{O?Y3V5`*H|J@_kO>Y%bzQT+ffWi=Xodzu_7F$m{%-5BL{f@|6ss zoL*;Qreu0%V;&Y}DOO|+)?*X4W+(RK01o3APULjX<5I5XChp)K9^_X%#dEyOUwD^) z@)@IM4CND(@tKrwG81z!KZ~&}tFSiTVRN=)SN7pxj^KDs<}5Dc3a;Z;e#-qk%oF^c z7kQ1h`8%KR1!H6ij<3wLrK5AkcB<^^8mE#Bv2K4$54_ zurqscAm8Iye#jY|&t+W0&HRLW`6Z9@JD%qi-sC+#;y;X*EtFF%CSWqAVP@uJ0TyRD zR%IPFWDB-uH}>Taj^z8C!r5HJkGP&6a~D775q`rn{E^rBDrhGiJ6k= znT>f^n59^eHCT^L*qWW#lLI)6V>pr1Igd-Znwz+Tdw7sv@f6STGJoM+{>f*Inmv?H zOvYzYzR66?!Tc=7vaG_|e22~1j$PS@gE@lZIhnJ#kSn;3Tlp#X^Ds~FdtT%<-sbOo z!WWE@Ba~AdCSnSvV^-#7A(mtXR_EJn%vS8k9_-I|Ihr4E8s~BeS8*e^b2q=>F@DRl z{E0XC8z1s-M#&k<=QYOT8%)iN%+7o)$}+6XT5P~(Y|Ad}%|RT_ah$}NT)^dA%Pri= zeLTdkd72k^mA81GkNKR@bA@t>&4f(Ow9LX>EXWcp&uXm8Mr_Fr?9P51%2Axashq>b zT*(dG#?N?wM|qMz@DhLK9sa?m4E!0?Q2(ECnS`mBfp0M{i?B2+u_o)YDci6!dvPG& z<5+&k8Jy2$T*J-$gnRiVkMld8=M~=MJwD<;jFu;qQ!FN6GNxf>=41gDXE|179X4bO zwr4l?#+%2vlDxA0Ecl5CvrOHaVb}G6L)YA5ArLX;yGUCFTBe?`HaE8MG@Km zXM85*o6N)<%+F#h%POqRci5cm*p+=am?JozlR1kExq|Dsm7j7y5Ay`S=S5!QZT`+D ze8CujdnCb};xG|YFdefpHw&>OE3i7>W@ENuNA_TUzRS`4fYUgaOSp;~xt+WD1&{Gt zp5;%x!Qc3he=|yfP(H6Q9^YVUW@L8eV^Nl2W!7Q?He*|MVQ&uNaE{|7&g23v=UQ&z zPVVC&e$CUoz^lB)`+Usjj9xI5Q*0(=a;9Y#=3+sXV0l(!T{dD%c3^k*<4}&`1Wx4~ zF6K&Z;5L5713b!;{DGJFGw<*ZK4nCqP(H6RE|V}7Gw?0uWf7KUCDvqpHf0-jW-kup zdmPITIfL`LjBB`=pKvd~@&W(iOTJPhG~cf?F;g-< zvoQ|~vlJ_`2J5j2TeA~;asY>M3@36r=W!`la}#%P4-fJyp5i%P<}bXpxRsxBKM(T+zvo3><8A)V zCw##e#X>p7VIrnrI%Z{V7Gg z%b$3IzwsgeW|ZQgd|qQbzQNSY$n4C=qAbJ8ti=Xw#Hf6pIO%jA@veIaz?kS&mg%hYi_+ z?b(feIfNtmKBsUt7x5#m=f~W|&v}I3@C<+Cb^gi+{EIL7O6gEeuQM@IGCi{~4-2yt zE3yXbu?btV6MJ$1hj9!iaysX6DOYn7cW@66@++R=IbP;3yvslNj8V&k@`=g#Ov*Qz zi8+{`#aNbASex&#Ioq)-`*1Kva6Bh-78h~_*KsR9<$fOK34YIuyvE!7olp3JG0KK= zio--q!F0^Z+$_YBtibAgn~m9u9od8Z`7THE15V>yF5xO}>=mLixPLczlDYnUUF{pvpc}j%d6jXQgsGT;Z!s^6urw>NChM~)+psfxaUkF0SboSE zoX=%k!_EAJd-)}g^E;mB72f1MKH@)&Rxy-QEGA$wreS90WC0duIaXyIHe?I7XE*lc z5RT;goWj{$#E-b1A9EK!=MjFxGyIX)`70mrFTUg}l|nha&csZ~^vuRQEX-1@$QrE2 zCTz`4?8yNf#xb18>72)Cgxy% z7GqgfVQs#{=4{8V?8Ctv!SS5TSzO2!T*s~al>2#@C-^-t@)~dRcRt|@#;6j?DGn1c z1=BGrbF&ajvI48~Z8l~rc4QCs=er!u4>*l;xrD2@k=wbOU+@^e$54_urqscAm8Iye#jY|&t+W0 z&HRLW`6Z9@JD%qi-sC+#;y;X5Ba~AtCSWqAVP@uJ0TyRDR%IPFWDB-uH}>Taj^z8C z!r5HJkGP&6a~D775q`rn{E^rBD3Syo|f zzQg8h$FA(d!5qQyoXlBV$Q4}2t^Abxd6*~oJumVaZ}WFP;S0v79m**V6EOwTF)MSk z5KFQGtMhF(W-E4N5BBG~9L*0njdQt#tGJQdxtm|`7{BFN{=^&njSu-ZqtprI^BUvv z4W?#BW@kPYWf@jxEjC~?wq+Og<{%E|I8NeBF5q&m?&X&} z&hL1hS9p{6_=x{7TD?$Cv6z6#n1-2|lLc6uS7_~ttpO}o#qya2r440UqT^{=iH8nRoaHpE9Cx zD4$mumr0n48Tc0SvItAF5^J(Po3af%vlj>QJ&xsvoWc2A#x>l`Pq>#~@;JZad0yd7 z-s23&zRxL~%|-l(>-jNv@pB&G zH$1~1d7Z!V0srDlzS1<5)9XykluXZT%)`Pg#fq%KdTheh?8KfNz+oK2iJZ=PT*}ql z#2wtjgZzr8c#fC(3-9tzK4a8op?qR8K9llIW?~NJXEBy#71riEY|eJ<%03*-5ggCS zoW+G)!FAlqPr09md4k{bBCqi_f9DgvV2tLWoZ>JMQ!pK~GB*pcBrC8w-)3XBVn_C1 zf4qVF&^JwYG!11=3`NoVP)20 z12$t@c42Q0;&6`RB+ldlF6UZq;ZE-3A%4x%yuhox#ru5B=ZxMmlv8XbWOAlu7Up6> zmSA~SV_i04OLky)_Tx~F;sj3R94_WcZs0b4#sfUcll*~~_%rYD4?bl?t580#GA@%a z6*KTH=4BC;4>^PLxr}SLnV)bkzvOX#$Md|xo4m(I{D;w6 zhjNO=1Wd*>%*>oDz~U^&s;t9?Y{B;I#=acFk$j(1IGc<35!dr$?&9Y>!f$wnKk_<% zit=Wk^Ie^1Bh7&oR^SG3&xrsZthX?r; zPw^Zt^B3ObpM1usZA1CQWPB#&o6N)<%+F#h%POqRci5cm*p+=am?JozlR1kExq|Ds zm7j7y5Ay`S=S5!QZT`+De8Cv)LOI1@BBo$EW@T;`Vo6qDb-vBUY{ic3!Tx-gqxk`+ zaW0o|6*qD_ck>G#* z9K_)q$4Q*Y1zgUx+`^sQ$3y&@r+I-_d5ib?n9mu#Lnx=%OvvO+%Ph>rf-J%Etj4-* z#Fp&9?(D~*9K{Ko$~j!jmE6E>{EP>9lqdNEFY#yI;U9d;h>oFrUS(V+VJc?eTg=NM zEX_)+$@*-{Htft^9LV=LmLGBk=W`j?a5F#QUVh2r{Ep{&g*SPRkN6LxbqeJaiwT&F zX_%QgS%Ae^j#XKQ4cUV2*^PZUgd_Prr*JkG@guJ1$K1uwd4%8a41eTx{>lgZi!b>~ z=TJ_sGci*#J+me1oZ(k=dD#MOlWGS&I$WjBVM4y*Y@(IgXP! zlMA?G$N3%4^9pbB9v|@^M(Y{MDHanj8PhN`bFu)7 zvmC3k4jZxs+p`<{atKHAeNN$QF5*XA&yTr_pYsU6;TitO>-?1u_!nRDm0qEoUT0#a zWO`;}9u{UPR%8vi?J-Lur}XebGBnw_TgZT;CN2vEH2~0cWAq8-6o-kJg6Wu*xmk!MS%KC0HXE}QJF*A+^IeYS2b{*aT*6h{$nD(CFL;dK z@+^Pi4gSW5{F_nwhVprh@%RQ)Gb6JzAB(aKE3+0Guo>I33wv`AhjSb!aV8gVIoEOv zcXA&O@oS#u1zzPX-sfXJXY_udoMJN}lQS)|Fc%B51k1A;>#`ABvID!bABS=jCvYm~ za4}bM1Gn)r9^g@)q6FY+31^LIYs3&t26 z$|(*LF$L2xD|53DOR@s1^KCX}D|TcL_UF4C%?~(@bGd}8xRKkrn_uu4zvWr}#2fsL z5BWEv3<>4)8sqT|re;QFXFe8X8CGU3HefThWf%75AP(m^PU1{1;Bv0z7VhLe9^%(L z%?rHBTfEQ5e9q`YLpjA}LMCTgW??QCWC@mMHP&S#wqyr(XFm?*C{Ey1&f#LNKjM0R%w7DPNB9lT@JC+fuYAD2_>!-@7s}~%CT2>eXEx?xVU}V=)?ht0 zVQY3`PY&QPj^RX3=R7XuYHs2V?%_dx#Zx@T%lw6R`6r(->hMrLF&Upp`6e?l2lKNS z%d!e<^Bp#4J9cFs4(14s=VZ>}LayLCZsn)k&%->y?|G5ec$>fT312YAh)_;(n20Hu zj#-(Tg;HwSSz$8i#8asiifEw^wd_wf+F=4oEwRo>!# zKIU^q9~H_eHWM;A(=rQlu^>yZJgc!T8?hxjusi#4C`WMur*aM#b0s%$8$aU#9_2~? zz)Sp@clZaNGGcTnpH~@|NtlWm_!jfB2urgPYqCC@vJE@47YFh^j^&4(!TDUqHQdZk zxR+n@IKSh0Ug1sN<0JmVXk$V-#bN>`V;W{=P8MKsmSa`cVMDfHdv;@A4&g|?&ncYE zMf`~C`7w9#a~|P0Ji{M(oxkz{|Kdx&GB%Xc>rBj)OwVl0!@?}ZimbtUY{J&;#GV|$ zVI0GWoX&Y%%GKP&9o)l%{EDY|j+glh@A6MRW7Kh>d}1;_lk!bwVh-kKF_vW&*5*5G z&UWm|J{-&u9M8#|#f4nKb==BNxu1u5g5UEZukkj2=M%nQjPaqI;xG|YFdefpHw&>O zE3i7>W@ENuNA_TUzRS`4fYUgaOSp;~xt+WD1&{Gtp5;%x!Qc3he>2Map?qFrJifuy z%*gD_$D%C5%B;l(Y{s_i!rmOj;T*?FoXG`T&b8dao!rMm{F37pC~T+Ef+z-|1D2Y8ex`2#QUXWro- ze9DLqLixPPxJ<%S%)qypmql2bl~|MY*_3VAnY}oW?{O?Y3V5`*H|J@_kO>Y%bzQT+ffW zi=Xodzu_7F$m{%-5BL{f@|6!mIla!rOv&`j#yl*{Qmn`ttj8v7%}(se0UX9LoXF{% z$E94&P29mfJjkzjisyKlzwj>q6FY+31^LIYs3&xln$|(*LF$L2xD|53DOR@s1^KCX} zD|TcL_UF4C%?~(@bGd}8xRKkrn_uu4zvWr}#2fsL5BWEvObO-l8sqT|re;QFXFe8X z8CGU3HefThWf%75AP(m^PU1{1;Bv0z7VhLe9^%(L%?rHBTfEQ5e9q`oLpjA}LMCTg zW??QCWC@mMHP&S#wqyr(XFm?*C{Ey1&f#LNf^n59^eHCT^L*qWW#lLI)6V>pr1Igd-Znwz+T zdw7sv@f6STGJoM+{>f*IIy00{OvYzYzR66?!Tc=7vaG_|e22~1j$PS@gE@lZIhnJ# zkSn;3Tlp#X^Ds~FdtT%<-sbOo!WWD&E0j|lCSnSvV^-#7A(mtXR_EJn%vS8k9_-I| zIhr4E8s~BeS8*e^b2q=>F@DRl{E0XC8z1s-MwuPT=QYOT8%)iN%+7o)$}+6XT5P~( zY|Ad}%|RT_ah$}NT)^dA%Pri=eLTdkd72k^mA81GkNKR@=Y(>K&4f(Ow9LX>EXWcp z&uXm8Mr_Fr?9P51%2Axashq>bT*(dG#?N?wM|qMz@DhLK9sa?mjF=nB=T*jK5~gAX zzQw#O!qTk7nyk;JY{Sm%#esZ}WBDOxa6XrD4L9=>?&X&}&hL1hS9p{6_=x{7+PqLs zv6z6#n1-2|lLc6uS7-;A;-l+SC7$2XXo8JV5=Sd?X0nYGw}&DfS**qehm zoZ~o&Gr54vxt3eFllypxU-L9C@G5WdJ|FWrqc0BS6q^Z|oN1Ybxmb`TSf15bmyOtx z9oU`yIFzF}fm1n$i@A~;xQ(Cj0FUw{f8Ztl%sc#pPZ_Z!l+UY-%Op(2419}uS%jro zi8WcDP1%N>*^2}D9>?-S&ft75;~H+}C)~>~d7R(zJg@L3@9`1;VYH>8oMJHnlQ9i5 zGbanMILomr>#!kPusyr6FNbg>-{%z0<|2N?_57H-_&Ja88=m2hyv|?wfPe8NUs)E) z>2)S%N~UKv=3!x$Vnx=3TyKnHfK9_Wgiaa2#)7u&f-F@;5u&Qr`*rOJi+gI zk=J;ezw-%SFvf~dPH~usDVUB~nVW@Jk`-8;Z?iF5u_Jr1Ki}nOe!yv*%OzaJjoi-N z{DQ~$Ezj~N-r#S1$iEroqfkDtF&^JwYG!11=3`NoVP)2012$t@c42Q0;&6`RB+ldl zF6UZq;ZE-3A%4x%yuhox#ru5B=ZwBGlv8XbWOAlu7Up6>mSA~SV_i04OLky)_Tx~F z;sj3R94_WcZs0b4#sfUcll*~~_%rYD4?bnYs!%?!GA@%a6*KTH=4BC;4>^PLxr}SLnV)bkzvOX#$Md|xo4m(I{D;w2hjNO=1Wd*>%*>oDz~U^& zs;t9?Y{B;I#=acFk$j(1IGc<35!dr$?&9Y>!f$wnKk_<%it=Wk^Ie^1Bh7&oR^SG3&xrsZthX?r;Pw^Zt^B3ObpM1usYeV_O zWPB#&o6N)<%+F#h%POqRci5cm*p+=am?JozlR1kExq|Dsm7j7y5Ay`S=S5!QZT`+D ze8Cv&LOI1@BBo$EW@T;`Vo6qDb-vBUY{ic3!Tx-gqxk`+aW0o|6*qD_ck>G#*9K_)q$4Q*Y1zgUx+`^sQ z$3y&@r+I-_d5ib?n9mt~Lnx=%OvvO+%Ph>rf-J%Etj4-*#Fp&9?(D~*9K{Ko$~j!j zmE6E>{EP>9lqdNEFY#yI;U9d;h>f9qUS(V+VJc?eTg=NMEX_)+$@*-{Htft^9LV=L zmLGBk=W`j?a5F#QUVh2r{Ep{&g*SPRkN6LxZ3^WSiwT&FX_%QgS%Ae^j#XKQ4cUV2 z*^PZUgd_Prr*JkG@guJ1$K1uwd4%8a41eTx{>lgZi!b@g=1@+rGci*#J+m zUga&`=VLx+^lhP>VlyF=GcB_)7Ynik%d;BmvJqRd1G}>yhjJ7ra4P3;F;{W}xA8L` z;8C9B54^;md53@SDI>Or@_ChUnS`mBfp0M{i?B2+u_o)YDci6!dvPG&<5+&k8Jy2$ zT*J-$gnRiVkMld8=M~=MJwD<;jJ6|`Q!FN6GNxf>=41gDXE|179X4bOwr4l?$iXFS--XR+H2U`;kCS(cW?zC z;yP~NW^Ut7?&b&ljNfuU|6;yJlXWW0k}Su{ti}3l!c*Cno!Fgyn8KkP!-<^AnViFg zyq?Q=H&^iyuIDq{${pOrclj~D7;~!*IDQ!*F_$Vb~pKxQYf{>a~$D_3$phqEwC@Ms>(YCN6|*o3FB4NvD;Je&PEn4_4^3wbGLa{;g8 zQr^jxe3*~%X>Q@me4TsvAwTDL{Dq0!>ct~jipQ`Dk7ENiWec`rXZGN^9Kc~5%L{lh zFXLQZ!y9-jm-Bu;$|v|NU*Iczlkf2pe#Ia8I}bZ7S*L<5#xgvX)mev)crshFBfGLU z&u1z}ay+MSI%jb{ujS3WgDdzD*Kq?ka~pSZH$UKK{FeLq7xU#w)~PT{vK%Y37VEPK zPi0$nVt4jo3WstGCvqxhat;^rdM@MLT*XJYp3iVAcW@Wq<;VPzKkzr^4mC$Je?u>-rX7tiA$j$j%m^AcXctGJjq@pj(J2f3C{@j1T4*Z4Ny=coLJ zKl4xK4Iju+osM7$mSrW@WIdk9Q+OKBU^kw_{v5*5oWP4XgIDruF5xY_i}!IgALm9s z&+UAJ@9-mj!SDGia~+$sG6awQ+;V|r*@ErZnLT(e z2XGk2@&aDW%Q%<-DJd@(Di67x)U_r{}%Scb>4I_t0z zPiAX&WLNg)`Ap?Vj^`9k=Pb_WwY-^ka0MUYI&R=*ZsShw<_G+Y-*P|yV!m)96YaMP zvn0#0GHbCuoA6Y&WhZuLAEt09$8aL2awg|+A+P5$-py5fgzNbXw{iz}@m+q*FZlz1 zW9}o8^(nxjEX@k6#@alA&De?^*oD1#9tUv*(>R%z@CshV#k`5P^Iks4wS0=t@g=^- zxA{Ilj7 zH6Q0jKF{rZgYWPoe!=hgD{~#0tWSOx;ZZElsyvYj+`!G;#+}^F5BM3s<$nIf ze8rP>D$J5B$I7h5`fS2e*_NHyoqd?Xp&Y}BoXVM;!-c$_%Xl|e@e!`)Gu+A@+{JhK zF~8&w{EfLwB#@Z|A*ykZbuA zpW{n>jc@aPe#&q7Gyi1XZ~;E!{GTOQmX%nO^>`vr;b}aB-FOcBa|lOs0x#kWUdgMu zgtzc6-pAE^oE!N(xAP6Y!;km{zvr*aRVrDZ{4BzwSe{jRJR9;Pwq$#r$)4=XfgH|p zoWyCoob$MdH}W>#!w0yAPjVAq#{MMvkgz@ zSv;HlIGCfD&I@@dXLA9s<5J$qm3)|w@o8@1%Y2=C_#r>%cl?EkaHA=DpB>I4S&GN7 z3Xfw0Hf0O8V`ui@xg5Y@9Lo!MF)!m>Uc(!BE0^K2~TBPc4Bw-VG4(G3@36bXL1e~@_H`g-CV^-xSr2& zD|c`g-{r^rl0Wb_<}RD8PXQKXX;xr0*5(Op##ZdWF6_ngIEW*d#>u>dSMVw>=1shv z_wqrmuH?gfj8Ah5U*_xF!w>m6zvC}VR7lq6 za30B0JcdAHTd*BFvj@-R01o3=Ucifa8RzmE-oRVAocHrlKEY@C0$<^qe2<^- zEB?sedDyYZIu&Fwmf^9i&N^(wli8Xb*_FL{K2tf8<2i-XIg9goEpO%>T)~I9jvKg{ z+qjdv`2j!Ux7^Ran6F~8PK8;L zS8*|K;_bYb4{|M^;&Xh7ukmfZ&rkUcf99XeTRB;$BUplES&21Sk09eq=kglfz+1VT_w!Lc!DsmbU*Vg4 zkDu@>{>a~XSoLI`3bGi>@K{!79X8_0Y|W1B%HBMmsT|4ioWkjx#reFJH}ejz;6q%; z4cyFa+{xYifS>VO?&n|3S0h=c!Ys*htjt=h&n7&TZP|(4*@r0{$}ybCshr6!!GU3`}x^Gp7~-Ya$ z5?;ZpxR^KbcHYYext34yIljc#_%`3?r~HOL^H1ijm8{bdEWxs@#G0(f6L|_x;~DJ6 zbJ(9lIGPi95ohp9Ud<)Eg?I5juIA(1$mhA8Z}1&{#4q?ge`T)YlJ&{YB0P%aS(V4L zAx~mUw&$7b$-W%O;T*?FoW{#JkBfLCZ{t0DfNS_9H}OTj%D1?e`}j3~;vdX&e6mi3 zSe!?*B5SZN8?!mv@N}NVv)PY>Ig07Lke6~c7w|eR<(*u~hxr(v<`%xp*SUuu@^gO2 zUzn(!tk2;*lBIYItME8BU{khWJ9cIdp34Co#<9GB7xOaCI>|Z}WHFZEv8>KIY{ZkgnYCD-O?WEXvJ<pphIg@j^ zkk@k=@8&8#!u5QHTe*X~_%1)@m;8ahF?YRWeG0HBOS1y2u{KX&Gqz#}c404`$3Yyy zG*0Fvynm7Syq6DhEuZ3Ze2K5|ZNAS>`3-;OpUhi7S*Igdf@N8WHCc}*@)VxN zGuVyius?@zG$-&P&ft~2noD>K@8W%2&BwWs&vQH9;5++X6i+Ce%<2`(UYxpEL@kPGMx44)4_%(mxAI#G* zS*JoQ&ZAk8HCUI8*_>^7I?v+S?8m_z#dKcCOF5ehcpaDWPOjv`e2h2{&qw(L zpXCdDg>Ujbe!{Q#BY)>%jgoaL$YLzRV_BVb*oY^yH9N8^d-HszawNxd3a4`x=kr?L z%saS(4{;qga5J}YCwDV%!uyED7;gJ#Y(L@he}>^QK!)LPAj9zT3{Pfjc4Sxf=J`zJ zNRHoiIcU;nVIaX#Z)@S^C z<5P{dWhZuLAEt09$8aL2awg|6yY(2p=900V!fn9}!{yTq!|7&*;bS?&#*EizE8`v5 zg}wN%nqPbQJF`2_VL!&((Fo(?cmbz!24^$go)#Owk+<@0-p7X-Z&yzl-^3TVgKuyT zu~7z?8!PD`aOHH4u^ivo~*;6-?Jy{aOn5!$vPbR zJ$tea|LWhf|3|MggxkXz*E1ThDO<1|EXYWtM z%YB6PU4ms&dVQ>)gW+`8mJiFZ{3m`@;X~ z?J+*S?{2&4!xRqX7*6C=&g2{}&}_Cw;&~jz5lrJ`UcxJQ6&Ld+-p+gZAlLFKKF62% z8sFyo{FLADXa32&J~xhF36^Cg)?_`N$WwS4&tNy6!~Pt?(VW1GID=R6YA)d|yo>j7 zH6Q0jKF{rZgYWPoe!=hgD{~!|-0t$T2#;cUR^{<*$dlNT?Rh49vM&d6ILC1kr}1*m z<09V3+jtKj;2J*3O?;8B@-6P=K7P%g_y_akN!FV|Sp3bv)Hv4ff zM=_lj@>0&`0$#_Zypt>WFdyU7+`^anI`{BHe$Mas3lm`np7A|B9?4QXhE;eR8?Y%` zupK+I2hZgI1~TURuR0z)@bfo559w#VsT{#W$A!uDakl+$KMv+7rt?Bx%GvzyIxhUX z+fN*K==?Uheh;1BChPEj`~0?|&*gY~``@--i|-%A=NB{V_hxfG7c)NZz18^t^m)dA z*YWZHmi0GM-N$nZr*jtL_4c2={zw5?|xne4n548~)5cnb&dq z5iG&7ti+nE#}j!9PvaTv#&g)8LpYifcoAptN?y$+yoGo1KCb5D+{ov-op10Re#9^M zJ%42`$L;x9gh#PFtMYg@#8~6$k)i(?$HyUlQ8XTw zW3}mPBg66}>W-g0Dm`UDFg-2l(D+e$>ZJ5U-9ahoDT%rR#*feVU){0oMy8A(ny8zW zIz`(+azrX*i+ zkSaveQYMTZc<>svPfgG0V3sN*i`P44SbDoLX`NEWr)Mt8KLvI7>NaBrr6wm1N*yp^ zNWWpD2agGBD&uj=fB|W#6SGcDNlO_$BsHwRsJF?Ww9!LG4jZ5Te>^uTWnfy!@{gdA z!$ya>BwrA=iA3FjV@8ci9UZobf5Z$9D?9|X>ejh#N_u+QumKa&qd5&p8#5vLD#_n& z(dS8cdt|mo;ZbxBH8%{s!jQ*sU|h@ad>q$1hqz8z;?B+?E}9nSi_YP*oA013anZH* z?Bb###QDz6A?~6qaeZ@$i}oXNzVmX3Ta+d4{2bzzWr>TfRb;muE3?G)&mnGYmbjE0 z;-1YCHz0?&=ss$^yaRKHi;f@TxMe4(*+{hf_qU-;0zEL^EMW0J?Ty*a} zyZQFd5*OW@$}VnXmbmCWm0jGVEOFyMQb$z`?I*kaZSS$;gBlP(u4>4705WInj6NeharlK z`W5Yuv*tS{EMWieT-@S(J;D=N^KA+FqSr_HYK9@s7hRXgnlHNF(myVSxIiLW*IDyz z5BZ`#NBN?|rZ``8pEPT}-Jy`h!*g+q*T=f>MAo>kvWa`|fVgNz(e@O#czJ&gPh`y( zUH7jT2L z`ghv_`J%t$`C@oJZgHKL9+0nomi|TCO`I>fZyEl}Y`a3f=v*gm@wCSe$k#OF+ZQ&b zsDI7E5a)a0fPAgPg}~PFMi=7Ze9`wD;>XdvW`=WbtB0A29Tb%EU1M)2h`G$s|C|`>(#QCD{^Te--atsLhqJ3)IG9QMx zto_>`@uzo{O zl&?z|vddSseE3YvOp^WjSQ7F@$5>ImX#Uyds}auCqvN!=Wu`u0{cZ_=Ky+3Jit=?2 zLw5PD4*8;MfpN=xctF0clfwE9&qevdWq@q+jjfnSgc4@9?D9>TQXmmRGxEjfThV?p z^Zgs<6}7n)|K9euB;<>?zxaIXVEI;sd{0D)we0%0A>`W^Vxr}Z&$kYiZ$zcAy@&UC z+_KBJ{K5i>u0@mi;`6P8&paqqIv zH*{Ws#I7C5d?_J3yX_@C6eT)dk6UI}57=H>_A8i}6oR7u4Gcqe`Syl#h}M7Hvg=>Xr3EuT--dDu`9$y>myo!+4ZkQgItN| znqJ&8A0DuNcZENk8{G?t@{I{YcKLn|Unt%bCktkmZ{O;I8P_VKeB*M+w?2HKEV}0q zx9sx0_eiLp{>A582dm#(jdLZU?_R|%yL=ti7ECOVFFxNoSiYi7b0tb;CdqzzcRf}x z5uF1^%Nw0bWLLjxC*?{E$s6}B`+ODG7fdt_$AD43$vNbk8xE*H{Tux|dt<>wOUrv< z4*4d8gObYs=w7z#cgeE_GxyI^bI5mH$QRv9id$w^!*dzOYo=`o`NoFF(eh3ULw5CB zA5Ju){bbxSA0Cjee)xmW8^XjW-}EqKm#_9|xe^PbiCT8~zS$DiZ&+_pz8PVN^OXwo z&3sLG{>iWrToEmp7Edb{_s{c9!ylp^8XiaaE(=4PFZw=V^qR1n&uDGC1qg{v# zyPdJ&VMgoGsX(GmJQ9pkM~2YMHZ#O62*=s;!ZSC7A)0U49cF9;S$21clD!LL++zuo YGFqIkSQyJ1H}>U%iRd0<+~T-@1C?l{1^@s6 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.su new file mode 100644 index 0000000..e235edd --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.su @@ -0,0 +1,13 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:229:19:HAL_FLASH_Program 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:271:19:HAL_FLASH_Program_IT 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:302:6:HAL_FLASH_IRQHandler 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:417:13:HAL_FLASH_EndOfOperationCallback 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:434:13:HAL_FLASH_OperationErrorCallback 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:467:19:HAL_FLASH_Unlock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:502:19:HAL_FLASH_Lock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:514:19:HAL_FLASH_OB_Unlock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:550:19:HAL_FLASH_OB_Lock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:563:19:HAL_FLASH_OB_Launch 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:595:10:HAL_FLASH_GetError 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:617:19:FLASH_WaitForLastOperation 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c:668:13:FLASH_SetErrorCode 16 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.cyclo new file mode 100644 index 0000000..8ebac3a --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.cyclo @@ -0,0 +1,31 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:185:19:HAL_FLASHEx_Erase 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:281:19:HAL_FLASHEx_Erase_IT 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:404:19:HAL_FLASHEx_OBProgram 11 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:486:6:HAL_FLASHEx_OBGetConfig 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:540:19:HAL_FLASHEx_AdvOBProgram 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:597:6:HAL_FLASHEx_AdvOBGetConfig 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:749:19:HAL_FLASHEx_DATAEEPROM_Unlock 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:768:19:HAL_FLASHEx_DATAEEPROM_Lock 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:788:19:HAL_FLASHEx_DATAEEPROM_Erase 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:846:21:HAL_FLASHEx_DATAEEPROM_Program 9 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:911:6:HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:920:6:HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:956:26:FLASH_OB_RDPConfig 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1020:26:FLASH_OB_BORConfig 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1058:16:FLASH_OB_GetUser 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1072:16:FLASH_OB_GetRDP 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1090:16:FLASH_OB_GetBOR 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1104:26:FLASH_OB_WRPConfig 6 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1235:13:FLASH_OB_WRPConfigWRP1OrPCROP1 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1281:13:FLASH_OB_WRPConfigWRP2OrPCROP2 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1327:13:FLASH_OB_WRPConfigWRP3 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1372:13:FLASH_OB_WRPConfigWRP4 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1422:26:FLASH_OB_UserConfig 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1475:26:FLASH_OB_BootConfig 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1524:26:FLASH_DATAEEPROM_FastProgramByte 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1584:26:FLASH_DATAEEPROM_FastProgramHalfWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1652:26:FLASH_DATAEEPROM_FastProgramWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1683:26:FLASH_DATAEEPROM_ProgramByte 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1737:26:FLASH_DATAEEPROM_ProgramHalfWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1798:26:FLASH_DATAEEPROM_ProgramWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1843:6:FLASH_PageErase 1 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.d new file mode 100644 index 0000000..a16b882 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..401d88d6e23b3a2b027e524918617d04ed9ae14f GIT binary patch literal 728060 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

>$3Zj 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.su new file mode 100644 index 0000000..2d287b1 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.su @@ -0,0 +1,31 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:185:19:HAL_FLASHEx_Erase 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:281:19:HAL_FLASHEx_Erase_IT 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:404:19:HAL_FLASHEx_OBProgram 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:486:6:HAL_FLASHEx_OBGetConfig 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:540:19:HAL_FLASHEx_AdvOBProgram 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:597:6:HAL_FLASHEx_AdvOBGetConfig 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:749:19:HAL_FLASHEx_DATAEEPROM_Unlock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:768:19:HAL_FLASHEx_DATAEEPROM_Lock 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:788:19:HAL_FLASHEx_DATAEEPROM_Erase 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:846:21:HAL_FLASHEx_DATAEEPROM_Program 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:911:6:HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:920:6:HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:956:26:FLASH_OB_RDPConfig 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1020:26:FLASH_OB_BORConfig 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1058:16:FLASH_OB_GetUser 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1072:16:FLASH_OB_GetRDP 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1090:16:FLASH_OB_GetBOR 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1104:26:FLASH_OB_WRPConfig 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1235:13:FLASH_OB_WRPConfigWRP1OrPCROP1 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1281:13:FLASH_OB_WRPConfigWRP2OrPCROP2 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1327:13:FLASH_OB_WRPConfigWRP3 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1372:13:FLASH_OB_WRPConfigWRP4 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1422:26:FLASH_OB_UserConfig 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1475:26:FLASH_OB_BootConfig 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1524:26:FLASH_DATAEEPROM_FastProgramByte 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1584:26:FLASH_DATAEEPROM_FastProgramHalfWord 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1652:26:FLASH_DATAEEPROM_FastProgramWord 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1683:26:FLASH_DATAEEPROM_ProgramByte 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1737:26:FLASH_DATAEEPROM_ProgramHalfWord 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1798:26:FLASH_DATAEEPROM_ProgramWord 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c:1843:6:FLASH_PageErase 16 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.cyclo new file mode 100644 index 0000000..569838d --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.cyclo @@ -0,0 +1,10 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:113:30:HAL_FLASHEx_EnableRunPowerDown 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:126:30:HAL_FLASHEx_DisableRunPowerDown 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:163:30:HAL_FLASHEx_EraseParallelPage 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:224:30:HAL_FLASHEx_ProgramParallelHalfPage 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:302:30:HAL_FLASHEx_HalfPageProgram 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:394:30:HAL_FLASHEx_GetError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:426:30:HAL_FLASHEx_DATAEEPROM_EraseDoubleWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:486:30:HAL_FLASHEx_DATAEEPROM_ProgramDoubleWord 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:586:37:FLASHRAM_WaitForLastOperation 9 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c:540:37:FLASHRAM_SetErrorCode 5 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.d new file mode 100644 index 0000000..49ae568 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o new file mode 100644 index 0000000000000000000000000000000000000000..57e3d012b293e4d939135f7247f82e70d65a2820 GIT binary patch literal 713660 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'oe0IIfSD* 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

K(yq4Ph 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 +9r0jW$gB?LH90 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

Py+GZEa}?tk93ne6 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 itFGw_CZvS4QD|zRf$ZOR>^KbTe@)@ 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�px6 zL1AOthp+*$EnHaQWs&ZpPZUyLXxGy(zE9fdCO~!Oq6LsXELVFGbi%Dwo`RtVU4#WXxB=dt;Rm`|gicSla;S2+DHp_UL*AMj z+f;@$b@EQX;mPkBZSpd`*KipkB(A0`l%{j2-dGrr7Zx-R6gR(|&$B}j0{^YgXv-v$ zNF?i&1xzLZrr|~y`3WIom>OYhQg8@`k@W-* zr*k)SacD>Kut`JdLexI!sbShjsEb2;Nob}9n*eENeGVj7x(ZpRhqFgk8p7L2EfOJj zNz$UH1EFqHab9o+28jo>h&WwH6&a685t;;{dse_#r;R~la-e3AA{yA3B(b*nFoHDJ zBv+{Wi&NpBRR4tqIST`*G%g-9v?NN=M*Fj69o6!13G-$3I#Fd#b#APje}+<2RXCkb zZ?p&z-_4fjSGr*_AD|fn*;yVBktfpf3MPoZ*yRzTAdGhHFwzQ2A|0?H#ge~0#gb1C zhQ&~7mv*yUSSnfqK}sc#1P&JRXW}ldI9!7Jt6?Hz)A3HTbqy8DJ_ZqFgqjN>(OQ7F z4GJxU!Kx~^#!lD`W-#&f1dbL=+c>VI# z)#QuYjhioSS@?qg_CNU1j|?9_=>L^?JFY{Jggkm#Z(nw9Dbt|I2Jt@PxI8 zSuqPN4ANeM(HcKBd794{V(ygsBKU~*q}t(Q;q;n z>7iU{OVqi*LO_(r4>baF=s886E%ydpxvfLk1fizrMn~T+(i&xKHzIyiNmxr%jzWwsqi_bwo*MW?n(SSWi(I652 zowxEoX%P?)2L}iOC>BS@v!&;-Lxor_xbihKkl2wy^-|EZ>62j1(@teOoK&zUMqdRd4KQh0dCEIq9PX#Aou0NLU3#vT@7HYYONR`>jY7a*m0%>j4mw}!is*Y zU-Q^!iuIdK~hK^BB_Q49R%Lhd8EHMFF{(p508IEb)`rFvp?E-qzo0vaiG|ug*1je=&`<%KX~>cR%t4Ta zsukhXE+mrjf;3vhS~0++Ys`NX9*ikd&pn!xoPu&rp1-{L*~P2X>znK6XnA20zeC+( z2^|U9!za@@c&f}#um)j6szh7J2epy_4voz6_yrP>5KlcNuz^wb zIh;W3=oqsejOL8iqx6S1uI_}0vFcP5c?n$*d7Qe%Q6;4q^TP&l{)hK@;vB0qs zRS>ZylH$`bx51H=wSjeq6EJjGB?BNHj^3D}LyMn-*oTPHePC&D;hI^l+l6aO?@5s^ z(_JCj4<-#oN?`F*ay~=;KK?N*U_a=`=s#YA@xXvyJ5iWl-#RPxMM8M)+R;!~MBy2U zw03|3g9SecAuYyTth{7xe+!8$UdDlFK47nl@IKIEU}Fm@``SX{ajKvj)&_zgZQuF1 z$O)UPll_AeA3+-n54CHxuW64%7(dg1WSg_!`X|JOX_y?Y!g z9aWe!x|O2s*oWHvhmrOZAGpQd@P*M)uJ}yrxIOpR& zYX6Y&T5r$e$@ngt7l3-RxV6fdPwYbX3YX{ojS!yQjguuH%#(^P4m`B2Y$M?ynVrA3u~z?1XcC9j4~1{a?+t=_kd+Ns@j$+p z^_NbJr4%Y+WPLI(BR&mVBrdNKE7vv;po~Bj$^Yl?Mm*029NkRu2Z6o$TbLSO2KXzk za{+U>Z&a@ICs@-MHWv;Z)dIsOwHtp!imqz{O;2`eC~Y1-@|sT6{@WL?)$dr*B-~kQ zQVC(;5P3WJ-&KFdCXAxx;|G_BdcsP$H0X9zMk`*;exhh~VA?Kl0LAw10_ywtQmBM6 z+4zcm@3SL3kc<+#2&is}6gi~A2=HLqS<#?JQI@6}>>Ye^xj&Dw^(dPFlGzFOD z&R{EJHp&$e=Q6nwB#4fO!^baNe`|}D`4FE$tQq8r&R~!d5^7DT-Fql6XT9I4{c^Jt zo9Ad#NO#LNk6=P{2`dM&vUG$}ZO%H55eGN;Ke2230WMvQxI#vT=jN^*vNe9^kYTg) z&N1j~_RcYzaErg|b%qb#Iiz{_5Ljj2^&seU?;0}PdiR*o*LWKmiQf4vDw*#Zgh_t) zAk6Z+2Mtf({jhfr8NYkT&bx;Ux86Nw)VzDl*4KC)pz^zKglT^FAWZYS2MrJ3JO!wUMv@wOD-Am3 zdF2nNFqZ^D`rS)49$%u9Nsl*$f|5%pZy3}i=Su|9J6;tx45Pr$_>p`!)8%2wfE|QA z#X8Q#V4(}r>B6&0doSXU5Q##F<}Wh=qgKnfUmcs^fY(#(uChB~>~0W+L*8hEXh5!N zcI=l^x=^yp;S$1rb|kn9L^nUZer2LH-tb`GlNCc>DBjq@A61G->MG=!vMKr{3kd`< z7QI4HWlZwC>M>LDE+#?1x46P1M7nmqi{o8;eMJ~bn5E~4; zpwa>hDfIX})=STlLDJ^H0|=!y1*3&Gtx%tf!s-M$elY=~2YdT%(O#PvjMj{>nJ!efhs zD0Zmxa9bCF?UrdHWuCL3D4InIMx8G_^%o!F{Up0h1$9vRI{Fa0Kj$q^I+E?S|-UL zv^r^b-e`#j*--7O*x6WJ5zL_y+WTOKRp78l^2)>aw2x3@?G~E1i$qodZFt8<4Zfjz z14mx98x!P*sA5MxtF`j_wC0MWO+B>!pir~UMB0Ms!%=`^=sDo91Zca2ij*`(rzv|^sRI(`ppV{5vd|PMt$9@oE@uIZGnZ}Q-4tuWElzC0 zDNWAR)$3>fe1+~tSD_aO$s^3Vti;ZMNapV%8X}iBRIju!et88`TxCWnw=I+TW(Lp9 zG>IJ9Bp@M_5E5c8;0MvkAo?WRKu+{K>L1|+L(ql|5=9%%e)5CNSQR-1e4xr`L^2m9 zgN-q(?3%H}jUlN!9T#6)M-1kJCLYl}ykQO+OU+jhmK(4*Q5n?j?!$%6AMGFS7z zp=u87KycMBkyNiz7*~%@L(F^!kU{g2;ixL4I23dC7`8D`h{vR2tIhuEX^%V1}H1G*x((@P^WMPlY$0VsR z9n#81#Peb(@PjdrEcnFyH@#tLObRUO1c%~#@lNH{V<`5Cr}0CMN~g80=+~)Ur;AuhYP%A4_POwWyh9*fUV2orfeybJvEy(HL94}SmwSJKt=@B>O!JdB=HcV(I$TLy*YUQT@i zH9i(Wu!(ILxMp!vGLWDP#`&RK;`K>c&Vi93>1xnUx*F`;)H0$0(uL)FmXd{^(*#G9 zwQyMkC%AIPcS`H3u$FJ)y}||ZUI~vpjB(dIw;si~tB;AXdKTo?_Is)pg7J6j4{J#} zK|yj+9{ePS3d4yV>H~R#B8vz3FYRKuVA@b!gnT2Ka9C&+){{@^H@UyPyS=qL8ji+0 zTg_;=xxM;mG}t-GW=A5N0Y#n=f` zI*zMb=8$m1WKy#}zo4O%OK|6y5?ri%4$wVv^eO8E3}o~2MMn^5%GoI8SJ$uE zrQqsz^%OyOxA4B9YvE+EuvB)7lZqrSg7A|3tmbO+)9V*6R?o+7zR4q{0a$fQP7mGF4{X#caH zOy}oDq(p0Z{&I0x)>CGx9HEJ4B0&-LP>zAL_#o6Ix<47)hmV?nX})a2wRz)xeB z(3lyq*$j}A+cXxo4P--!D9WVTj#*L!2DDFU51B3r^KCG_=i*2UnASWOaJ_uB^8}$p z3D#xY)5pyMSxM(i*)KvvN|=TV143SCL3|2`F9x+q)KT*Y2g~haK26H%vm=PdvKk

=^C@LTqP|Bu4oswcR-f)DHtfXjzNa3i;&h<$$HZCLEL@K=q# z$`*QlO6x-T+j`)fAY6n+BNf$ipnUHRfMhb#EHQuEqxcyx#n(R&wrY@`7^GRxnIDgt zGrwsWm}!IN%mc{1K`!XLBzIaC!-DtH;fedJ312dIf}_lfSre#qIA5rJVsFuhn( zi4@)-K!7iw0UfKksiD3-)W&n2Hqr+64yOB;hoE+-kVr0K0fUTbW*8F;@3aO1tnHu> z!`U(rIgdDOM!1+8iMtg&*5MOUiBxIP*|E?I`+PDPqY^1z*NT~$NYBDR(mcF!R6G{) zY1L@aZ)DLA zW7i6#q*}~ms5fENH^tS9G>(3z2hC8HtUbcsC}U1w5yk_21#0FcpJ-69T+34ihf!k~ z(x3^V<0j26!4$cnaUcJfm3}|y$QZl2ddw1MS7j$=`Yg?Uf?NBSxXNK{AOefD&sv-& z!3!y&GC(WE!<=idO3Y^Tk;s=8nb^Vk*Vyi*A17(K=o`~LO>8D;(=8{ka%aJW(BhYa0 zl2#zgL=#$ufE`DdMvK%p&pchKR@2eov#3xAIn-uGE-qFme4N-1nMpm_@n9sD?G(v4-WEAX+w3-Qbd0UQxn({asLyT zOs+mTDMA7A^L{l{J`_S)YpCl2JBhdY-dJ9wM!@6Jua1*%Ky`~ERwv&;d0x}2{i%da z?9h5KE1*6=mH@P;e*5b6o0HXx&)@v?s#&tv8M4M-_XG42lG4fa>=3So2Gx1a7BiG> z6YCMSbLV(V4w>abLN7K|4c9|OrL(k0IL&kB)dALJM2smTTcqnS`G#b{IbI8>OR~+3 zV+;qHutwhA1bR$N_tQ>=PEO*>EW5p#w#I|y`POD? ztYgkfW3twX0al)NCkE%bcZ|>rh}z@TnAsZAnwYXdY6z`NwyDVx*2t(1zY|19o?Eby z5C{@dq#%2u34yRI!j+1f}4pP^KDRU z5Hi)lTZ%STdIDB%*-}-$V0eE#7&f~*(QM< z^a+}W+Qs8MBZI+0V1;h$$|1!nrzs)2N8U7cR10u@W013{7(n_C<)WOnQSD$Ts(b$MtfRcm zJ!*<;7eT4ZGkP+LF{?mM_fUC}69Ya}iiJk_5>&64WFyt7&154T^A_T#>=ywJ7eCvU z*NvD!E{E%$L>^#OOz%)+rJ1K|5Ys!Rs9z!|7KCd(&Gtq1wKWK%AqF%}TN}$RS~DWi z*7@WJ1T4Bkbf}L8t)8Kw(mJBp2I76f_Qq3VSe9v$Z4Y*^U+2+TX3*xxgg7X2^ek?%hA`)_awnu-z#BSRu2ov(xa@#0)+WkUV)N*Jb+wJ)evaR ziNR(_>Al^Jjy(5Qz`|ROMS9ZdEGHlZ+&dX;{b~N{;HMhuU!OVo zP%T{`|19%|D8*bptw0){zRD5`omCY^k&0spb=$bC>m8X9^g)tF5&#uOK5;MB9F8;t zjw|$u;y*N}pFcdhesRm%7zvHqz@A%@lxT2dp{T)QuV7b3TENWkrvLNn=RdUgSNuZg zDqX(w>8D4;T}Uu-+=m~$zX58GK*{$}IFG*mn077=7H(W#g`50f-IX8oja|nJH_)F~ z-1364`tNFStr69VkPOn+(I$KOiiDhz5SN{&j6h&0-9wz#g!G70v!FMpEoGP-b`9Dy zQC?;O0s=endLSp1(W$>2OdlZ{<{hLaMNkb`F4S+0BNwuU*_m?-*bM(xdbPV(gGA7 zOWZ7WNgnDLLgiz=abN+u))oZ>hxI;C^b|f?DuT0P#vm{pp3w;IcS=X}I|WIb`JOIq zGux9dMe5-}noO0_S~0MLn;y&e_;T`q!eFf&XCTdn(F19r7gN~h;;-my#cqb7uDFr* zc`C!M8@VSGcs)ri3JXuDK>ko<7NJV#Iu6W5^U9pX5Sd#LB?)p8%vj3F$^>@5{o z&*S}M#DOW&E8FT9fTo{2;bJoWuA@EanNY=JT7s(}9tuf#A>Zc{P>iMZ#Yu;bMka^d z#oyPAaP|(IL5U{?ZQzF=>E2vxN@s%@%#5G@)Z_loUp~Kn^X&PmfAjLi>o-D-P^PfP zif~@DMg1Ocgs$12P8CIg@54_Zqq|Jq77gSb_lgjg%__uYvzS4&mDGeISUJVOU8Ls8 zzK9|~kZ1_e`*4o25>e(vQDTUOD71Gjzf2BNN^yYVg~JXuM}KD+kF}UdSy5FdYFH~t zmVS7^uHow z-*+C}`^NsIe1u?m#vll!r^~o;3?c+d6yw2YNG-PXmL`^g7TWyQEQsr}hiroLL+^F( zg0DzM2f)oHYF;>79z1saBOVJ+^;nSY^GRSgBw-+LtqMQ6jHp~mkC_RBV@DDOIih~3 zc#3BTfm9;PwU8?@hv;9ETU8zQHIB=x=YtfrFRO` z+|CeM?C512gI{5xxrTmlPdl^sS&6JO?`}wS`d^_qnrT8c?yeYUJKn3rHp|dZrRE+ z#_j^V8L{9z*`o~tVIb3oiWBK)foVr*LYb$g>ey+o5y%iH4-=ReNvwWJyR{qE+%oa2 zzDAJJfa&iq(0_}$4oip!5GkPtTg(_{`Rlm-L(+1)T0&LlZGdJWk|lB(azb%Mvr%Lt z>$HDgAgflEHWrP5MDz`E&nUgbEHa5QR_^r9)U!J-x-0XHWo*UL=7_HMQnu;Xmd8T^ zLJNyfgb1B_z-4J*gNB9J>k+rT`}aynB(StDxgiLcmZGaa4**n9|qALRlEwjC2_UA65!?`UO zE_|lg}on3hgfM-aSUopu~?Fg!&IB@S(V83{r%<6)3-)pP!)QAqwN3Oq2Bw z=Dom$m~?Z|j3XQJV@E$T=|r@19;z=!F}cjdWXKKbuc#X+87&3f&gs4+9n%Z9p~Zx9 zYCqwvpmwAC;buYXYMACgY9MGM`fN}7`GFoJub@KP(em(Eo?M?@TEoGPuu8LM&r#ix z5uL-nj*m|m|E?3&`?w^cOz7}7HeZ8k{)BlT?hFvzn=@X2ehywv$qouM64O6wJg zp=VV|jomj6FdwMl+}SQ}x` z1tOp))-aCf#cFknv|ptEE4r*~Y3HYeEg}F>{RAf}Paqv=%NRZFe30?RMq5JhTgd

DDz9Mkw=t&rbpWYk6$7d(}N-CqYvy>Ve=Mde>D1=HHP<+EVm`B(`3^;^~Q!cx33F?uu*b^()4V|yJn#rJMQvqZtLCIKl zSc|n{b&|e%N}Z^_Nye)^u22I=&6vSYBpIf&I74|_RKl|=X$TNU%5pF=kUlQ(GQ^R9 z%Vh+KHLaWj8Y~V^WzUxu!;+uSwsEj%guBRw@g6KrxNprtx5cIz_81FWl1EizCcRJjfA;FT& z!%`h6UyAru|)03WE)U{ z3@=gyfamIBRgyXqq656rOKbs@av_mOXy)<4^3zYcd>7a(C39E>j)x1)IPr)F`Zl3p zMu(ui=URFPSl_~xb8^y@H5GAalSZ>AVizQ>54RY}6Q=)QHq%>8f4+M0X7TdvtDDu; z{;SpX&-8jK0P5M{`^ZCk04l)bqyviF#P z{L(6tm!~im0 z*CSYT{+W3=QH=HkjoM<(dPU@#1tCvu_kLBN8%xnwCbn}KtbWh&q`5%PLMKjH1Z)A; z+SR&`YF-t>?r=X9p+~J|s>c%3p4>93t+3c?ZPnhg2B~as|SQ#RS z%C~QUbx}@mW3;rJ+Dn***9bhg6TMx_fH`mP7Ru}>ANj3V7%aiUi>p1m?Wuq9y+fcUL74D9+}Wf0%MUCL?>v!h=ir~E8#mk zj`P8D$jwUwcp#|A3MA^ush9-spHmcv=$mrE4Z*bKp*;!`5`&bPoH9z)itJD$z`)oR zAl7W}@H2N05L!(y#`q3|et4mV>^R)rMMEhnR`p3d0WW*?@N#qN-Q?RJ)l}$!*sBa+=CHqny0?%X;PYKiFPz+;M zHEQ)JjF6p{!9Qk?&(U_!45oJtsq!1y{)#VaZ4%ug(C!aiQ(RaD?vyAXAh8=E>W(XR z_hQ-ZSe8xe`a!q@8cd_P`S7c+HR6sqgIP@X&%BOsccc{AL;Dy!O>4-H>L47kNjs7=_Oth#v?F(%`%Dw zK-QQsr8L-@KV|sQ1;pRWxw@e+vUnf-_rXl@{OM4*;v`SyYJeLs4;rz`lSSpjh!Ka* zMa8LugToWi^L^da=?xW7(_z>};SY?^ayU%e18Q3hCKQh!?Tl3*J`ILp&%i@~A(#+c zK@pkoA!-yfV^}m;glZoW6?e0>u?-y0eXI=l4bwZ{|5M-=yF zg$NZ;-!9G}*$mJ;mV0w~S1k8tiseqpK={>Mc<*|K1Eg>R^m92w&=CU<3Odj=!gm;P zl=DJjI|$JfT|rtznk=j(lsp;^@?cCYyZ7ycq#{O0f0>!SXK=KS`sw#o)|OR7V@;$U zy0!+e-WmeQ&=;6~{Vr$KraP;kjJeyTnvx8ld*b^gHX{UlGCnQHQw7rSVneufqM@hO zF!N#x%1FPv{lj@6g^?Yr?9u0^bWO*(01C@2Q%IV|7N%jyWnt<=6&wgG44>ZP*0GI~4DwzCCDMl6A|GKk zne>Un8an_1hw*f2I0;Z6g}Iquy${n^SG^TW&c%dVXm}nnm=XL=cyv6#?1D7bOzuYk zc9QNWYN^rgv>Ip@5t-%^IeON9Nn?7>*?}2tKCSHZK5$od_&i1&+=T>+_|JYvSeTbhHmPHZ5 ziKm}eW{cB6S7cyS3q+CF&Bzj97Qz9iF{}i?ecoJFru)`td$yZeFk@4=*};A+;TTkQ z;;R+$l}G|(E^56&iifv_ep*n!LnZ%ALo2sVVA_k@v`tEbs8@< z1d&(;qZyE_P=IZaRvEAAJ;K~T9Nw`!ivW{uR$1JN*hLo4hBqkQeT{L(@r<2Fy5Phts%kAu) z7#?97ZWb`7$IW1bR(fy*sFj{smBerzM@J^omNvIhcYK=D{D8-F+Tn5ws?iV5@CF6h zC`5>GmG&A<6b*6w!&nt+M%BAm0c$qcs~LkRmVuKGaGy9I^Hli?V?(o+4@* zG5sh8zIcp+M?*xp8t=8Vt{8XM6e7c#A(~rAJfVtgB>KeD7?YZy8jsGY4=&c4LtC&? z&ATOo}19x z-!scpgUnsTK6<1bHzjgO?UeH=GrObFfG)F}fZ8&GtUMX*Oy1X1Mi#_m5>&Vrory+XEHD(K*GKmRuhw?Lf6ZDUw_|J(v z5KD7`N^mH_`G6|ar8^28t{8;n$VyGh5=0$h0BreS4Qs;oVL-mC5*^8^Hu=l2 zM2QKxPktyrvJ}b?s9ZVaBT}7uT%2!gW>H`VL3f-no0PrDBF{H(nCI+75b*OC|;ABq9!xE4@&W)*x(Y@hRNwcpK0^eImJCg z)lnHqN#fx^`BM1uJdH-_n)>Fk53y|K+?0Q%u z1#;;D@&pQjDR)AV{@kBv*{;XEAv(2lyH%@12O!w}Vsl3{iS{JxrBg6SUQ39XzTE_1ZSDWNAr zrV6NOPP~iEt}q#OIaAhIjBv3VjJ&! z31Ay?7z2fIBANj-;aH&19mtY}^3cTq@ny%g=F;hS%?c#qgq?|!J*Ba&fQEGt+(H4V z*A3FmHRFZI7V?3AV{A~EtxsucJNq}Sw|v*H2%joBU2 zhk-q;nvdo(EShg`FTWqPFkqibNI><$Pd5~hK%)jNFSMU}pNMoFe%fG*mN6Q0?2C_} zK24TH8?X|Fv6%rrhQIo9lMUq1_(@FPwLBnj6iz%hkYTOM+Vi(BE?)j(_3Gf|FJ4F# z7c^CJ$>E9#L@pRg+h%Pjd7w|^YkLtYxF$rh>WX|=wM)K8%BKn?Kx-#3-#ox{fpIde zlj4T4Obcv!$W}^`Gh0X(MANC{c2JT0F?`=}UXOrVRQ^8Xc|HzkFWzhwZbXr2^|OM& zFx)LZqkE6CUV{1A)NusqbBJI7*VPI@PrN#tK1O?T1liA-_|^aZ`2P6*;QP+2SrbK( z;lV)Wyw8&CE0{I}r6|kgwlz-qB*Y8urOJo_-tQgcJn{Yg%=#sosf+LnC{4*vWjQ)q z?YXkkIVfAU@FK7#o8Pf5J|3a|S@JgO$jU|K=8v;SZ1FTdK1cPR&kpD3Fe4gkGy+BH zo?+qX;(_RN#@lMB-ciYT?0tYZBN=mT9^>g&O9XRY02iY@CmJ)8z|{p7dA0p#1Qy|m zQ0IUYWkesD=}|wiX%Vqh#>!|Kxq&F<@r!3~SPG5GE@wKF1;MH$0!e9%GB7klUYLbG zY%=tLC$o8Kfi+Ruec;KTz!bLl z$t;|36ntEm5pmQ`sNfXZ9Oest(C(n>1PPD~9lccd0-PbRUYiW zkB`a0*o!%sgy=CvahJ-&Z_4AD+3w;TWudX35kIv&qI6ss^&-@r>h84;@qsc9E#5vM z{%aW^YLWHQTul^5lUVz^8PbBmoWku zj(nT`Aw}$?-t_)s4zix?AFb==G3! z-=gIqN*}UYnhG)ZlsQLs?c5$hjb%}mRp zX&F>67s@NhIdY1AM+h08W_1?OwPe1>7NIE4<>git)xqd{G(A8qqE2>HgQNh4`ml{y zdOT_^J_?qZlUFhTf)gRVslH_P^@z-@q2a2u`WT(rkF z8Q~fyW+FQQx zmV;m$H!g{OXim<(7h*0C5gzPvk0U5YGDx#(Q|@wqxQ?-!oCR+)Qs)B{pln%$7_h{h zLzaAaxpx2*@yEKMx?_N7s63Xoc}t`T+t+ut;fuEcq`4E~roy^R>_P}CkaUZbk=8aYVw#CN38`v9ap&U_=b%xF)=?Lp@%TwKs#`iJ}myHI|r-_+O*7Dz2>}d5(_J z**Zo38SIva&b=jwngm|CN0W$}31XYMI;_M}-RZH^WS>)z#c`;TX<4KBbvfN)#cv^CJHWbh!D=INQ06SB}A=I ztF5ZTh2UnEW#d^{gD|vlVqKpftvNqlbAEHp`K>kQx4{NvH;rnDyAT{xxqt9_HPqY} z=OCIeeIo}6t~@6?anH+lQH;=>3VlP;ui{`E&2S`wgm>K3LF|T`Huyvg7n2hjqsh#ubjZ2$A1|rP+RUA*e*H9?Kpr9%s=c^tiMVSE!2bU-;A>}n5X+~9E3GIWofa0gA_Yn|0F98} zRKC&fYIOuTbCCjw0%h=G(7e;F8}hqUY=vcA(r>K+((@_jTzOT;o!-%63e#2D5zfyg zMY2mQ0hy>PcO=sgH^@HNZRT1@p#yh?w=hqGi*GeCq_(gMiPauSJO|QIQfbs#7+&*Z zq}kIF6knODF~SUSjETT%YiEQwN>FG9R2sDL3|`DW%*dT04_Bsu zfta)EG?lq?ApG&!@hNEW6iz+lDT0%lfK6fu*Ai+2;usWb6nxC-wC0bCpd1Qy^DK^x;)20>XIITHf_`F#DiTOwGX+M8 z3wR|(WOb7%Qpl9tWLJ^cK+fCWyF7q94@J*H6dV)ZH-ZQVX|F-bRdzTm4`Iv_Yk^T< zcm?z=AC0P*QG18V=b^7=%xy-Dw`O2PP zeWAW-3joX^+s@S?$l>o$n7rdcD0u4@>3FCY5ow=1UtPbtSiQJ?_TqDNBZJi5bsF!m zJVM1wrUao!?fLwH@@sAHF|r1m@8m=TL~KFp%eS5?;|XuOc=Phh)0ej^i5bqmTR^RO z5QKKz56ByiC@Xl$DX4#CF)zz9;A!DvB9BE|yTW#k&*a;2i<2fZv!vhs| zwI7kr)iXK<=t5gzw=$4?lgucoscY|aj4LExm&%ESWgCjdHK^(=<}n}`=kq9daD3Ww z=gqp<&m+ZtQs{NEm)95)b<0m^M}v=q#udPBGQ{pweSZrl{2C_~VkQBX3W=87S_v=J zQdhx$cY5N2L6s{*{$YF^+JFvD9(bOqhZkg9(czJ-cUUwXqO;svT#nu$cj(b%zVHX!e>|$aNLIO_a`)0i(DRU#E z5GKMj-1eQ`0+Y&D45fb7I(ofUls?qfC-~C~4=;peDzGp-Nl*dXx0=r^*4I@U0GZ#0 zTL{E4c_Yt%zPmy->DQXMHBmZ3WZTgUddnJC5eD|wlcLRPCRSYBlK!AniVGS3Z$7T z$OA~4jNn{iYd-=x2qApnewoyA&`;md0mZkwE~e11gY!%HyoDLWzsHxLRQR8vtr)Py za`9v6f#kn~VB#oFa^0b`LVr3#MqbRIHpwqLW%CjOCd$eTLuG=uh(;8b^8E0Os3?BK zbT(#!H_30?$n&F60v6LSo`=Em_8Xnb>=yWkB z42mo0Sz32A>#|IqnO&mWS*iKORp_t)kE?V6n@=*&i5!X5u~y*ax2lJK;g`Co}ERFCj@ySTj+?PXRJ;VkA(B;rm?glju|5(&PR~V z7qAeE_zqt^z#6To$}j=^qho2x0r4>*ZLO{1Cx`|IqiMpCz*}9tpg)HBfgvKo3v=T( zjC_3@0#hw`4%?sj$4FhYS;Hc=98zmWh|tpgL48NKVyS%@`X!4z`D_M=LKDu*vgBo+ z7{kXFLyf12n5YPfV%!KhZe0%Ia8klEMw*$DQ6=~!OqtzEe52_{#Pwy#@Y8!pO5a9lO+@NwGVW82{*l&;t{xnkEyn<3>w-k`r5xv`0B1H5o5 z5ofws4$(u6oJPsYC8bQYMQPQ&2UAFdA|w$GY{*rid_%f;@pTvq*D%Dz+YOy}xBEr0 z)`b=m{i3*hN^_(ID-WG20Qx?#EblbLnz6%vbu5Y^KIBzy_(n%qGSd&LlNzmDTTO=4 za2|qlJc0;f*=!Xk;o~OF(Vm-azkP#++-zZVzMY$Q?e``l6oIDZhI}GJu#5sp5P8=W zR^A$BcxWPVh^Pr7F-WF6WRIpSl@C`r6g43E)emT~faBcqaQq~D(9_QtAn!}L)sehK z+Ff@K_$x-BqnwUB&q4p>D`U=2VR+|H=2y-8T_;044v6XD9*sQZ9>kk0j`;cx)u(Ii zfdSdmqap#Q$c)dBs_5)1ug;GKA06gsFk}EPC(917bhh90A=-UlL*TH znaJX|4f+l9&9M3YvL4(NTR006-he!pcHeyUx{#e8T|a-jl8&Nv$c1M)pd$@JW<7K{ z%p*#g1wTEe2K8!mj>3r1T}b*^jm3juzdF|bN`yt+A31NyXq9M+Wz1(Xs;AJ~H4;(D z*brTOd9ug4V!@Q74C^M8UVemLzGyrjiqC65Wr0=dMVye%Y5Z-`=1ws= zC*Ce1lQez8GPR#jE)u0mheCMWx;6_9N1X!Ba3rIU)zO5k)WGejca&|O7*DaotBrMt z!;LqfqA%T?{*#^g`#%dvx0FAp`alMMEfHYoA*e#r$;r^-+vl z6K$dKNhJVYEwL>v4s1j;ll@8C%ajuKP+~YD#Vu8uuoJqEdr7fMuBcKeD4e7M>HAuX zA9Kss=xm|THM|#(QTukzO87toqh;%K|Ly_$98R!|XdHtdw&o1~4Bcl~Z9EPSEmF)o71hb_k`^E04)8+kGQ)~MUWOsTt`OM@qOs@W%2Y8s1 zqb^Mc^mrd!gkBT*5$Q7*kgVDx3;2;6>f*7So?a}bXA2N`=pqgCgYXNeP)N z;IWgH-U^PE7@qO<)(HE47D;6f_onpOa%vJtAHb*4v`y~{HvFB=6@%-tSODNtQzaPN zE=H3DOL?pi3)CZyiF=O)F|$a8>}$HfE%tyYQL%?DN#>T5#(4~<@tBA5`6eMCdqfRt zlj&&qUbj=_1A=5?K@$u|^wuCioh(pK_94JDQ<@bEosIW*d@4X1jE;k<1`Y`H&7cqG zXF(|QWfqEIw8dJ<5%@v6><@scqJcv{DR%-^CZqEa4#DrO#(%3bqaEDT)^5o?} z#WN$Yk#+g<2WI&TDMz-+(YF&?CK5se8rq&CYg{KrEF?mGFJr7Jn ziw_XQd<&nLfL2Z@7gO{xodkgjinZ+k^&r?I)*MzZTFs~PM<{U3*=wKn_hjC-_5pQv z;K`xySf0;~2?5;RwJ|qg-L6%frFJbgCR7rbMFL}!(j2&^)k`B?CD-i64o(_XN)6HC z(Xv5F$qP!&o?pNIX<1T=Wb>f}Bs*i1a>M%yaQD`^;Ki#{zS-pNOz!3F%m?CU8 zQgV;3Ze1e~MOsY_AN6$lRM#bae!UXM6um7O|tTA3>^HaKdjIC*RPAASZf+$YK4bo;7bhNPn%!K}lw>_AC z+DE@}Og)Q6lLkuB!+7x%EC@`JIBip|;?Q_i>b)|lAx=-ujqvLD0g|sB$VIft|-oM3RxF&y_=>B?CKig{~=|uMj5c#%&LZ2 zd<@)}>kSsMHUa6($3JG|NoP?bPz6>QkSO0#oIS!K%{Ivt4O2w7XR^h9!%M} zYa5!8vJq|8ZfntR%?*V!uTBfSn71lqv$Ak4x!q>K$H3f523mt#WEi}Ax_^oKBKj)$ zS{V*o``G$jC-uH0fL=x$H2JP>%L^0c4NDYvZFC#O@Y!@^ZB>?TI4iSQfF*>N`N_Gb z^w@#k4BIq%yx3LCq_}uW!O+<75GxUk+4LFak`8qTn@LGeW`(8Y2hGx##}W#_M`@ak zCw-?&PP~{>%I#;8qn(LwM)xs?cq|brR1%9&k*>>4lZDg5V2V`_5&2=XEX+9H86%7H zAqc-7zb=n&*X1WOgTl)Q8hwP;KJ+lNsLEgWE!mW%)^gCtKR$l(`pxx=n-xNw=EEPj zqy=LD(yCZ*nBgqn_@aN&|HV(AJzpuPxiiGP^kaKIoMo!o8rnJ-Gq_+$Z&mb8-kbC_ z8i}gO6A)RuiWRy2%7frQ51ETYGcb%d z2f#m+zJ1pqE09YZLEH-QAN!YIvOJn2JJl>RirSD~yrxuM3r5%TF|J=8&prbYH1BhM zf?^vCBVKPVEAvU3f+Zj;bzuyS4L5vaPfs6TUNo+0LI<8${oY#B6h!pd-0sfi+hmna z_Y&wkKhhRy5R}NcdV00vHI+SNlL-cxX!`EzaO}2kF;iE-;NdF8{0gX#DK?BbQK0$z zn{ndAu&G=hhXfQT)rD?Z0ez0}>WE!fFJpDWWpYl1bvZvS`-4h_io1FM`7Rv6P9IUb zhL1wrPxK0h=2RKT*H|Kuba8%OZcPxxZVy$}qXP~CL#GQ--wK>Tl1@Fl1;{7Ci#xhZ zjphLo@Asa6{*tlcQUFZi-#a-xSJ(k{0+(_4i3;p>YzkhL!cJl3Ggb06TDo{q9$Xu+ z2)0T%%A&cxLZblnR}VgI>(^wI-tAj_flSo^L3k<@tdr^zlg7(-dK5cs8e6 zE-I96f%Q^+=;Z7GIx_y31a%|416Mtl))I7jkxuA|(ib4hpDbwFMLI|5Ry-kXGG2oJ zqhljd{Ok~4gagSjiflmgU-h08aUw|XNUKR5!n`$pu%D@8crdF8wWZHIexME2?YRv> z(Xq4nKb*pM;9i_B*mzE(jpx)H5S}*1DrRxJINB8;-MfBmWQ3lU?>*d$Nou_1u(1DT zH&h^AV8%n}X;?Bu!02^pu+>6d?7`-R6v)XD!n{nm z#R>wz8g4ix2JTTf5QgI~3Hk9To!857W*G`IN}(_#Of+Kfv_j`(DnRn3+wDlPEk;Qz zMXTN%HiVL37a&c2QVQ^%6G#bS6~^0WXs9daB3o!(_fXpnKIzd8LtBfhvP#y(>y{fL zxi;{{A-YIq9PNgP@Ut{V&6XN*d0Hdq0$vj6&Ok_YMQc==w~3{BLsm$^|4i=;tTN4L z?zjx|w$AoOj1p<1_N>fypJ+zSM#d6>*;IRmP_D)f2bkt0Y1#-i=xAm?`9YTT+hke4 zFl93**mj^ZtfRoNxHCojtqA6()DpOO&@=I25PwmS6-7v4oTT5Efx{QiUa-T`iYc8; zv6wRk9vH*a5+@=g_#a?WvmKVnoc#@}Q7#hRRH9HnVOl5Lwx*&YqSKX=$v>M=ZC4+l z3FQe{ClJ+SuJw4NRW&sbp7eRVqstUIM7JUZGPB^?8DKnoEo9D*Ujjsk|BpGZh&5ld)59(8(dV=P~{cvff3aziV;axxjBIY)V@ zr(|d_EVIiBh-RU8IGOxqf8+4%vcG)!^7-rj)0eOMDq-Fqj_!}{zgj&X-fsrYc(B`S zeLUPALQNE4*w@*u;kbvt-@$+X7Ju*czV)l`{?2!Lf5wyk*T2{6?S1##|MI=P@Amh; z^BecxzW3d4?|tVxd;imSd&Ri_?Y&~$xBizjtQdD6_x1bzA@27u8&-@Pq;bECar1TK znlz60TdW&*R*t*Q$MpdVfA-wp{FmSQ&+)~4^26``Ccd|Lx8K8H{|1gY$nUlH0|2jA z*H51H-upg&{@V7(r@deQ?cX^4t#5tr+rRhT@4xp4_x|v`KYH(v-}{qa|30Ry^_QRf zcJKfCxA}m3J>D_>-Ru41bbw#?inrwPpZES=G2+jAe}v=z=Ud_ApNAj%_g?S)YW({e z|KG)zdcPX~7uEQ`sNfqFe4~PYP{BW_;2&1-4=eab75pQ;FPFgnJ_(%-$_Fdg96z22xg-mH#)Ssnj%b-Z02?^ee@td4(F9sgBzyjLAhs^e*O zd{`YHSH};k zIPP5ne!cgoIR1^^zbcM@v-jT@$G_G4zl-DF?)_P$9lYP)>ix&X@$dBhRdM{C-v3w} zf4BE;1RI@gMa5O>z8(z3pGi@ApT&*TwN4_x|hR`0w}r&*JzW^oGBlU;ht#UlhlG()%xq z3s^jlf$A7mvCMQpS z_jYVRcOIn*Q$f{x}`r*S+4~ua3*zey{frEBK#O$N#80?pMcu z+WV(iB4R-wOZ`3Y|DX9W<+JaBzyGx#lhb{#_ZPkY%#X?GzSrC6{TF^rx$1kp4|@NV zA5(t%Uhl)+|4@wosQ176F=z7o;IF;cZ@w5c&xc=qb@kKh=U1P9`RwKWo8F(j>HXPl z?-yU7!P5P~_3di+`swcVlhxMF^^@Jz&eNw&GujznZ(VOS+fOyDyvxnY7fS{(O|W^S`EvKam{Gw{`Qlt&0#aXxovj0S5KSK z>dE!fYn-^<-W~2<4|elwHk+?jylU(I=F{8l?Wd@4aJ@U+8KL6A?&kLO`1WaYy;|)+ zzSC7#FIK;J{_M%s&sVQrKYRHCSE7m3aCrM z3NIXP-fza+t4(~^V2G!T#^dJZ$CceoA#233V8kYOI|U!Kivp6{P4k(ansyxHrqR!E5n1EFJ3=;oz2^* zxj(+$+-cw?9p4Ow*E`Mb_3rj&vo%=lY>uC7KHXXA)oxzCT3y|IF~YlTZQXx*Gv2zn zz8UWB3&ZU@J6N4u@@=>8@* z!tLfQUw?D!dUrG)0l&9yZg0@R=w@>#zwE28xI{bK_fd}H$?eW~b9;M?Nq(|}CFR?V zZ-BXjC;7I}u6(}w{QBmXoQ~%HPO~$-9o>wd4z_NFPY^6~JKh}JV1`Dc&70NJkw5Pi z*vIeMy+63U*&PhFo{aD~JmYrv=6Zz(afN|%+r@V|6|ieJ|6lg*Gg^wW?GrsgK*@+m zmYj3WIp>@~at6s+a?X-OBqvFdL85}E&UxlMXU#iv-Vd|R zIv-d+uHIeUUH_`OtLobK-n(G-);SC0%T=&Vt~>?v2)Cs*rMEpxTY zU$9lqe_grPpS9=f?Upxx_B?@iXxp+t{sQ@11vYt`{B3gu7RcK!SKIu#^5kjVF8{w@ zwt3rNM!9olFBm)`3%1JLDtL(H4lLC+SD`j}3kLS+cDVxkP6B@EpxT}H}4%B`Mi0q>;((tYn3l|yIk!GwWSGH`^n&hziayf$5120wVN>@5ql${iTz+6ITncDZr~c8I`klBaF{ z{5b=AVqk0koA(YJB)voHohy5rR;>fWWzItFTDJ)tU2Ou12mVtiSDwHQ-8N^gcA>H5 zUx(Xv!MS6h)B+=CyF57yKwumQ?BxYRgTcSPefNGnt$Ch;!Lco0>(;Fbib9xNKFRK%0DR|IHQ)ylLJ-*;}^C)23bPws`{sN?_aw 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 rLKo!=yTgomX4>5)%JTv9P! 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

k%Xxv4 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⁣f^76@Yw;X~Y(dpNCkR3^k6Fq(5s(x{v4Zm00A5un-OFM?Gy)~V5gGBARURrJ ze8gU)e~jsv9$qA29g!kdq=vx=5Ze_!Ctmaf3Z-45meub_TzhNR@=zcUS~h&B)SyQxlVPiM z$F9HVIzk-MFJ8oiZETDD+*xL+H>l z-fRJ{9B@K4-1(t1(nWf@F$iTaw6&(z9Mvoj7%RBvt!OQ@U#KkESgm{ zxG@e#UMy!#pap9DLiq?-e?)4xZqMikmC)+&L%(}&$ab^ zm|>(sxF;xc6w)_1c(O`*mX#5o&{!?lR+V|`wG!waQKVsjecWxr*NBI}v3 z;Q)kx3S*HEwX4V&NcONZx-kY2K0ZhtaX8jbz^uY5oGcmWfU#<>riw9euBM7P0I-@W z9r}#GYO2KBzrIfUKkzD?q5t}hz-@hfCEVNziCZ=?^d{+k7`ZUh*oEXX%?Ut_T{QNw z_7wp+ZFID{IONn57EBU_wBAx$UcoA@Mrp2!FcO0|eM?0x8-*N?+632&5C%NQWuDWZ z@=j6J;N7XDWFFtFoh{T&tDFdnQVLQ8E!I2EY9n_=m}0$GINWfw6U;J9OX}D(P`K|E zrYf#BB#pFHc0b*Nb&|U+cv?u3GRd3;u$eShd!}i{gaYA8K8B0Q6_=%edeK_s>OyNd zXkbW+6BEl~$m=)gIQKwYct zDVt?i{#4?NC+X~K>U7R4{6lX2Ws-Z&fX_pP=8Ovcn>8UP6VRDW7I_#j zh?03yk~u`+!p-aBv#WF2hpI*uTe}iYiQr$Y;5mMVe4!=9dIy{09t&r?ONabbQOVlJ z94fo&wpGEtnonP)8I>{6l{uUP4}z+>sFyDhYbYC@b@ zB44d!H|)cV3D-l12uNK}vjC4+*QV=dUk)Eb$2~T9u+*wV-6ut;DS+yQOp|d|&{Jn!Z;55fb!wd}3QPVK0N@QBFV@UaUVN^MXFj7>=gMXsp?tj-|NRi{gJeM(8 zj9f|7wsJ7lJ!`&Rs}}8CWxRrB%@1f85ev`~4-yG29ELO_U>7Mswp_$p zR^uX$YcmkARfw$I##n+LsRy?d=QG+2mXq)RUss_7Xfr&LVww;m4D=T=HVzQ=BfJec z-<+ofog04EPvqV ztVo?O;Ccrl;!~$?CdZ(pdw>;;epc0gyhqH#c0*%h!=wMS9=$O_>IsZ7@jo8pKdnb^ zjPS1wjIrf^JjQ=okKPztLt||HACK{$)}uE@oY4==W843DjQ_MAy)m|j#@LQAVo#|Z zTF%T0S%bVYe;S(z!84{JF@IBf2aZV?>0D!zP@I*jVsUU+hhcfZp(@ZGhGdrtS`owy zQd!IoWGkKK1`HwYP3Cx^cf3I)a|(ItEF$Y~7y~~v6&6M*Q@!}&>V`3>A|SilpO}Cq zk-UWpFy|BHm`#Pr4R8v1FBxuW(B@p_oMb4a^2gBn4Kqb#?fui&qEb*pvlR-hwl`4l zs7Zc+5q9MG!(;+fb)k?G^8zw4A#J3}^4Z?7ac(w{e=T_j`HDzT-3R{y9fh%=wPT5x z&icjx z08}yRul~9gt$Pg@dn4dMS=>m&!Kk0oo7}*OGvE1K4jO}0CO3e+R_rVHrTTDm6j8ti z)Ljy^`XVY14p2a}9E8_tXJ-?fZMoZgcB2|$&`-4*VFoeWFa|UWF760#@a!2($G0VCbP@G7la~!M_R!;BS>yOXfm#w6LV?^mp~vS6^7EL)fgIvK!3LHe zO`F0Gc8=5&^F5+K@T7yjr-SDl2n5;}UTl=cFP>csF7|GsNSHN)pAr2;)Cm=S4FntR z3S(qsz;GEUbgqFj&Y-m>u$cL>CJQFg?QT>^Q1~b#qnd@On_{^ zx;45gSIw`seAguPUYWc%ywaXo$X0P#>kg*}s6V$*~)nt@J$Y zMkQfEq+@l#G2QLeX%ilkCw$`?#dMA~AGwy^OCcV~^cW@_5*Zi2+?Pk>MuvXIqJW0b zR>gSku>@+6dUJ&tz)h5Dvcg`<69VNRN7db5MhrBidg%ZX-r)Sm!? zh{j1viatpIB4#p-@1*bhqmU;)z7!5YW0%PH%VZVkZlIZ3a;O&A`2JVQjBFKoN^L0- zTqO*f1Z(zx;Wbzxk`^3N1Cm0DfyYXK&B%=AN%qn08a(XTwFmWSj11t!dZaq!#L;#THxO%_qrRJ!qMJk@%k#jueVAafH!`+1cJMSb=i5I* z8RS%gWwN}A2r?`OFXGKEA6hUmvUE)5p2*yAI8>%qRgw+}ZGy`rf?lbI-`Lq-ng_%o zd(SV^xf*b>T12UMv4D!~F@aj|;E#@p>7{Ykpg^0^{YqFbT89w$_Qtr zSJUEqsj)|(J;Qfd%K2))K$#@tR^ws#P(2x=antF{r4?YRC8B3GR3t?6o&8yy%8?ap z;xdZ!jry@E&!+Q)#|9gK#;ClFnWgwXC6mEX9>N^2%Tb=dxU^@o>v9OR#28Rf;X=iL zcWS6e#_sVPxqL^=OXQ1;Y^Dy1uU2_5SrvRmSS?x}8w{R1xWNG@Y~`Ge3TKG}|C1GIIz=FtVbRqZUL0u= zrb~kDYve2Q7i|iu?&iR0!)7_ok6ziMMf766ARH=DJffKBpih$Z;^x6ANQjTEE0jx8 z39l0D5!?WVg_0tf0|G=EENZ$_M*ty46i}zL&)}SXoJJ1z5h|2k0N|cJmLeemUK=1n z{E}ZyGfw|J%t(M_OIcO z+pF%=sl$FXWs})t$jNd5%lNr6)q>lT(1`N`wdO|C zU#%zbm8F5O6U4u>QpAEH|6-^-1(JqyLtj7c2%$3!GE_WR$&1uh(y}O= zHf>d=au_bl=y`ccR9Ld$ zaUEvM_&l~{bZE!nN@;k96~ki_BSWK=;_!mu5o94qLRB5B(6|7Ay|erRw7LS!TrNAW z8^TZ*!@Errmor2wo(4ZKD!26gfmC)<=NH>?XmlfWr67K(3+H=)!sm9=M5@j7QgOqn z8%Vr35Lfs%nr;z4V|N_b(tUgJ4gs5BHgGE#`a!?bChKczOo6}GkcUG2wW;#xwUD_E z*kxgQG%Q&G*aW?T)T>};@L&3s2X`t&TcGgikoU32GIMHZ$bcwxWjeJ;@DC4Gdi zf@MvD@V!V{nj@j~08=<#0I%w*)lmqdGrDW&ZiEI#{5nL75QgJIm(I$|mQH=>vsSlWB z3Vw!s5}8yTJQfEeJXTu;kHskoQc7hO>;e{v1(VW)U{7`KRvo!jBA#^;w>#I>jUjXM z`93_bQII!*HBf&9fSCwO7zg9}ZD+tM!Efz(0Ieoiy6)G6CRI^Jp(V3M!Vbm50#QN~ zYZa`m010Y$U}(JrS{tV2D8jQUu7M-H00yCe`RZ7fL{^feq$!Q(ggi^yim`EJO9MKw z+?di`<<7X}%EUBmfSPd?MXK38)p?37vqZ0&+UG#Ie3C3LWm(Js|H6UNrWG}cr5Pti zSuDcF3xa{x=)jM!G_iD9e(AztLCxB)uewx#*|WfT^Qy%rA|R{KUkM!>&;L@rYMR^9 zK1@E%bVu%rFjZM>Z>N!(qF)?xor=&fO*ok#Y*r z;kgsZy&;mdGW>4dmxYcEf7xxTpv+*Fzdy~9l(=U=&~qp2XO+s=>F@|OC0dD&;FpkU zdeJIrKJ*gu@){>waID?GC}ox~PBOt3=;=A#@W9z%G)?>Nqit!iWXY(%f3^Yl+Y13&3iE`IBigvz=f_@*2@l)j3fwUb!H5 z%$|+{;TgSb<%3-;;aZFut}hRy)W%jJBt&xu_65;h0=tj;CKF~( z7prcOZCzyF)WgJxO$^pJ@-LwM#ztw_?iMaoQPUhHJ0tVQ5Eud-JpbqPO4R*zS! zcKsr$O`u8VK=P<n1o?f2p~(~lH*3ZrEtB+rczgHfwvHrC)PD+YZ^VQ&ZBGyY zU)rAW1_**8Es}r%P?YBvgxaRNwJS?~_2~89o!P(re&3gwRaxg8(DKg4D#9kt$vUs9 ztb9N0yxiRxXkMS>r}fC$OoSV#-a=uz7Gx8x9AHBkNVrXe;C$zmm{El}3QPwb@CK)7 zOh!GXWX_&;6K9XZw+~s-Rlt$afqFtnVCEW>UMoi5uvahs4&`g}{_}?)A25egISCZ1 z?J4s(2Z@lIu@|T2@)@bsAYA&ObchY86{i{nY%=99$eQ4qPkw_md1WWmU%q|m{?e4~ z8>gFWwl~ws_4wCcCC`#QU5?xUzFI$jvG@VRB>skXu2!MDK}dhCLI89C^Q(E+_pM zcz|A2i|w6m({C}9S}69&2YAw;&nXJbapc{`CIC!`t_-fAWvjdBl0MeFNeU5mev#$oh$Ual7wHHesv8 zRQi=pqKN1Pqy^C$MGXgI*KwpzXp7dsGY}Qv>2&C-4cu%^(YEf12Q-Ss49b_>?uYudlP%PG$chJ zQ`TyZfWH0Sn(W6##JDueKxwX7&lkbXl-{V{#dqC_3vH0Z0*Z-BMXV<=z$i0e5!&<_ zB_)U?Rjl#uv@L{8z@1mhPsuIIxgqV9*i9L3r~sXv7Y@k92NJCS+HL?Le0&Y)D`~jE zqZ`z9XLaEn(=pFY!?n}(EM@_SvM&mu3n~KAgi^ilP+BBzc5X+G^ zDa0b4#rrRBZkD%r8{m``x^uZ^RJUUnlmZssu|oG|dw%9g=Bh(!41W5Uu!>v4`QMdh z@fw~Gvu|?@fxqe~Xdv#wvTOQ|Sgr(uztu3B9#}IBZCd3#m0xvRx92rmjhyvJLsA#C zM0>mfh8J@afh*3~bz{&@r-gK;dPt0X}oHj}v!yBH&2Gh{RoUBI_OJuTW<^2P|^- zIje!&wL2}`2rILX-N4VdJ2;MPjj*Rdz>%$tm>YX8)j^OcAi3on9l3W!=Q_O^j!=UV zWR&I|h8%<))HLt0N<-srwkOCLAdKiE!h8rPLj}6DazA^qKumOJoZm!`Vlj{g)f<%% zdkd{$bL|73kuBA-kQ)k*oJdwJLde<7-r58YyfrqPtR)DBoKMgaNm99m?$`-UAa%{C zKBkOClG38&1XN`QETJ)gW~*V5&N&lIx}{ObC~AU<8o!qU<#0>g%wH@QDklP&HIDT{ znl~2|pP8T$M}k8bM3)=HN}CE+4>7|VM1G6Bm|@h{hI8J5q?f0A)C2YuOOmAU60vmH z$h*TMoO2NPU5~`2HyIv~(1UK!N+NwJ8VuQ6j1rd;2CwQ6j({7NW{K)`^;B(sRPAT8 zpiKns6LA?zfd*6$pqb*(iC%8Nl1@2;J_d-so1qgjP#`^b{lo75;;QFZ6+++=88mID zGIWPn3eXvAT|(kK6qfP?YhCgLBUX%7g2^qff4D_JF_Hv!>7dk(sc@cZ16jHk{4>K` z#7sTXrF+YNuqYVwtz{ws@nzf~M5P}BX-4o}2vh>S+=3rB#qj9_U*D;xIwEN1mk~CG zQ2j7_ne;Sm_(d0{r<5X(S8&Znk3m3E`9}m-wB;Wu8&xiksWpx~glL1|jl4oQ=J7IC zMO_b7v6;KuJ5b{%uMkr7_xEppdWxn6Mx?E+Xsc*6Abrx%?i#oAy=RCn4&K5P<>~y(p9xrWc_(hnx>pI^Vu|_h4%q z(I95*YHNZvIZ{#wrh7EsJ}~SGlN}3l+THna*yi{?lawT`c@|HJQ_xA2#BZw+PfpMv zVRGudx_B4ehg&!rQ`!#Z-G%*9Xqi5c68$evCfna!ulc|IQcJvmX}cOm%_} zROmAA|V|r90w*;^q&Z2t(q7U&|Vui!>eOUxRDe|2qWz! zd^rG&j>RcVF5c#JSgPqjjLIz`q4Pg$G)G*g2MNnW0d}#1nBH1>>j~egRA~7koIgaD z=F&k~3{k#TBdA&imo76&Rn|^VF!bubc$cERvIGZITQuwLWHDizxxv#Uvmt^nh*-}+x7e+Ly2Z}Wf$OG{M!pBHVac1J*v3@yrb_hd?ZjPuF49k? z!ph>#uOz%mC|Hom|E@sHYh5DNTe!*6OQy$>@V+)IKED+4fq?@X1z$Tt!CQ~8fZ={~ z_5xM|ql7x@?3%6-r@v)F@HFA`D+;$#`{7)bMuh#3pWQr&@jxB~&*||)8wBm4hEMAX zO$QV&L<=?@i~9r`c&qHz8Y5ZPM$)4*HxEYP_dc3*AM&F|tr^i$u!)77xT8Lw(Hj@? z1vkLm3TxohOotlbTsHHa&340EbgywR%D`)@);!kBpKu5Z$p6p(`~f8OcQC)vbMqQ=~#Xa9+1@%~U0U z@q4?tk)6wtOffY+q+1D?J^Nzkp-KU4K4l}?p*|@gwnz05%aM8l1rUqVBI~H4avz8* zf)zqUg%-Du6I%a`zR8AHxyc55oPrbjksNa8`_9^998pJR@8^nxAbhd^1hwJeuluHj9IFv|^ zu%YlT)>gYKwXSXKPhzg=*&<2|Qy8?nqjo`>T<+0ig`@~2e3^NHVP zHeWye+V6qiJE)qd9bN0!gCe?QDx18LnSQINac7VwyX<;KEVhKS0r|?TVdP9&Ng@Ls zi0o6y!iF+}U1@V^6?NOl0GlPm2ArYuOLfZYsP)DxAA32U7eUJjCFy;I={-eplm83a zOco*sz`D%o#f0?YV6YycgYsxvACBCI)=z>gm54UX!|4HW_nF%uv1g!Ew;Q7e);r|wVox&uscj{729`#0R5VVMXzXK53Ez)BE)}!Q9F{XHf+(Ai-DA*@s zVGjmlf`MoUCo4ph31*J5CNXXP+v_s(2ro269BOgCD0hV>vQWZt(@&7 zSu!c)=*2zLDc!MBaeT>1vT}ifOB^ZrQ~7IN4;1ifxn?uz=ZHXAJ<2& zX2|j+M?cW3k_bX-y}z5kP_=^QO*=rnD9}z$_X*3*p;oLmxw6r?Cnx}K=io3V$EDWO z(V<~jDAgv)0&9`Gu#Icc6&~odlPzn(ia#&sFjLGK9-hvG44hah;?^A?hRFAa!khzp^P~l1@I2G_h)zB<_iu=P{1oUfifz06n zJ%~$cxFP6T%?r7Rdw$XF~s!MiS$J7YOl2 zVKq&Y!YCL7eQ|ZM1Sf{M`p^I4)5DMNKcn|CM__*YW<~@RWiun9(s5^4mY?teZA!IKGM)9aoG(aVOMCe)(i_i z(m`Q5sg@5BURXFt93WU%J;KauI~r3EeMH31R4*;~@BrnPBFz`(|Jn5x9!*hOemH`! zpe)?Li@JTqm6D{{$U6*>K5Lbp^t>Jnv%*$gx9IsH=@Enn6%9vDCZPqz=2_jKzZs)k zW}sIVw&^OT@2+Nm7GsE$x;2%`7MT>SYQe$q7vYJ`A`gIdXD1(%{gy#dk1pJ0VA@k> zFhg?J>$moV)xNuADIGCVdM#&ISd`!1ZSD~?GeNLNrD?Ycl+IfPh9hu z+*4ey2w;J4GH;*`Nb?HOI(*GY)$3d1E6|36(^57?6wB-yf_kf}5{EKWmx#m=voAi~ zzJJHmQc;&_X-_zz1!N%oCkkM}Q9#FIBLkDlJ*S9Zw2X+whXZ?0AJ^dl*4;=pnBW1; zz307dVH!@f;fJeZtLriaJJ)6=8L>FM#qAE&1m(}`FmmY&s6pFo`%j31CcyGCAr z2YwK^gPbf-B}9WWlY+*Q161iXk0KZ#_D7T_^@WcDSQVf}A^(f8&GB&7D?>a1GKAs- zxhw8&6$YM3{y+cos6>oaurGZ`*lZ~PGcr8zb2GTem{tq>wt5u#mT6w5I$U2PEh#GZ z;=3X&hA#}f_AB49AG6c+4#eiODo#dAA%)TO^V+bcE4PokKC#T z`e4OtI#XpVFJSt735c_c1B>Q2d9fUhi{N>Qx}KPO2-`mSZou)&*A-sx+DU&4X|#7* zi)`zHn1Lmnx9tKqAl=?5TTqi)pmYqZ54Vg#Wiyyu{Oi}L)zD<;4T-Qx5i7%>Ly{L& zN}o5fk(K0kFR!#ufT%Z1aiEgW_UAM)`i}v)pNYYN9iST#1Nx9~MKP}?L?i=z5wI}(!UMaY;Kvi#RdF@G z2AdwGg}nl?^=k&X#!Hy_X+}k}#RDfY?U4E^S=AoZ1tRvOxu8W>NJ~9Q;W{$^@JNNS z3JiQ3t-gHI4S;KGkJ*Oy4_Th?zsn2^VD%{Yv8zk0!u~s8h$}jej%h<4_77dWjPQuZ z$Nc6q>y3W<{bpc_%jZB&3U!L+-GEhkT5%R>hu}gGp^jM`!&N_kTkQZ{NbEs_Zd3=x z|2^ZtYhEnTH`m%4D)onY8Hjs(*4<6GP(iJS^f!$U-QmOtKm5Z+kUpyDsx^v))T1pT z>G=i}O(E6I;r@^zFCB{<#ph{j(1vihXZPR>+cEmc5-Hmcko7Y_cGv_KFON^ZD6F=7 zRrE^<2%fVC(4=C+PtFD`ft8)B|2e>Ok_lIFB1cGE{6J9GY0=?xdugsd4Dzj{S{23cuy)Cd^ zP%K3o`#_BhMv#FM$dCcJ18Mi_T7C`X!!Q`PVuEMzBD)AuMX|v2myuaU10y;Nm38GP zA$UrAkEPZ?qQu0!1EsbwC>FHKZr!2=r0;?m;`R=XirIF4i4rVO+Sw0+D4m7TGkhyc zqsRA>mH_jETtSJxS)oEp=U6LRZgtdjmZ@mgo_8z&Em&~9logMQFj$(7 zhdNmzRrN(h4K)E0lIWMud%t8xXPj1{MT*Cjoy?ygKM$<02MPnIo6}n0@nmq*y3-N+ zfo*7}BARV263ZuRYmpp=9g$Cn%7)k6P-5?mStsO0E{AK>rSY_;AJ1s0C(sN#5j-J1M`}WVTe`Ktx zc(2?RsC(RakrISjNBrIaVOtEh_abaV^e~C1f{f2!6s*YH z)*<@xvZqK*c1=}Ui@wjUM3Hk8T11hB+XdPN5TiUQBxt+~iw8w9#LT5*joIS^V2%Tf zJNJmk-mb4b+w^74fGBKXaER~CQoLcG*KBxzrmz-qK?twJ%~Hk13yAY10s)`zz)>NE zCWqFOCrl|o=mezB^TjI)Auv@zSkZmB{dI+Cocm?qx4oF7SXp>v#?N3hG@27dJtNaT z+?D2{zZR?Z-n0I|gCYSG`Oh+e{A9YP(J6>Krk}6t!M5FUtgc?iLS;IeUIH zhhe=Lq{}UbaANA#GYHqqXA?`OGm$=Iq)S*CE{lDkM8Q#9a*%E(@oByLZm~oTc0Jg% zW)c&^T)yEah5bbL;BG;%H_Dgbuqz|vD9G#~%(kQ8A0;p%PAEN-d7F(I$Sc=lsH533l6a+sb&B+(DW z0&7md?F|0L_D~x@n3)4<%{ZCQXq?A7t3=@Xxk{|IBFVr2txVaMZY$OL(05cREZ^ZW zwxF?(yfmVfWnC)eyc}K=mk0;NRub@=?W zgLKAZ9w}`8TQIRhb_75(x4jJk1S_i}VOHu$%RQ%LiN2$`r6qNEi4h11?ecek?afs| zrbd-E*))ZJcLwPWlvI-Ax|GF`Lj?fqP9bXGg%V~c=@Q4(BXKN!jnnlV%Y=yqlp~)r zN}6*BP4n#r3`;1g$Rz0H-rXLp+#vi}zq{%9`r10)>6g!piE5yVBtT3m(3H5nY3vnR zLS{eJOGV(=v>%FIL7IrVSwzgLnE)959|{KK?S8jUyj=8{Q(Tsxn>k}M;N>g4`fzTA z-x!T3D;ZYn7(Z;@$gf#1H0tSSGKqXOXoiWLvu&*%IC*CEt61#|(y!^kj3ehiV`bzH z2G(T4fC!DzO5min_0}P*c6U6mw)Mq>PuDC=bSAHHZ#Xj=7@)^AZ1U&?M#-aRDR@N) z7N!GPKBdSZ@D-oSZO_&q=#~W`@LFUb9Sdzmx?`e}bJ(c)`SS>@-ZuIv3yT71FgymmJOtj>0VTCG4Nx?(B42lD8f4z8f@m|HnR_J~4 zYd!asLSz>2UjO;+!`1rx5i%1QrCLr%hUL47A+V&1ECy*pG}VzebQ(zJAKC%h*Me>> z!L?ytLJ;gRouesj%PL*6A_X8O=73I-R*81`Z%uBsgMjO(nuF!F68{Q*4-Trc-muKh z%WGNM0r3IkG1UEcHKWnDlkp$H%2Ogr3&q|%S)c5Zk`0V&I45L7o6*q|Qv4JhPKE1` zW<+=U!(ZQhM|1lVpvP&#tM$`MCX!0v7EEQ;n|Ud&(tas{beCJiX)kY|FKLb@8u6G> zZs;`Rr$bTK7UJ$_?;r7xat7M53o z)*?py4rX#0vQOh%Ox`Up)Ep*z?-F`4K`R3n4Ht1@hR!+~Ep@nxbw(DrrvarGQbl*XRgq~GvzHh# zCTL7P++t5=)iFYMHKI{sdyS?Mqn(_%snsHXE0p*XrMKa7Qdlb!{mTxlKs_d&FY(YO zrwE8aYIs_a?oh-yUZkg#@sM;~Jj%ySL?&rN0_ln3C{Y8;!ft`#q&}EgXPD3oA-5}X>@o1tvjmmU^SiW1D{aD@Sc+P3l@gn zC=dJavF(VkErYotI4NB!E5hVOr*Y~GGY#%!McUU_FiWIrdQv-1d!c(}dq}i0hi53H z1MOfdNSmpO7T~3M;(P{Rg8_mgW-M}%{_S79v{xh}@jA1=VD>{!0VV22nz!a0`S@y) zFe)0nCR>TH(bR4ed~DeBUHKS?x&X}m8NY?v(Ck=F6M^eYazmX$bZ$pP920X@P16B5 zrCp^O{V-0tg5+ugcUFaH=E}Z@5Oi~Q-Kc^f>hag99! zzAK!Bl4M2}OJAhL>I!Xw*s-IuSo`AvEN}Fbqe@5c5R!|bK3+b1Z6B|vkZzvX^-bzx zguFYkgGWfZqnG$hWDpR208o}DK#TT`t(XvS0NRR}5wH`~B#WPVLNLS)g5kIG8TzTS z4~#1C19Q>-2+lax#TR{HO!DFeF4=N~mhZ7o2$;nvY6U^fhKLQlNB6@z`u%SR}si+?OTtKMGJw(^^d@r?8qHPCKs)3NMvG zT6+=K3xTgNU+mNsuNz8164C1F9Y@DtXjOPY)SoTd)4>0z;*#+~2hwp&dZM^aooy=dBt2$G3Jk$p^ATG^-GOryH!Z*f`U+xTh&0HZ`d&Uo$Qna1+?|En z7O+yk&5!8yTYHuZ}&to&Ryk$J_)^TpX6oEf$pBmh+_5iSqY zUo3hlP1uc3$S|#?n^F7|V9p=RO2ay_8c9t^YHM_+^ZBM+0ZNVhi&|4DAkG>$l8Z6^ zpfBRvS>21 zn?Op7!O1<^{3dWiMI<@ZqL5T6CJf?u(OL%sLI`VR$x083jj<9%EaI8lMXhkxr=xVb zp7pImB4c8anURbaMf!rW!m*Pg|A^o4&9@}S`^v&~Y3#U5V^LN)2pd&K!=fsF%3&2J zHP@Vgre%00bUmP!lEmxAlnx7&VQ^h^r3;8giW6ITus%5gmNcMtC9Sd#kn=LJOWK`{ zCQ19CPljG_#^KA8A-h?e5haWNLR(0gH{!>Jpf@;1m$&?;7>+v)iH+kx#Aos|FX8TG z%W9l3j5hHEBP`YA@PMf%N7ic4BMp6z$l|4feC9EM9owVJ(@D*Qw!`cKqB_aI6}kjA zDa&w-qzzN|5ytcL6Rd0|14%&h8qcUya#N$%V_@RKg<)pchZz$EA#x};p6AG=J=%!$el@kR`+E(l_#;JM8J|GIg25% zE`8un_?-E0=NDc}6@RQWZFvQGf`Fh*$aR`Vq0MCFE#pbOWk8;H{P`-XeSh(h?x@boJ6?T0;zFIJE z{=%Hmf}=u|M)jak8fq9irC}a#C{bHM2t<MJZ zh|&e36{{Qk45HQI;O&fQ-;~a$+qLO=$_TG>Vv=?sTw{dJadMD&WI;(0Z9P#PL5!FZ zV!zP%G369{vj=u7587lQr|1?PA$Bj}Y&OFVPQue`XRmHyXJ(?8GRa_kJQy@qkGsZd zCjAM66~u0#>|U!opE0t8bg=4`q*ow?Vy7Jitg7jE`4t8N0sxP77UCmQe8rtt1@Qo5Fr#Qv((ZELn zD@9>~00r=zA)ruUB2r{^lo+{xIzq1DHwXF?;s>YH5Tyx30D-B9u1Km5821muqxee6 zF*Cx8>$?G+#hp-0inx#~$$(q8BEvHppB_PC8Ke*AiQ;C9(JpDUuvn__E%ZAN2c+D1 z1A~CN1-A=eFHsu_53tDgf*}sdDOa?9GnHwc`@rY}ipt?A{g4G(#ukx2382@HT8}`j zt22hpKo8JMg&?~xj_+E#nPSE z;Zem7ZQn`)%5PnOy52cUBF`|5)VewgM^5L@&S#6W3&2b;rbP}Vf2R}3#nY+p1KJHF z?uoRg&~g(D%xObqlLQlnsD>m-3pIdN(g^!OA?%HBzX#MMPR-kJ)6P>sohWB2SI$W43C%t1Xlr0og*r zJo#Vzm?+``+pg`y#cfir?Q;?J8fkc1KE~2XWWa=igRjHtQq-glu*{LT=}H0avY;oe zDuHZxvJD_xDeaNg%X8i92iAw{hLG~OOeSu5aUD=GSvyNP-+BlkraPR062<5B_(+Hg zUpz7j$K;n8dOBRT5ENa043!0#gi@$13T!nYp|Bp9W4(a9UwXxKSQH9Ugwj;r~AR?|((#o+s!vp^aP%BTh`U zNGJ5FeE+Hi*Z6;Ytw-&Zl1sTsU&BkHWK$kcW=l6ep%1YB(#=V%k|2)g@;!oh6hZ7# zrYNJ6h!w&{NQ+Cfx7B*ftg-{rYf`y}_ta<4_RBtN6(>ZacwAub9;GPiSfi@ ztZ>L$T{tZCWen{Y6pA@45$aB&~m1&coy#ovUtVhz)z{jV5^3FE3YRO0_(=p*6sTOF4M^z zd*%GiU*3Fr{r2L`+fNT45YGDU=Qn@RRw^UxTroN)oU#V0E$T zaX}mU*%&>zc`+%%fFGAJ%y{^%j0nK>T(^aoNw_x7m6^vBU$rxqh(T7kHtQio2maP0 zyN1@u(Q&wuy+6{4`@%4-xDm^FW;P=%tRP>y)=z=N-4O&R)u?*~yZmY935Fa#6`BitD)eTTTAC{^2 z<$*h(yVw9#{F1WHnj_E;rar(8s1p57AOzOQF@xARMP8z>yKp4Dv` zDSVDHK``mlax`K`23_=@%LAR^{_yZOObQJ0Y8QexLuxK`m39$(dZE0|XW)vi-DENJqvVb(U zK@am&!8v`w&$P)n=4T4GIu&S&gWEIghsVSV1^=0oo0S8hl8gryEa8nfteV@27!WHx zLZexT|HOf=3tf7(+>~He{I2(uxBX)4&Dh-cel*}@+}zGqu=ha2%Q8fY*N^sfWt=|C zaFmK!s`f@sa=ow)y{xZ#bqh;o%WO!z3rKe|4cG0bKxsJr6(r=kcWYlIJcXqW+F}&j z=7t!lF{$p&MG1Nt}K!_LR39bxxfO-U<3U?3MQD!n%&uUPk z<)R=ewA=#;Y53ZR7cczfgcT`%%NW49yVz6mrw221vAiCva*K}Ie+6dW6q!>V1vcS| z@RP`fU>B^}`B7oDf$1KJuiHjxy;Df95ko$PHws2V>;L!UoAJSfi8r_%76v*^@DwIx z;-4$P1zc8uIDwZ##lH6Ac&7@}a48R~J0x7Af&s7#f-ugL>WXku=$>Dm{Mk@KUydE; z_8YXUYE4ERkRDJin~T-v>KgZF`IqtPo8u|$oA_)pyz4F8gfO%%XGr{B-d!E@Z1K7C$*^l@bT z!M6@7-%7KN0*yFsO`IrA&^K{Km>c zus$}i>~o`XBwNK873|zcljfhz?#@x$3-x`X^%Gpg!3;p{vB&LEY~M3m!kN3;x{nhs z1Z=nK6u#*?4;XH(Ljz9C{n=de)UjW+>V~ z(JrpyeT?|#5gH0gR&HU~n$%J}!xoD(>KvDCqXOHE#%p)4WG+Z#3e+>)a9WIR8#p!| znm7e~nSO^vyPbcaXfe;|iMw3Sa3b-Po@enpF;Yqp--1UgS zmHdQ_YeyJoMvFm7tP6tvX{kJv>4szGuw%%QE|&;rW;o|K0v-7BB?%`;Z-eBZ{Gj(AbW>Pvwf&-z(h7ncu!U_8hF78>M@qr#~N6H-zOLgrmV+P&av!X_Nt%yhxvDIHDlJBJI-oiQ6r3Bz#+}U~ zF>ZFE1b4OFCx-T5MT9&{C4ytiSJ95-A&=1eKoV&>FS6o6bApqP#kpQFF4WS;T<$co zNu=llafMJ7)n2taiY=dW z4hEp@rmPk>l3pb-1?t1E0HbT*4V{hFt$A2;6A7%8ME-7ygs|?kI32q^l36GqdUw7< z%vL+N12i;@xaMKTEFktn>YX8!_!g8cf=#H%FR

jTf`j@h=+N7HnUUV6N92wgTi+hZF*X`kFP9=4Rou4S)*Zkw zD6{Q(j5VZ%h`^5QuyhO$RWrIY*K4lojT%Gp+_AuR$+UEdG*`qM0-IfQd3U>&QMD~3 zWmJs@0sNx^3fvA48DvQW^>y%VV1RHA7MgQZ)!^LpNJ0l9{U2z;lGnJ_HdUQu5uJJ; zm?wWn6(xoQmzIh=pqJp;Z&XowPD!e2>-DMwsd>{d?FciI!pd!*Oc zGXmGfCvgNDpk{ku4lPuyV=>v+azV44{3^a1nNc}xrXZb%DU7-&{7c-|^9r7wQ8+Tx zYaMP5wOlunW(R&QCV?cy!)n-uTLlVfhaFAKGFsA!Jb&GVtdN*!NLbm#H&*hbGXT|u zk6o1k`eRmS(cY?~0;}fkZx7Lz@O>hkzWO#@ArX*V>KEe4QlkqpwCIA zpP=??I)t~sI8|Zce6hN#J_Xh0;agF}fQ5jcK&XrP8REMUgc9|tD|72pv^^t?7AOo6 z9-bVA2y-%-3T-G-vM#rs5UMbZGeNd-1oHhhDRI`1WkNsfm*m4x2gTHz0qprYy3dQj znb|w32r$&*0z^D8Fo&;6J0^q5ONf>euNLMr=DyCG8GPgCSI?o)9Zj)wy>jIF@(xCI zoII5;JDLYEo92NjfD1s&2WZwfb>vb{6qRrioQBd zI}gk6K#eEkW8GuK60upEEwP?TiY>*01i&TS8EW{ZsIyCm}~ z@!M2ecA#{I@j_@0XS>0?4ncgvvFj##bgeF^ih3;9)Ty{V<@QfCL!lWVENinvIJgY- zAnYXmOv*px)$v0tAr8t}%~|WfogOpeW_nWmp)OPMt_lL0FdXP0|1R{3MfxL95j<8I zJg4;GjGu)Q$6Ug(Yrdy}`TNO0$rB)hgEWERPeQzRl{SSTG|@qYL+7_3jv=We1&>fe zDyrp(JV2bt)`Sd_^T_{K=4214Plv*?!d?i2uvtNCMp8?p$6m@n7_BT3fO&w1p?Ln z6^0966?{~%6h=Kxj0KUwi*a6L^}?pV5%n)eqGdJ@DL&vg0|YFlDO)vxrPP5MnoycZ zAmSClO{sc^MQ%|ADlh5WkUFE$G*Hk8fNWtfpHvDqC zq$3s9s6E`L14&ZOay~5uu3eY`a>>67Hxz+-ZXt@DXfKOXNS0%9kIo?7fggmO21l4- z8D~F)Du^vG>W_@H2g+rpeMtN=ue;oPAtt06IikatL2WZlgekWstQ< zIlz<$%jFhW-3lJm1QOIpfk%lc0-d2*^pvH%Wh3LSaL3}B)WyDKodGh_ElSK13}Rn= zJ+e86^l>>5q)Mp-=k)<1|4QP72Vu2ZA{x~5KOj?5tU5kHQ;6eJ&vh^8#o2?`3l22? ze|i0bE1KzyBiK1&7yIFzq+^#RB;>M>Oj%%gm6xZOJbsw9VII~k8yLpRIn$N2N0ng> z!cC1+TrPzq52~)m`UH*4 z^}#{nOVUYD*T~a{>S5Z`^a_j*=n|tW&Z?HZGonGFmFn2rT6!(`k_;99NKdd}xEX4^ zwM}0nG)Z|P;6hwE%Ce29x2V_#I5bFGWWJn1!kUcSm!<m2N?BjhbTsIRsNK5L>f(;lX7(zPMUkpTp{91K6U5BaF+374F7#E2KD8zgLCT z?VkKa6Ss{`$ViH9We)ojGU<)Q(D+FPGP_#yjS-&?`)+b#H66Kd1y#z$ZsWH z`)sa6UNgA{R|TB{lRYk6){h-;o1jg&uI5WLqndXGg&fld644VA8X_F|OpL1(Ww#ip z@i>CXSXIM$l57HQE)Oeo3-bL+&IHT`spH}QR~(%X{m4a4k0{NUyCm_hvkZYOBvx}^n6mY z69CkNnpG>TP)EnKLLHqJD-GBuB{E639$0P4DjBO3R?AGSN=w6txleML706x8c}4{v zG*9{S|M>Lq>igsnNW}zcaBXG(1AHSUxq{7`4e6J{K4Z6kH*u$sJfmU$e`40Gf!H zP_0s?M8WouE-g#=C80!hj)i@akzcG19=DJHtceJL2o@sQrl$&1yw4Aiff_ar=xG3YHJh)f^a{aJbn6KM)XHaFnr^Yk$&r^ zqyH?>cmU+|#Nx7Cv;h7)1bUawoB+w!+g! zp;ZW8%GS!;Zjsd*tz)DFhryWKzw97^^(3SFFlZsvb2@5{^l7aW<=&T0z?ex?vdcuq zJK{hWo~cxlH%$;Wh@OoYx)3aC?5slMr+C8ki?3$)=Lk4tVyC8|9yUJH!LVVvP5A*L zB3~Letc(2B$mWa9cRoYn{G(Q3j*$36HQ9qY#s@v~7I$iQgg+2-Kb{OrcwG<>3i)=X z4wJ9D#7F~2wZ^y3Cxhuxwhku{KDNl=S*Mx=enJb+#-(^J8_-xoW@}4E3}ImhFn%aB zjZD>m^d!nTw9)OhXQ+zn;jQer#f`pVX*8?rin+eHU#`!Krh$YBcFtCMT;vzty#BB6 zKhRbqB9E`;O&Fl;gA==GA$pZcBI$5L{uvg+8jtE&pDZB_-LwkA_bABy#5vIjuw&Bs1A*%2DV#*g<+Ru$v;!5hiV=z@|w^`;_{zfm7hB<>FTwQgNbX5$(<4})DR73W1i?9NJ z*W07voyw@w43earI&$$-LvgYR=dOtXT1uX2=GzAK*T z_`VKQcP$g91hmHlL*hI}TkQ&3(5#*nPC-xg8X5o^Sxl*i&r9lISSsdhM}!-k{qV1g z_0mwXs6r6rTCiR-gc39@keP|n3w}EeT0NBxS7AYwn)ZR|6mfIWjh1sPp2~T5K=A<< zrABd01);RRq78)tsdQRzz_(k@@Jg_RC5Odsw}bSud;9SE<0t5pyPqC@e)I0(Cq&sd zLSPBA@HyxJ?faX~+R)CT&$i2amae_pDwYXX82Pp=Rj9UCitQJnyglEd$R_@8(lfVU zc%&~~qUJdT2g96%+}bQyq|JQL!69|w}b)VKR3*p}A z*JW^piWvshzIafZg?9OjzA@z0$?p0LG2b>Vv~?NXCO(uNPpH|9ycQ%b!hp#>c69c@ zKJ2+kvTA;<#C*M+QkQUT79v->7wGJ5521tBq#igT*4-S>3^7bJS<9+2;k7_@Y|BQa zCOfB(f?aAz+L3|3tYe`Rl|#Xx+yiU&W%Gk)x#h0p+W{%>=>8{LfN-u^s2O!s)8&a% zQZP)%OLnO*Xn{_4z$sL`1BjcI0nTXYS}UJ22=|@C;D*f<7NtoF$FLKcMqEqGKYRW0 zfl{LM2_94S!?Ct6BsR#F5$eM2E{sCeI*dZ|y*4Lxxra62D-BJ52f+XfI`i0fF+gi9D1{;cZ3V>H_ zj#ygQe9rGc0FA0d^T42`Db*hf(Qk4l+%?Q01F&n6* zj6ex#om#+tPE%XFDy3)dsDDZ$OHPS3>C)Q{RIU+mBu{Oe8EMb;V6jtJDinLSr6T+m zV57tId9;vhn@$W{WT>AWACGraaQcIU!Dj`7sl^ao7>o1F`5X5m1$b>Uwiu(=iU9_w zK=K3P1{D5NfqoX4qZv{?UK9M&*L6W!=fw&dsGL#=M!+{%j)nMuJGUopDGIYbGi~{5 zPNYg8P^M!!?7W1e1b>YaBoZg)+#dZu783+Njf&0AXRGbq8Zzh|>(54;FC)X&3oSML za7T~)JeWoloKWEAh;teTh9(RZEC0)C2}39wXt#8ls^Y8jJTxya9%)K^@f7J=Z*z zv?G4t;lh(v1#Cf@Rtp7$iRE}ye(sKAt0=%9+ZS}1ffi`-aB)Fr&XTe4u%~hYUVr@f z@Zr<$Z?8YR{^bb zoQMLDusq|4ddSXxLPzDaAuZ|Z;s+Wq>|>Zqj|t(`N~`BB*7JYM$GAyzj5|I3`bqzh zDDS|TjmOqQdo(7+tj*nWTtJ3M60pu<-0dk|2L`|ru0z647RjB$RDzl-QrTyP3C&Ep zhNZWc3z{Jss;{Pyx7ZgrZy*g8r(ThlTVO!nK+=q`2Y^_E|Dn|ZbkXdZClxOM4W){t zZX2kt#fb5iD0ZQ`q?!Siw+jZdlzvD>{%?k)-Y9hE(rawoyGE!Of8(r!PtI=lr6zPi z7)_dGb(Z$IM)!;m69<~!A-^L$S}w$Q%B#P;y1nr&g^&)g!A|jY>(@%HWp>_MP!gm9 zvcT4Dd4EK#5C)o8OcqK4dU_|knzB|A`?n!)OO_h?l~DUMBgcn93ICb)9cHj z9_d`N!!FMMkFkqM!!Aas0E7Y!E!QCH4$s!+h4l_j$9hc)o?%u4#UP$2m?pBxlNdhj z^|D=H(ujqebaEaVsi*kCJCp2$r)+45rty6KLew4e3*{xO{=Ktb(S@lgH#TDPttu_I z=cox6l$Wu8#UkquZ((|>aX@a(+vRO%cfMSW)7I_7ua+ne-e(7#>dFmda^pUsElJ5A z<%iEqKQ_1>ruP)qsZu?BLmPJ`vcUikwR+laD<~SI_OW(tBtWzS>zs9VT|?iG2EB0! zjw@uFsp8(KN`f7T86ZT*u3@?^+BPj*b5#SBI=p@bUk14d{shiY>oh_`HrR~Nq*z30 z4xD!uk=_Oqhf1`3(T2w33odRzUCa4i;MWkijif!9f_9u771F^3CG3Lm&~*6&X>8<= zj{9jG6{K$~%Lz1gRZWXKMk`R1KUAfiaVO=|Yx-^1ke@EX(FT*avnHzpHJk)nQHJP? zg#d9lOBHj#{Dpn&bx~>t*xDqJ-nyD^}CX{x6XTi#fArbwY#Uq1EHYj zi#hscEY4YNmV|&hi59X*5ET~(;keE`Ny7?t4~Fr;B157cnsgu-o3!X+z5L(OqB~~l zkOn}-#IGqCkfMQ%;HiM3RZ&(3M)g(tz=Ea5TxSSi*^*2f3sga2?zye)O8pt$mCXpP zf0)w{(S$bFVGp6eksUM)A4wjXu=UJP-w2)1M`KkAtX0njqF^e}i9t-fTRfY|$eNM* zlr@@>buP2(OgG}aIJq`G=tmLJ^uW7p)Z;kv&70RBKRtZdZ65yL&kyfDy?On1w|@BX z;mzM47)&6*&WQkrR@R*>@aqRn>TyyW3X9-R(O%7oLUD1~TOBOhe-k&?Ijh74@P z-Wv$NZ17QLqZT2}lEiEI3!*S+TneGxfD|f(cCe=5(7;|{!!$_f9e2dDIJY&N34H(i z*!!N$H84Q4&GSU%Tv@77AqU{P&`6b9x++HP3YoUE?cK&{SO$3Gi6U$=9Ef-n5vtRu zqso=&iJyiwmWrMNSy8dXnXKcvD*l@Gq$(-UR6Q-q>rjoJ*!kPl-4;d#Q+D{vi&;gn z{CdJKw8&8wkdzeL$&X?OHs(hKJ!BLI^g^@LPfj~k+i4t41`Bk5sSfGzrJke9h&gH| zbOFKw^=f%r(t9Xs^3XmtSshEs<6IZ6fotJFQeb?Aya0=M$g?IEWQc~wCxOJTm!o4O z+JV84iNV`AO24&#C^47b&*jcZ?W{mYppe)40!0VnGj_jTAzB#!H|Zp3iYPHlry;>6 z(0OLZdNFKC#YN#S)D&aH6ql@MK6$Y|Trpf%7ZTKQGf3&yQ4G|aY1-S<(I5W$*FPA^ z3CGpAF}LtRG;6~vh4d4?WJHFuyw25pvf9iWPZysXEo=qUCEOaoHBs7xYdSVmlfMDC zMBd{Jjpw6&YdxXwmV}WBSx*we3-{sfjX>%O3m)N(JdqpZ%n^6Jd=Baiw7-2pBZyL) zV50M19+ui1e;Wm~>>7Q==pW#RXfONcb{K+1LE7#S%fVvEv;xL&JR|R-whDjJUDHlW zV>HVK!vCMM#0+da>ye$p+WQG54Iy}fSx&Pp0!X!8QXEc(>84gm1QIWT+@)HZZQP>q zeY0h?I)inC);#muL2|P8)M2_u#b%VkZXeo!G??KDK`w(%M#w_vyilLJ|2vRQ$_1HE z5ce}oH*c&9csBb$6+4ei4t`SjI#@$l+lVopjJ4lNpSpU<#4%we&X*aJkF*VJFF^w? zfn;>>NT7Cp1_s!NfC=5>;m8{kiSgfh?I4nw?jLqrF`j|!YXdW4;9`C`tsYb!=|=n# z^;A^YDZGH~yY;|ju_5&;!T^8U5Cfi|F#7%OiiTVIJySwV7$jd064!ctW)E-LUpC3##Vl^8V)m7QX1$FKRBf!h~-U|& zN?~R#IUJ*o+>`-|O~hwoq8U~F)l~AH(ZGZjEBXZ|x>x@)$wk6dryiIIb+lJR0tG54 zQJaIlTjELrWLQ$mLhhZx=TV_h+JRbDC$V zVNeRA)@z9$Soo3wBIa6;;Ml)K5&@SF;zQ|0Ywwk_dj_C&58YSoEh`q>UIb|c7~u@@ z1xCRvz2MM<7m8@wjSc^(XKklR(1bOZ9#NAt?Lbp4(LLn=hbGXR(#Rp4f^jhiZ0;GN z*Rb`l@)9&yo3cn*!0Sr1CnZQ))v)FK5S^HVzOaM_j_WItwHo8CNpx9kZ{T{B2y|E# zsoh2E1kgYr1t0qgX$EMjwq>B#llVb@O*%jU7z~Xj&UKKTpSl9tJ%708{1Jq;#u6}A zY&)3?S3~xIr#c1qxw^mwwfytd2@$MN{IQ~C2>kxCu}`} za7%D^u0VOP8ThBjqj7+*hcV0?_Z3qbmMJ^K7T|j4)cPMNJBI12g4YK6$u+G`=ZNXlEB9otW{9Q)Ow}S+ z$PmLL;#R%}rqR_!fM4T*xDz|4Sr{M!h~q*mYZ$AQjSE)*cHtHLct=MlBVrAr7@2qT z@}kp&F-}DbM$K0wOuBzu^<4$X_8>mf=c0w_qsUdU15`>rvYxH3JSH*C?+qM{NZZ;k z*`@(8w=7bFSGzDS2McHvqPN;M0%@#iPUGEov%9UQdX#r=VHz%Wb+&=Lezw^qlsF|y za6Gx}{;=W62`I3n07)9=3yrk=`}60paz<>E*{>0}1^@6K^Yj(2aPze3`@6$Wf8EW0 zfW$izuRH{4*I^d?irnW*$2j)PDW|=dnl98<4`R=is>HDQ=Ah>|L3K&ktg^IQL-olO zkiXLUWUATMOKc!O(tR$@%ZSF8GqyJT0ZnO$$guS8W{A??+=G@MBAcbk#lDZgmfY%v z`&X!`h#5HKuC~VZj9zl`5W8w&z5Y0y4AJQJ6pZ@#*NtNQFZ*`x=QZ(Ju)H8cjLZ z7aT!ak1V*L`e5C|H)5a0l|8Dl@M1zf->tu&qXwBDY;P8^0=BP|%zvn|kJv@ppU{Sp zSYn0>)vc@RDYj#7$hzD$-cRXzIoywyal1wygfw}m!i1NEQq3&(ke(nD%wAF3YfjKO zW`6d^oaNY31GYbVb#Do|W3FpsG<3?|hhv@DK?SkGw~D1l;O7l{%a!cDXCyk(o3Q&Y zEieb*@%llhP zr>(hQAqkWK2V&#A!i7SnHM11S`VQqc&fTO~PY91q<4v#g@R=;W?uXM*2{ZQH3H9qc| zyO6TfN-&3L6bd%q69ItiVVgqJ7>VV3HS!Xd;~l*jiEm~=wODTDzu6Y?Xpn$?*#>3A z7^9_g)LtRPgt`X;-%Bn<)GZzwqHDd>D5hu~%wbGRn)a_1M(9$j2Be#imZYF~@XzL0 ztL<;Vi`k8ye<4s;_3Ge&+zeBHwuJv1CW7@3)(r8S!BUG+K;(0BilkWwkGJA?Mt+0^ zfpk59BOX2%R0(^Btfa3F41sM%ikco74dujQJvn$Ramio#{EJeSVz3I_nDGQf3sBK$ zj02;l;X(>~E*1hPN(vjg)MoYJ;p305-&&SEYE4#(gb!@W-{oy&nb?W6M-2q!VoOVH zGc4d>Q;G$Mc_dpzBa(DX&9uEPfCojzj5D}=|M05xe$nu%0)Nr)upBhsvj1hO{`^IE zKl**2di?u_pZvbzRki=3cYpT#?mqs#%lbRlb^JRQcKkb6cKkb+c1#MFDcz37H81Em(u4eXR6!S&7i?~%n8ju*9Ylh>G zpR#5+h5%!lVQZVQm8rFwa$UD1PMQ2-ojQkw$UO~4%%k8&@ZoSmS-=wr7722je#0=8-@Z&m|lRpFLsAplxai91sVl6{-og{8c{?k`L=EACh6T`7RzZDqgb4m zy`E8=INCi=4^ATIzf+Vb4t1?$NH;)sOJuY#$3CcuuslZ7;}h?8d_A~-1{$z+d~*sc zj0yzMCD-#?JXL7)MA_gZ1vL`|BiPZ*s;Ed2KvD|z9*A3r>7i1F+-OS}qM+J67n5tb z3cxk~DA?oPK;UjkXNV#3@$`Dh>T$h*1`$uH@|?DPZ$PO3SLbv1Y@qkNgkRjY7T&$J zytHHdx!#BA*Izr$J2rPH&%yn5sPAWVph9X8pU6N#pMvh`z-bjq9lPB&*B@*9s!%EF z7mNyB)+TLujNaZ&Fj%_FT}ilMFa;Ma6cmL!9Tk1W4uzoDLvpXf>OP;gDG=zXgSVi; zr#L1|JA@YOYnedyGF;qBb}u4)kSdQ;T+ksex! zU>MS`W(d4L5L_?jX5__fDX5H}dRRp+YC~pkam4!~ZDEZ3d`U#mFmGtAuBO3J zy>}l7j)e!J{Qe$uNgwD^7w3^I>!QC?>I;`TEk(bHemS}{!e5QpFmUS|S*Qx>`DTQ| zu_90|jMN|=1jN5GI-y^fUem|yW65A{7O2Q@e!jcjoT<)HI`*Ii*yB8a>kc&y%_P&D z3(PC#zk&RS0*ieBg&QG!sOS_qmEv6P8AtNe&Fw%>SY}lbpqoSi{ozII8HQu0V?TXA zKC$iPJ+qXPu17mdN6m|NPbYR?yV4Q|5Bm$7Flo<-;+kx%J~wS>tNLhUf)Vysk_+1M zQs~j83a0=)DLjLUbDbwgrEs5uwg(b!BGg-(7D_tMfiAr()*nX(Vdq%OOyYL6MYb!L zELtt=NwCbw#DhFa_R5y88LO)U!;LB|p$e4GY=k8>FvAY#Ix?M^0Yx^Gk*HGG)Dl1s zA^D69q7wTQrluC?=tF+G*WA(vlDM*`8sxP(+NY!gJzrKxroE$WOVa_)yo-TBh+IO+ z^X5pGSMmcxC|M?6QQgZGKRY}5aDJS@SR)jx^x!%}=6 zMp53XyW!R-zqM3FF0LaFv@BfMF0U zX*eaR$4O|di_f{HQ9X9rGyJfR=O*!&ZuJGr!(v@06MzQ?={1e^mTJ8CUUWW@E8ls! zU)qdF_-MhIdkKa#tcGBi&ZWzYVAw9#MueW$1kc+sp0@oyOeW(AySg*J31Su9kMAPn+Yd(`~l3siV!n;ix20zBaO;ORb#PKEX2x=#xC~BW?&G3Ay9YO`)OJeWFS>Shi)HmWBAv5i zJ%F>VbfFt8o$k&UV0<>T8SiQ8AtyT5F(w|*>Gu^WOHQ7{QSXeNl_qmvLswe}K{Z31 zHI^>8v+O^QAggCJ$O1Ue?@;#6vQ>(^Y99oI%PP!a^$@pdvr2;2M){6>Cu*=yDq~E} z*h&HR4CEVau;2*wEWu#p4!F+-&1b#EvitB+uAgpv*nkkB38{1T3XIvc4K9McLycA; zk}c8l5INSjw`fDuIWA=tte}luZRzHu??O?q67uimEsA^HE$=pruhM(3xm=;kIK{eqkB!tA>?S?(D zE;6lZUmE@O3hj;V`TpV(ey1H(H3LzF06x2)#=#u;7LbRT$=^+emmIj}HsH z){=T6FygJ|>!)8QscE&o*h(b+_tAg<>zlU^a!~4XgL|V+dVGVijxJPhi`@k|-S%u$ zm(;n=o;|=OBBBenSKkESN!#TNt!)Wp`*f4jX)x%wlC&V+ug<`b!UC{^P3Vsvps9E4o4;g?;Ri@?sY}-uhKEtP`!|Ng-3f@DmQ93Tk$9oN)IFV zBK5U)1{oW+vf@%Njd~jKq!_b*_6DGs@kmH@UTO$L^lAaahLYp1rNpvmqATCk?Zp-1 zOMj3g)sM>}q9~@zi+Lv<7~ThniO%La^k%robRUS`FuF>Y!O`e8=t^ zr1fx&O%Aeze8SfRsx;vWzT9q@d7%sj^xNaJCylK%-Myzy?OsmACF8|1d_rQ>+X$LuXgB0uGg`EClB;z zY;VCPDRfN*eUsW!?FoHV$I%oGNT&yExrV-g`eo z=Iv9Aa4)PM>IJm3qUkR%-L|ZVnn1Kkvr}?zN^TyHSZN)0t8L2$bsJNYMGxi@mL5IE zYuzzW9mwOOJ)gk51r%1eO4>jSR-+g@Z7xoPJ@vpBxU~AN5%*xq) zrH4QaJU{sj(m7^3Ux`H8$%~uW3SNgLW9!)WJML~x&DLG88Cqs2Dv3wI$0g~(4Fyw^ zgT<;|f}M(Ls0|0TRZtdX92!xJBYm}6bRAi2pPAA9Ey$BF*9}N0thfPdL+A;NO&h|6 zcBwkJM|fox;kafEu%Hn&Dq&Il0M#&SW^-0=O|>jM7R9cf@(3$Tx5w9SW~4=DZ$90A z{^idPA2bv7G@`Y^z|IzH2Gse^dosJAjf($AIe|Rc))n07hBk{EXc(h3 zlZYtLOY&ZezoUZC=KbdnKRzJ)>djyNf;ZK9wrcXA4lgod1T3ZJ`Mw5tZ~b z6b2ZSp-tY-yOpo|aJ^I4(*l%$F3Ovitn58QbUC>)rgr;kQHp%v_toMn^bo$>&EEdy z{pR8AgYg1bz);{DaY%$*KVQP7>a|M@5~eQBIud9g0MLu>1j=11E&{eg^d_9{@1W#P z`F{qDd%q!S(AEHk@ejNakL{LNzvlEMbkBx_0 z(|P3&!ybAO)vmSsS)vhW64mYXc0;@hnh0PJQ2B~35!@p=Wa6jE!z3fkp}OC<{`+*k z-alo6Le0xqtH-xsT_#UYbk7zw7bTB$X?ivz5%8&und=#Z7}cu@#^IW<0=)}RH@5d4;`phXnKW)slfqPvQq@ zQvLnUh_*v)r&t5r27`5lP*78>osVLHwX5sJbC^p@iaO8BuSp=zLN(zuPzUAK;CqYa zvrF6*WdXV;Fzz{|HnzS&^%HiW7>y6ch;9RsW@Noty)pIAi?vK zr6L4#%vX1CoUwfaJj8R>u@A!I_`PS4)?K?RRZl90U&q%z+>ncmyXYUrxyzx@lpMN< zju81MSZZANq(*yK05|9{XlvKd(*x@zs`1hi-CU5T!tR-GKom&@d?wvCSiZyIFvfO( zZf`UohluplV$M!~0MJ3N_IMoDz9DYJn5gxFoc$Z%n>sG=b4)}zfT##D7*Qm6Rd742 zV9731Xx*F37s7s(4ENJf=U9{P^qa+Qyzsnhiw!_?QiFrA9iJl>+}W*5Hv?c@#so_2 zf8|jo*eiRC|2b)2F%1NB0KH$T&@7J1+v?endcqYQNjQw6;}_3;xs$DL4tU4Q39- zVwu9G?`+O!U)qHypo#Py=Z>9zLZe(kW=0n;0K04---qiZv{isB-!0(m?Of8r9AUwG zQKj#E_qR_UetPrs&$~~k{T1Gj`6asCw~uXM1>;KNJRoF>9*W4iIIA!7s`)kMW|a6W z>*-er$Rbw_-?K#RyL_NK;bo#I>wMP_z^pL;R;0z+-P`piPwRq=b$3iTgIu&XMh~-h zWtv-!Fd<4;BM*G5ZR0lBLItG-YH{OUMl(mz3MlOzZ+eE}O?SX52A|1PNfX9D(w4s* zMK@(_GJX|i4tozgn)S{9Wn`Srf<@VE_3YyE;`Ro0dcD08_`_wn|;l~Ys>qzsQ`WFXruyoXrgfP22;J7?@nd^VgIYFF$knLR1P5& zQuHCdhIUcj4@M()1Pa-cI}su*x+Fn4G;y?^V#4xbeLK6BM3Bmp8DAh}(_1hY0{_hT z0vQFRPMj||{^fwILAXdi7YZTv3Jlv@j~azM^vj{o7b}k*d+| z?1ybAK|`S8?tx7PwUNTbqa$s5eprphKZwR+#rmco6i)&wPDapGWE@42|_=2_&YD zvsliH1;q5K&Pid8CRmLDS{tVsl!(`K$(Tu)k}P5oE|;J)ExWMAt5CfTPv&rjvK#gQ zq|~YK9jkOH79q-!Fn*#b-zCMSLz0Wol$D>}7`>Vn-)cOhpfWDM$l7*sWTH0cDkBq) zOg2+k2c)yYAJP`J@EQU21Tx_oINM9>sUVF`p98_d-x;2RJ?UWpG$y+8<^DqYJU8D- z6*b$tLU4?uw9ChxmVl4Ek{C#O+xoJEB%{&T8(WzHNlQ!m@*;}0(&bY1LU)0(ltcSw zgG2Ow;^tIZH}@O$s&R(^FqVNuLALIYo#~-5^u}hn=24*s!19H!}pkY*2-OlVc)B0lh|9_>Ui7>lqEp zRt_Nvxzw2uk2P&DNG9)R^^JJ(m{M1vNlXE|hAqVo1?bbX-cXQ>yRvURB*-gp;~z6jcb;mJe}t_-AuQuMI#Uwv_l#HsnOBD9q^ z1^UV@Na?(oaoTgj9#IVwM3HOK90?xW5rNFbMwKWa8K*$nHzp%35lv&|mudi0)~z#K zmuYEDcyGQxVFlK9V1O2b8FO2--YSL_Qi38z^gVfjxhHe+xW?MhZ_w)EXiAlV4`P4% zQXi;S5uHWY%BT=s9B6)Ju5IhGcS@Gf8mkR#@;>Mg#C;QPEz&1qDo|U4(&-<)yB&s` zXM*GZ5k(B|o(2rx%-a+v6~LG@>~#bQAqMR3Mrofrq(>dR8n33~>lft*r#9jb>6CV& z$nd=ufKP44fr_~)mYs&K=7$$eTqHIDq_6@KUbIBz*@Q&p+0=-NQvI}m!r2uy^Ffa2 z5ZzEjdUk;n2ReLO4S};<>(0%hfEkLHg|ZPf>1M_x4A~_*Jf74g3y@M0VDQGgx6F<* zLjvkODJ#JygI3J;f1Cu?id+TJ;HNwf!ezV06u?Y0N;;fJ!iUPPi=Ae8TUGlSgqT6b zrw>Fts(VuY5}CDG8g}s#jz3MtXo9Q{O>UHbLrlN3W-oAEvB4X;w6o9yYaXb}z~vzg z&+e$Z#ex)=4R#kUBDHTeFQzikaQFIgrFOyyq?>706_89CfNYN+whcmrXU^9Z|~&1oEG~%Q4Hv` zx{}!_O}HTz3n(b$G=-E}2r7vMIS*S~LcBgKf;kVglH4{hq(b{Z6O}Nl+L7SGMpm)n ze_okc!ivq)9Oaean8z%w@3AV+pL}>a`okYT{9%M2PRK}ZQF_|m+GGV{gcRV^vAo0U z_m6O^6SZQz)z-Chz7rFR%`8G``G*z!)1^F=^IASR0Sm&X&MN3C?R&~qAzstM?J|6H zx9uZlV?-V!6*RYf1fYZJzZI9K{ZI$#k+HksU4h4+)!A3YHo+&g&2BL+^nLsJue0u%vr$7G> zre=y3dMLmUTq_G1UbZ0!Ucr!!8(YZIn9_zKbx1k9AY9#oJvY@Oqih?7%|2Qq*kg!I zpS5-7Abjx2l~Q5m;|MQ@#JU*aYvcq?-3sagdL;nkf`#gJ29-N3R>##Ql`TrVvH|K6 zGP;O4Giy*e5?XMr_^QU2ZkM}P2w<=EU=Ht69Et^_#~$!~QwfcO{Y~BSd=c^sP(yNr zmwa6}M9*w696|OBPX=O^)I6`|!+DB$rTW7+cE7u08_A>x zQIa|btvEk3-kbynrOmm0(<2Ild~v3kA@}RftMy#HLl3fduisjC*y}g%9-M$_29m*o zr5*-99Du?Jq>G3QP#bYhz!=n!xh8PRSsz0MY6puCGrvL^e2v7vpP8;=zm0^@ug;bz z@Jr5LUM)Q+g8ofw@_@)V)zD|LT+9@NVM?vE8Q>zA4D79BFaRmcI^%UmXViz}fWv|9 z3k>Uz5G{qm0{i~m3UrWrqSh*k*^0nK5j8(7Yd<3JJ>9qH8Pyd=IG*JZmH4LM{D`w zl`ZPtit%!_YBwbO)a!9FrDh>vHon@4Km*bjOL{12JZ;teE=(8Lhxi`Ofs{CfSYweH zd=$b#qT9HQ{pMR>-TG$rHH+2)rC1~ahpH99*pYqbcTh(x1MC)tSClVB`c6#w@OjMj zW`p|dNc!a~$O(d))tSPkz-Ob23R7AwYM-x=LnwDac0Rke+DmAdqMb^C8yod(KshQP zO&3E0==`VtGP`|_n#(CzfOJ9pXGIQGi&+kEs2HJ}Ql7~k*ICa8D`tm@fDZ?GOjfyf z^q>CI==xg0{`e@y-XWg6-A{}vtT1~PC;&J)#aG$?iu_C=LKN0J+sx4dBaXrEQFnE# zO@4tZ;h)eR_uoQO31ui;FktJ}S;scq5+0@MEN%B$1ENe5u6m-BddV@U%YPu>IfEHL zX-@p7|Azkc`v*mfxzXdpJRsmpM#C?Mcn*K~W4E<|zxS3=SI-L>axRqZ-F!VfS2t=0 z&P9t3XOWsqbt)X8U9c7gQ*GD5VE2E$gN4zcoH_k$FaxI<;Ut(W18;uZ*ZQ&+>Lqq_ zki4DJwPr9dIZ1rivmcndBmp2B#G90nnf*yo5mFk%8F&=p2vi6zw9jXml-MS`o?oivctZqgCaDh6v-SOWh5Hf zy4gRs=Vyq-SH={JX7x^Dap1r2uSweNgK%4el(szBf}??J!jnf<$!RJDk3@m3E8u(K zMWdiXfm>y3)DTmIH~9Z7H$*SYVFtQG!KT(Ua)g!?(_`;HK&jfaYl?J`46I^Bc!z3h z1|=n->aUWL;DJWw+jBe=9{I!1;C&$w((jbjng*abjvPqfSS8=xV1Sd37-b6@vG;?k zS%G>?V&L+-Yf)(Vt`;Yt_drdhFW&EmzTb=YjK%KDW27w=3>%M494{vp>oI!^sDdE; zSlB+#VV63Z$`;B5YQ)amtPUH8ZwOuv(r4;1{^=+7j5rcGV0~*CV{VWueuXq~?MfHM z6G$24304GcsU?^v)xch4eUz0rc`C{;q0|OxSn7!YvI{H8s zOKlJmz;2-R7bB#5x!j9@&qX8DTMuR}ku$ae1*jFE49rAgi!#xRS&}Z56Wd7kt*hnz zV$Bl!B?rE!DH^5>_?!Umm!YV<5LH}p;?XEd1eUm`7JoL|*5Xf=y0R5uwM0|a(}u3Z zUI>`Jqs}C8YS5Vru1SPdI;CTzvDY6zK79DJL)XXGzdQl;$Hc`o z?eM368ol`$vIe92>OH>wc7!^X^u~;yj{av#@n0iHR>jg(ST|qt4`5F;3Gp9p`tPHM zw@5J>x^~jNR>S|@i#AvUHL{rK%Vkx0(T22wJBoN{`2#LpR{AAqe^Q7(F0>PAiTH1z_q)(3Y9=9LpRwFAw_5M15$6K z+<_g=((v^Tm+|?u*wNij4?n}S_!BBEnG{EZ032K=r)bM@@+{hNC=DB!#bpfJriBCs zekMR(FcByObYefQU>QM2W!t-m=%b9!jXSV!0oCrbQP?ZB;0AZ2jFN}GrOKF610}OO zDK&}bnQT%~CbXP}V0ZK$U{0NS<`q`C5;yt}R5YY96gEKc=!uKh?zJcqZ|+& zL`V2*CEwf@5?4G{&yc1a3yiyjC8`v|@rCL_wOHa*9-KmqB&%|wApwE}rCWGl2rKuF z>Z5*6h7@s7>;ZaVBKE;3pC_DjfR0?5DxpHeOW?0jJ@6rzbg4)+8gLJ&`%u5Un$RwY zh?&U-*`JLNFaR#obu~x*Oa?PSUX;R|PsARE9n3n!Bf}_aYqPYr=`+%XuGBX+zS$Rv z>tV{0gZ-;}cJHA@=or3(KrqM$uGq=DpK`7J33`!Pt$mZj5J{m79slckY3Hmyk5(Ot z^k&g%ZCrNFokJ)$1`dV)S5YJFCp1M1Wo%y%hSBefAXkXw^S@wT9tsTCwK zxX2NzugP#>27&ls7bF~{(U5pYe}Dh>^(PeQqC5o&3~Le2gyxXS0Zjai&RT+D(#|8P z4dW#!pl`{S*gZLR=9aQBlggeZ+P)7k-v>C~2Y`83w&~t8P+?&h@O&TO5=>T~7&!$V z(OV9Myc$8GW29#to$naejLi2&9_(YJ|ZsV$A@peg?E=iV_k8n_O^ScOXMfUR>pyr z$K-3M>I%^w(@Z)Zhn*Dq6Fv#EMVSL1GlygWGq~2AlgPQJ@9#TMHbzkkfd0*aJE{}2 znoVfEx^Askc22KgvXmKTR&tx6H8vhLKa?2T|139Z^~AbNbFTcQ-f5dG zOd_hDj)kV09ahmHZP1>t(uypGxu`(|m3Uxb$MPzlT-*1k#$bTG`1BN? zbNbBFD@ypM%|z7WF}Z+WihtOsAP98QBkmP8>q5jzbaR1e`hwP){jp?~xK7lC#*8a` z5bulmh}=+yrQzXKAVOANX8~K7?&Vgy=~~h&>~~XeT*}2}%{wXQk!j8Ib)JU`nzt_M z9dp;K;v9CJM=rDr{xo|0DekWJ+tVCZYofxco>ECAMkHq`Vv!%SbXur#6QJhNPiDVT zgC!9ivO}v(>mjlASkpwof*Bik$Zut0@D@6eHofz!A-L8778ktOYx*O3a%0r=zw0hh1mS#-^~2YtQ#+a>@FkA$o2_INFg) zbk*hGk>&8bYDH(rJe;&m`EJ)eQ zH*$xYKkUw4lIvw&M2JTbdCwQuV$n#30(-2!;RqSNB`#%x3K@u{VOoQO{JQRUziMEB zE-cSNMZzNK!qu9MuqLHK7@!~&!XQ{m-LJBT^aivOV`1(vM4rdQfKk&Fkdn;39T6k+ zqHd4V>b-;X72H^)^g!`_N$mn@u#hn_cOqvK@1ja^^_y@{b2=0w_J6?k%$xmA<8!&> zG3&FDh8@ahTrIB8wF7C7wL@(|P7Tdtv`#y-s-^3lE9DTX6D(}C|9@Gys&(!FHj`{) zyBk)g{ciN!v~O&l6$4c^;BJzJ<%OXC;O&z1Zh zSht0wY9;wmqh_L%Y*a1e8X2d-E33kj8;9di&$H#9nsflhW?yC5JNR5g+z;w5UC>t) zSrGgQ!e*eyDw-q3G}k+qkcz7o@P6K`{(t7)wYiNW%NEs7L3rYHP~CP1@!&&erh5X! zgMAG z`RWO0|7rkjPGaP0J55d_ za#iQl7>LBq8w1fF*_x-6_TqdvD5J@0@Yp%iJ4N{O6 zwnkT!))5}W$B;R|i(oFkUCRp;NCrPm$nvPek%g-?>h?lleldWIO+CGB4Y<025|?N; zIBS^DU4v~Mi6zENIYQhqM@V0^1PF&zP~Bvz0lZU+y=PMFJ#)pL`9Bh?E7vGKV|Ist z3EYQiAS@x;Jr9@(qXF(8TL=%P>^8G&3RkG6vcFwh z22O=CWU2|F<+9LBUTLRTo(fnd!QL6O6IeUatO&w>PdWsGz;_j<5UhjOB-`&BGN$=3 zB_sB_ThK3|mT!`gt41GSdL^boYAd*_LT836yxr4u?7mb3=MV}vum>qL1#<}fF*s(p zFvR)9{6QFqEx^pID$;r~%qY~@`3mirI-qE7@hj*cJs~R9(aGCsaxqBR#=-PFJau}{ z@aS`FHbnSg6vhMK+b(v4XUW*scVk;B*G8tmSvG6{{G!Xz6}_&tlPEh7Bj_mO;megF z1+fgcnmev(gtRfJPn=03j}Y41%E;92eat%`Dh(TGA71l$QBL!|+5SVKpWzFA^CEOoWjV@OYdQXt!6$2y`u> z$We;7$!20tSCTWJyg6%xQmTZkl41ryrv=I5z}7$sq{(xrzcmP=FwQW!2q|X7jTc$D zc&$z^*8KriNYd@>65%TfWU89kYGl)NLSTvPQyJcF z-=ax9Ers*_!|ML+_pjgn2#qtaQoGUi^cc1UP%+^1sER!zy%rs;Sk{2u+Cb0m1Y|$( z^iKG>1KzF>ENN9#(X^pjj+*zX3u`uEx`9N}%Pb7)G7GrWwCFakJz2bsoW|BbJyEk8 z)NOMtyiIwdQBOxyohdUqX+aC7S&>0^gQJcz-P#JIw1rCGlLocOP{@Su$lyen_9*Yd zNP%f@KyZovq29iB36thezDe z4yvxdLYs#8nJ(na2q9#hE;QOeEWqM8)i~NiMbMu3NJKikfJoX(6bG}PgY^uG@xl~Zy!+1)1kfDeG$^epeJ3LiF zQCh-63E)~(q1SMugFZ;}#bjp46y+Qz`Ay|;v%PEM0J*Cw*SQo?DP&Rwv^}-ygy^9* z1api0p*;JzV4c}haj|3Q$8b(xZj>Q!J$s=YIzY;NEjS3>CU~ePS*K}CJ$i0PH@Jo% z^`wrz^cK#d5X~n$2%b*~6U!vEK-;GKdG}~Kh2*@Zr@fWhok|Jo2?r#z8Rzf$T2ygj zab-1`;KfMEr?0E+H{kHH>p>2Lh>ev$!n%)OX53AV=1f(yKxNHA3v)5)s#!t5F2V9= zd`-;qH6xm2fGwAXOhop;MhOq`OPx9bBDnjD)PN zPl_)*zm%i}hh}3|v3%t?6VuKjyXSfjeM9X|60OY{r8G1NPsFA}o9NrY6l zn~np<%PwujF=cdUE5gQL<|{`$!~uzu6qk$79cEr9u@&Cvo4K=y&R~RH+*w3tz}(dx z1Ul@x4rs0XV}U`9_~@p)M&aPJS)`E3oW&PP=3Ba!+Lh!Hpsi)3gh>bA;_D$GQar5b zRA(3648{ZMl{2V1lu!Z4Pyf0HOSl4i{;%w{vo9 z{FUuriuSGq!1=itx*ecT;VdMR7)T()MzC5FSXaD&113V3RS+XAZat-rFb#$+P{hS3 zdae(4sZM%gF>V(yw_Mns4Y_rA)PN3v3yj%rqfZ<;NObgdO2?7{9`A{~YGQ>!s;3

<^Y=(3KvWf_TGvJaX&rigbSBoHa!bjkEo?w`hI|{HyprS45kfZ z1`odK9}W^pXldxcoydc602<~c0`j_Cu$f5ZtFvK#-~qI z6V%jFgJ&sQqp{%W1F1#f*K=in70y1s|M0N9fBWOZPrLqT`~KD24?m!YSucTafKFjo zKgTBnydGa|keq9Sv^Cgv6V&KP1vxfQWrL$U=W$bck*bHB?bT(LItUw(jbwfDt;DT- zrH|xnlk{G``hX-=yUqRo`iPLl*RS57#vMla*Vm}JhU9MTZWY}1^He=ACjGg-D`x~T zlL5CsCD&M1%D-Z&v#|#V*<$0g`|#HpwhjNc^luX!SS26y(pC_w;4*R0qm5Fpqo)u{ z+qASP2@nVqf?7b5sQAwmDP1rg1$r_4hup4UYsem*!`OyDcHYRSBy=OD8rC2P#L7gL zlxYpq5t*aPEhlo^Euco)CCD)R_tA9sMNZ0H^{{}E-T9vMfNEC6KLMF;5bHCWU7}1j zy7v%*ZHtU0#-!T{+i&e79xHb#8D-fJ9OTHvIhRmT%EL`i?zm##c?33`@vYE*j@{loV4cmKv{+TG-aTx^asGL9X3)ug>D8N7hXY+W7q`69;-z((yYM@^K4^dVpcZ$>4G1*3R&y<_sIq=c5xv}Mj|f|3al z6^`wc6m76rit%#J1adH@%;`ZcF%` z1a(a?zYx0Om;)e8Y7=C;Ifb&gmmTp9H?pjItIIJhosDbFbrE{+5YWbGIUcmloiT^} z3|<3s(fXDX<+(?@QRoIs6h_(!Hzq9G2l}VRhvf!1BAjvpE?8i7i6u_4mvH;kiOhZ< zv?pLPp27AA5e)~Qsn>`Y4hRWayR5YPbUsJzGClTF#$=*i;(Wa)&Hi&vDo?DNHX1-3 zNvN5+Dh`Hu>x4g9O+@OKhhN4pLNu3d?heWQ?_x06 zoh~_eK&A~7josIZY4kRr0^s@=0&4We%0CCIhiy<1s7$RKQs7au?{2_*@zO=^?@lu8bbs^@3A2Zv-2MRSedgN~`uFtKq4!SRUMq8#Vk||;;b8d+K z=V8}&cMy9c%k7lreYe5FK`oiFRyg0u@L!v;FlEWz&_9hFNwo7qNOo65XdbXtsDB7v zmb@hD;P7!I_F6q!up}Lt`+-Y`=1YS!WDYmbv&rFRaEw$H{lQ6=q9`Zwq*>f9!{uxR zu|IU7^@Ck;3}tOdH4|pC2_iqi$5F>|z(10O?FV>?1lnDp1fuJFx_~GsU^yS#z?7#G z=Y}RC$@i#LfMkhY3S#ufXQRX8qvO%hDV%mj$48_4uZDxsd^q^kT@5Xkj%8FB?HRjj0%`I*fPQlkn9%F`k7!2{2{ zB#3;xG4iJ9dn}o9pX7U71Ygqv++2|wL@NnWbo>XsWwI^ht3NN_!8GtEQE2Nwn<8LH z@j^JkdGBzYT!yDQ%(QD$(?A}YD+}~(D5#1i2Aj2HOB8&DXi4!O`)zwU94!04!VnSV zPn?>)Fq2JDUwlAS;v@a=o<5a4@W%R7zXAK5BFE8V&s$Hl5iO5vq7f%XBJy8kbtQ(# zF>P((HN%AWKytkv=HI^i>D7By!vun*a~_<$r1-R-em=1ka>PxR`HQBf3oIUKwgMkI z3l=I&uhJQn?~tHREo)YOA5iz@wA_lrYEPQua#Aiyy+~2OWCSRXKHCA`6h)rP#kEGR zdEB4><^ZSSKcMq?Bx$n8#N^Yoal|w0-!OeuY2qkw? z@N`aS;t|vzetP%*L2=Z+8DvmQB6~?x#=Rhr_ClibRI`~75{P_k)MfzsC1Oa5#Gr+2 zswB~^Q|*ZMq_0m;QJgDxkz?#;`_Z0u9x-^|g+YJ>;5jFI+Mn%dM_r-r2le|ne3(q* z1DOdT>NhHY=2C|UN<4%)w|6Z-AAC={oQYiP4y${%y?xItM~PUMS1V zL|cyaII_p$RK*+ngqOGA$Wh*=5~Xn59>|~6)09iH zTysXBtPcHmD0~OhzN&wW{&MJl$W!k#cnIB9!vy>E;#kek0%~8+;0mAkfeU$vF zksu8(lr!6xz@>}%7HHhmcGyhtO;52~tEtj^rGL^AfknzzBf~kqIhxH$yJ26#fhd;S z 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 AO#lD@ literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.su new file mode 100644 index 0000000..0927141 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.su @@ -0,0 +1,17 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:84:6:HAL_PWR_DeInit 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:97:6:HAL_PWR_EnableBkUpAccess 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:110:6:HAL_PWR_DisableBkUpAccess 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:338:6:HAL_PWR_ConfigPVD 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:380:6:HAL_PWR_EnablePVD 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:390:6:HAL_PWR_DisablePVD 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:405:6:HAL_PWR_EnableWakeUpPin 24 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:422:6:HAL_PWR_DisableWakeUpPin 24 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:445:6:HAL_PWR_EnterSLEEPMode 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:494:6:HAL_PWR_EnterSTOPMode 16 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:534:6:HAL_PWR_EnterSTANDBYMode 4 static,ignoring_inline_asm +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:559:6:HAL_PWR_EnableSleepOnExit 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:572:6:HAL_PWR_DisableSleepOnExit 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:585:6:HAL_PWR_EnableSEVOnPend 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:598:6:HAL_PWR_DisableSEVOnPend 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:611:6:HAL_PWR_PVD_IRQHandler 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c:628:13:HAL_PWR_PVDCallback 4 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.cyclo new file mode 100644 index 0000000..67dc12f --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.cyclo @@ -0,0 +1,7 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:65:10:HAL_PWREx_GetVoltageRange 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:78:6:HAL_PWREx_EnableFastWakeUp 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:88:6:HAL_PWREx_DisableFastWakeUp 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:98:6:HAL_PWREx_EnableUltraLowPower 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:108:6:HAL_PWREx_DisableUltraLowPower 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:124:6:HAL_PWREx_EnableLowPowerRunMode 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c:135:19:HAL_PWREx_DisableLowPowerRunMode 1 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.d new file mode 100644 index 0000000..2a439c2 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..ae0573d1a8fea16061c78a5886a80531c3825cb2 GIT binary patch literal 710336 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 ptwVK8A@y$3=^-WRmKbKaSLq{Rb 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 z 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%0Dk<0`5mZWdZ#%3?baA(64f=^iF^IlX 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

Qh!Wh#t$yMEZTffXKrFVvi(h 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 Tt+>ND?zHINA+=B}QXSokx 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¬lFyW- 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 @?ESZ9)MVI$;HbWC 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�!)Paeq{Gq6q#F+^E)Px%* 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%0DvA4 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 cn1zgG%T*FP=#+`hP`*@Itd5ouc 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.su new file mode 100644 index 0000000..1364a7f --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.su @@ -0,0 +1,15 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:226:19:HAL_RCC_DeInit 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:322:19:HAL_RCC_OscConfig 40 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:797:19:HAL_RCC_ClockConfig 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1003:6:HAL_RCC_MCOConfig 48 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1040:6:HAL_RCC_EnableCSS 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1049:6:HAL_RCC_DisableCSS 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1084:10:HAL_RCC_GetSysClockFreq 88 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1140:10:HAL_RCC_GetHCLKFreq 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1151:10:HAL_RCC_GetPCLK1Freq 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1163:10:HAL_RCC_GetPCLK2Freq 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1176:6:HAL_RCC_GetOscConfig 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1272:6:HAL_RCC_GetClockConfig 16 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1302:6:HAL_RCC_NMI_IRQHandler 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1319:13:HAL_RCC_CSSCallback 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c:1344:26:RCC_SetFlashLatencyFromMSIRange 32 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.cyclo new file mode 100644 index 0000000..e67d81f --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.cyclo @@ -0,0 +1,8 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:90:19:HAL_RCCEx_PeriphCLKConfig 24 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:229:6:HAL_RCCEx_GetPeriphCLKConfig 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:266:10:HAL_RCCEx_GetPeriphCLKFreq 12 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:358:6:HAL_RCCEx_EnableLSECSS 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:371:6:HAL_RCCEx_DisableLSECSS 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:385:6:HAL_RCCEx_EnableLSECSS_IT 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:402:6:HAL_RCCEx_LSECSS_IRQHandler 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:419:13:HAL_RCCEx_LSECSS_Callback 1 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.d new file mode 100644 index 0000000..562e0f7 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..614815076195f19a913a05ed9a618c25598a382e GIT binary patch literal 712324 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⋘@~9nsS22qYb(xJAaqh5_#Q%M<&H*h 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Ξ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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.su b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.su new file mode 100644 index 0000000..fd9bbc1 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.su @@ -0,0 +1,8 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:90:19:HAL_RCCEx_PeriphCLKConfig 32 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:229:6:HAL_RCCEx_GetPeriphCLKConfig 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:266:10:HAL_RCCEx_GetPeriphCLKFreq 24 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:358:6:HAL_RCCEx_EnableLSECSS 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:371:6:HAL_RCCEx_DisableLSECSS 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:385:6:HAL_RCCEx_EnableLSECSS_IT 4 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:402:6:HAL_RCCEx_LSECSS_IRQHandler 8 static +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c:419:13:HAL_RCCEx_LSECSS_Callback 4 static diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.cyclo b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.cyclo new file mode 100644 index 0000000..e52466e --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.cyclo @@ -0,0 +1,55 @@ +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:313:19:HAL_SPI_Init 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:446:19:HAL_SPI_DeInit 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:490:13:HAL_SPI_MspInit 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:506:13:HAL_SPI_MspDeInit 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:778:19:HAL_SPI_Transmit 25 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:947:19:HAL_SPI_Receive 22 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1147:19:HAL_SPI_TransmitReceive 38 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1398:19:HAL_SPI_Transmit_IT 8 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1480:19:HAL_SPI_Receive_IT 10 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1571:19:HAL_SPI_TransmitReceive_IT 12 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1658:19:HAL_SPI_Transmit_DMA 8 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1762:19:HAL_SPI_Receive_DMA 10 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:1872:19:HAL_SPI_TransmitReceive_DMA 14 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2015:19:HAL_SPI_Abort 16 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2162:19:HAL_SPI_Abort_IT 19 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2325:19:HAL_SPI_DMAPause 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2345:19:HAL_SPI_DMAResume 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2365:19:HAL_SPI_DMAStop 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2407:6:HAL_SPI_IRQHandler 21 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2521:13:HAL_SPI_TxCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2537:13:HAL_SPI_RxCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2553:13:HAL_SPI_TxRxCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2569:13:HAL_SPI_TxHalfCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2585:13:HAL_SPI_RxHalfCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2601:13:HAL_SPI_TxRxHalfCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2617:13:HAL_SPI_ErrorCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2635:13:HAL_SPI_AbortCpltCallback 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2670:22:HAL_SPI_GetState 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2682:10:HAL_SPI_GetError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2707:13:SPI_DMATransmitCplt 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2764:13:SPI_DMAReceiveCplt 6 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2853:13:SPI_DMATransmitReceiveCplt 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2933:13:SPI_DMAHalfTransmitCplt 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2951:13:SPI_DMAHalfReceiveCplt 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2969:13:SPI_DMAHalfTransmitReceiveCplt 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:2987:13:SPI_DMAError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3010:13:SPI_DMAAbortOnError 1 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3032:13:SPI_DMATxAbortCallback 6 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3099:13:SPI_DMARxAbortCallback 5 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3160:13:SPI_2linesRxISR_8BIT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3223:13:SPI_2linesTxISR_8BIT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3259:13:SPI_2linesRxISR_16BIT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3315:13:SPI_2linesTxISR_16BIT 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3375:13:SPI_RxISR_8BIT 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3431:13:SPI_RxISR_16BIT 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3464:13:SPI_TxISR_8BIT 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3489:13:SPI_TxISR_16BIT 2 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3519:26:SPI_WaitFlagStateUntilTimeout 10 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3586:26:SPI_EndRxTransaction 9 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3636:26:SPI_EndRxTxTransaction 6 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3683:13:SPI_CloseRxTx_ISR 7 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3778:13:SPI_CloseRx_ISR 4 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3841:13:SPI_CloseTx_ISR 6 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3902:13:SPI_AbortRx_ISR 3 +../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c:3938:13:SPI_AbortTx_ISR 1 diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.d b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.d new file mode 100644 index 0000000..67fa3ac --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.d @@ -0,0 +1,52 @@ +Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o: \ + ../Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h \ + ../Core/Inc/stm32l1xx_hal_conf.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h \ + ../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h: +../Core/Inc/stm32l1xx_hal_conf.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l1xx.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32L1xx/Include/system_stm32l1xx.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h: +../Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h: diff --git a/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o b/TP4_INIT_TFT/Debug/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o new file mode 100644 index 0000000000000000000000000000000000000000..2611476729abc2ef7b66b87fcaa797d53bf6b19f GIT binary patch literal 748204 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%0A6SzQWEA@nIMxCB=ZM1>3J{ z!DjgoD0T?yc)3U~EN|*#Q#(4;#{t^5kj>8$Zejnn1fFOCx#<+@CgXGX9^StB{_Y1R z`N~ld@4Z9bJV}WPbDv+R0*}RXm~kbY^rHcL0~`%ga{yK+;BT1zncRu>S*&3~n8Jo7 zG{@wi2FURXByfc$2Hj_-4aBxxc|DmK4WOuApp%48EQUK)OvQPEMVYcRzuxb_;MCm_ zZ~gI`?{D9&?*9K<#|u74=^(b80%rUQI|tQ+Z0C@!p!a>k(DBey4_P|I|5MR|w1=Q1 z+CvH=V3jz1SF}sio7e#Qwj_Ol6iNxZ6c@(qG%>rlLZZJEh;2YK8Q`SPS5y=N^H98% zpF9W)rox;d(`=3yH724%n)gc;Q3zLGezjtyN(l2pdpxZN>>Z8M2gDq5`=+S8_|PGY zFK8;H%2V!!Re5e2Ka^&t6=;AhX6q&GlsH`3h@?7s$4j-`Z(OC`veM-0Zs40KatW+ifO)rph zha5aBP(Hyo!DAsCh=sg9AmMimFmbtfqwrO|9daI2oSSS$a4Frse^1jBf|`5Hdz0Jm z)j=F=Mm0^A5XY9+o2%tzFhc9-aN0Y5NT8fW#gZ#L=`vC$HBqX*W()&^{z#n`6%J26l zsD|r_Z29tu0s%NrE=e%0rERpcoW^LAm`5>VdNAE6r zjRbkv-;68cfIZ+K#!ET|lqob~E)4aw%~f?7)Yphx&C)QGVaS+Q@Y7P(PxoM9?GLLq zwP&&zaByzi;W!%V5!8dU_NF#b#DbW3xDTK7;XyXuQXvO6szwSY((UFUF{^=iBD-2W zbY|AUq(qJik2GOL+Z;vVcL&VPcW1Ar~q$J%zFoeKD zRP`P|9TmM3NUzi}a>tLdmO&k&S=NeE^^yo=mm(^n!w3QxD9}2W2Wgb3Nl^Wmd8J27 zY$F2mPG$&>J3JJ=Fdh(6g$3oO3;hh`lh{WQFESyIf_5$nC9ykS=|Q5n%3GYTn&GV# zNHe1{f)}3LyuW7&;Kl0??@b%ualyO+eDdn2@3gV{FLwU3$7-yGR1GU;J&w5 z)sAqNnw)hEc%vlqi33n~ z9=H$#z`LFSP9GE0do)x~n1v#VS5(N7uc`N`5t#gZt#T_}&X6XEv@s>{O*b8W(gM`( zko+hT9@fn!8L45unV^)C^hVFpHmq%A;&m0`%oa7kr{5Ya+vRJzpUj1Gr- zFtt&zs~QaFMNYmtM~_Q4jQEvaNvy!pJO1$Q{r&v*%@6lKg1fKZ-Mo1ZE8csPZ2-Ok zZqKI|r|^yf%$BJq)8(p&^>&`^tns8--3_D&qlFRDvh<#Or62YRFZ+X!EZ!%R{>9}| z22AV$`rX6-K))gUz`ZR{SQThNkbOiIwCwkDfBFCrVuam3M__MPm@IfVK^iU{3r-^M zb85-2(61o2D9en+FYyjZ$c&dEl>{cBH`p}zj_k5{j-aravc+mY`GVDcBw@M8(5@X< zhu;-aP2r+Jt4}_7UTf-Aok%AH0dH&Vj#*`g(KTynVj|V%f^B502x9Vn@SMXgkCk#4 zQ6u-${0i2vF4H-LV&$6Oqi=i#a>;KjfhkEe>FC8Wa#GPzgwpAJ5bY_0#2@;bdHO>9 zDeStOtgaccaCd+4;iqqr`k!u;jR@Efbt3FSNYmiz1{EmDz}w{FeW+~FLhS1^VD)w{ zYH|e+d-+q74N~%yIz6g(ogYDI!?mmL?uPoWUYept*9mXQ_JQP^Bf%8$CKJN6( ztrCoK{$Q(Y2kPTUO`%XDpD=c3$Ay*-^evgv&31@u+PzTh7Z1|Ho{(gEv9beTDiBu6 zEMP`vgE-fKNHHCeX5s(b97Qz1#}97KMpo>7K`~OE=X3xpH6RI?W~r`W`Zi-eyES`C zm-;@gs-YO|18~3LTDW%xMyFe1lPj8lr1u=2+eCs4mLp{!g@GYJ3%y5_79_6 zg{WDvr~u03&N38%A~@qj6iP>odg9-*kSF1ulBYhT!)pU`RPyA|q^KwWd@fVp-KKqs ztb&(2i{(szP-7{7{{^J6kK`^qX+fFrz@J0%nx&ZN#x3zaQR(dEe zOK+9dR4(v52LE0G)(oVEI9N+yNIa|lS$sL{qg)Bl7b@RMYm5KFxZ2p_jse=~pv58{ zZL>bRIzJZjTYt^V@$kH=NGnu<(mmJ+q<6SJ!BR}ax;RS(iDQ)keq@qEDv<7j9ptm4 zD6b8u3edc`dHvy5vJm~^q5ceF46mk%orz0(<#-%a6+`eJagct*tS7J+D7<9%5ayHq z?oqa%zkDt1Q+>6}+eD4ABfUZGrtGWso?Mb*dc!MUAL}+2>_r z#nVdu()R_JenDrpiUpJZGZs;=pyi><9C0Qgj}~J5L$^XHP24Mgih6l7lb`S3eRuc$ z_h@HAp2`?37+;$!Qi1fdV01t)Fy2urF_Oa014JW9UEJZN;I6%Ml;I9SWPd-4f_h!M zgeyfsfyxJmbzsX-Qhp_+Q5r$}t|K5m{zMS**|OJhPYVDVL>Z3hns89hSc9J4j$VDA zE^FNv)4zl?xP~cdd^V_!#h;Lr2CyEh{1k&ZXHZQj?r7TiE^fv)HfX2J?Hi!fjn`A% zEY47|Y__0U)3}S9u1^!O7|MtpgE8rTdHerKRIG2AU~3k*L6X_%5vHIaL7$%FMTj7@11UBwPxIbb7XsuK-zbnVb~?F zJ36EKZ4EOo3XDpq4aw$|HlTHw3w}G`k1azplU?PNk&6PL|H)Quce#Z zd?&-TR7O#`8?Z+Yj}XN(d}^o9YlUJ$LQh}>q&^GRBvwEImK}nQDMU*kqbvVKu!JzM z#7h)e(Z8CmHgmXr|NVR(EDZGdGz;w)G2ft?Hu=ouSdK~bRDOAms$2+8TwEhHyaK(1 zQjtNe`Y}4{ZpFm+Sy36i6l;fl5V41V(HZXA1{zj*w7$nBrYlh!E|?l=TtB;NRuHRU z`p6_2f=L0fWXPbTXqS2+k~@|!5r>+Ssd`1#Xh5PBh^@n;9VoRDe?%6}I@gHJ-QS$t zy}5h;qoj5;)kF38e9uu-yvp=&uy(4eO@FYo^wbWq_7xM)Q`kNJ3`r`JDcr)7(Z!l+ zDx^l8pH~Ag681+#2yFA2w1CowP+<*59)vBxGI@r-(wT7yL}tzA5N%Bs_NI%~4EQZC za^EF9Es0T96U0khxeBB=ku`!#P0_aC`04}}rqMCn6OlRYf^SHzfHDBJ4Lv^4vafkV z=wQMF+V;@)$;AcrG8>KJj|?}&9auNjdQ;Hg*%g`94VFMdM)Ebj1jdGFj7x0CLHfF; zIMd%V4LkDgJxArN*TtBJUP0(icw}R4nHYdNSM&LJ;!~Wcc!1g)_aVy%{7Z7BMm^! zg&77hSZiQUqOZP@pfxB7e?7S1PzOnWgXtxd`nWv9vG6+UmqBf zGGQMWl9FN{7;*r$&P)IY%kC@$svAjQLQP-nIhGQ}LEN?n5ufZ~KE37*NBiUf0m^36 zkh_ZLg|S>m5;w)Wd6cwWGAGMAqkAGYQ1=W)PD-40I6e&sg|y;xpf4P)nkaxY%MI$2 zQYjXCy+;?LYgBt`MuNI79|s7nq<7_TKg2ITuc$@`SdYE`5lvTm|Fi#yKZ!xKY#s~Y z;tkM!mTI7Iq3q<1m8e&p`VVj3quDfSih>Yg9GZX82o36puv}}bxbx-kFv(j)Wl}4+ zT{1Vt`hRxF?imWmq=;SpZEt%pVE3VC9tzim#RE(q>jLu`cEVbNmFs|5q=R20B^^n7 zo3G7cTrPp47GMb5)HtCoL+f2zLIdPU?vk8TsOqME$!RSz@1KL;h$A#qcn4`;#Q_&k zd>~r);)UKtY+zaoQtXrX>Nb>OqjR_+7j~^U9=R@xDFX}@EoBSNwg7*h=d}y%WFydf z>}(EEPI9r42UTy7F#*4j%1R9k|HwS8DZr5NDr$1LP4H*~yR-mkIL(mTvNVI{Nvl9U zecMRn_)b`e&AuNynQ~Q#)0MrsSNJNi9tvY~L?#djFUm1x+>Dw+2pZOq$tD-0XGy2= z2+lHPZ<9#xfGs+8hwy;3zYrdZP!|TkmF$(>WNgR^QzF3Fsc0+-w>7`=#dMN^+m(Y} zTi?mrgY8|M9*^KCTL7fim0r6T8{9TicMi};GwDmgeCZGIhIGM%L<5@^k{EJ`GF?S=lj21u{uoG4fVQ;5OQQP}|H;a+NEXb6#PPfm`^#Hq28l`#_t&&SY~oDc*V zpQO`)dI0JO+XY`;pe#5m1~JBh1Y>nJJAt-<{pq`}LNq2>#tIQ7<iI+tM*X3U^+_8MkraQDphi9$@;aX$d?qwmkEw*M~7IlBG(+EPk^uq6C2XDEcM;->^0;;-+_mCwIT+%Ep`nuaq zQ^CZ=X!5>VzpRuKvb1zxla(CfVXI9;WeqFCL+}V31{zh}(xT&6=8M$?j0jpz2*21t z6@l5}40lrk(~gJuls2A!>ai&3|LpCgH)L|!`%`a^RdJBtlcL>_ZFh-I8On3cF=dd=Fny=cutZJdmGPt30_&l2>d0FS(RkcGuO^3$r-bVm>5`Fe zcPy*iJ;2WzJ_P4LLnz{$$n6ykIfJAbS;0d|V~tkz2qla?=%qA%PN(`3DZ89~`IWTs zLDj3iZc^_QM)Ig843j`&#??(>RM78Fpz=x}hlin--r-917Kdp#?90cSj_7U8PC#v* zWGd)StLdf90SK%MCn0vKp;NSvUlW8aB!WB(DoBg!bPo{CWh+O% zuX&5PciRxg)6nlq??{O4>nX*d(l9$mx(g{V7|sJqHHi*Wm?7#APj}d#gdbul)xf$zSygH zT?3?7P-J1uo9Z<+;y#h@A&KS~nv(nW`O!d8dZl1X-r|aB!7$!RWCo$4SC~T!hVl3? zWS@NT`U@OCnn-666L7^7@2p|HGg_YZpWt8Mk(+MX(qaD*rf=Q~{TQQ|9iHAq;U>X_N#ppMLws%W;8 z6Hn?z%-e}Y4pPjKAc@bj66Pu%h}h!BZ7Bd!31usKxYCK)i|O+B)KB`Mfl((YywYtq zZ$MmZPz1xuS#p6Z2AFfz=}3j?GZ zFqM_Zbd#6hjeqMI-UzCDHEqJH$y*zPWF?*@)q+h4!1HWOT3kc`n}I({m(k3>t$-kR zX6iBap}e)p%P6qqCQZeDLDFD@cVuN((H4lD;&gxn<{)UD{{{qO*$++msX4N@N7oXM z6u(Gzh<^)NjJW1XLZY;I+k?pR&@&Gq3wgd1D<%|ep<_AM2uBk(Cf75NU-^=x zLek?)L}-pp-2+WnTrOc+D}`SDT6DvdNknHh{aL-ToZRD%5ta=?nZqQHrFGRI+i+cm z4@&wd14LSYYtqZ`=nkKko!I^W>Jx-K2$W6edHh2Kf&x3fLT3@mZP3h)adhE=1o8AJ z54Bh6Z3m%crm;KHyj1F^gg|0~o~@K5e1yK>@bz0h7K#)Jrq9wTr?m^5z*G@8eMxY` zMy$UH0T0}Mh_=9hQ8RY90_oMQmGr=%xcU-ofC>2YZGG#TAUOh1J{ti_%Inm}Q%yHU zjWohk(btxR^juR30ZC6Q%xyz8f3%iHRWr6Wl=NIKGm_$)-8@qQ7Qm}|?Y~Dw@h6V1l0DZTgVB_JJ zZ!%)T2m-WdBxO>5W-OXuJ0MXh(K##(;tosrO0m8JwP{!{bprhc*K!{aPJ{8+-j%K) z>qU@e64K99qya4Z0*%eqXq2XTp?r&x3!2HHZPI$0_>B`1w`q3_c%*ZaGHBfvpthXa zc*V>kE`6mlZ9TtuDe~1i7sIrs+ei>hcogsv{!OPgh@&atI_%yDx5L*5hnS)=vU-52 zp{?aMrM&}cU+J|pjXL;+KEys1loX90E-V=~6w~BE5H>KDf~iuy>Pl~j(ZiugF+U7S z>*f54cABGab^gkY&Czk2j_WIt9>9Q()(Yo*{%tFqv-u_AUW5{is7cvTqcI0&V-5P& zka}gMKwcs=d;E<39VM~4yvq3M)&Om)nWgC#pC2QxFsqw>tz|OGHjoOkHTge)^8~smTNCL3oe8R{<9a2HyPSzVE$P+ph0HvFJD8y64G(1roBpM zK1&|2;(f<0jcgun925VLZP+w0Y=Sn{Fxkl#*|6e~V-eYvl)+k~^t~Wte+7HNH^TG+ z@w?be1f5FscXQ+L&wD7(JQ(gB91M^42S-N-XrFa-k_|vC#em!lLowMpoQ+#Flc9QD zk1oVH6=I4#s~p^w90gnnVGN+DL>@k&Fb2sk*+1RU;*=XXQLX~CW4eHU4U%!3z_sQKacXaDGA_|0j3TatM$ubRr z#`+gro}RRVd?_TOs!k!AZnPxDFd}+!`|j@NA7^h~iRfe0aVQ@1bp256n5U(5jEI>Z zIBYW9_jU>zy{UygHP;BF-=2>mke}cENc~N6Y}WgC0kU~JpD$zsS`-odon0l3D zh9W=cv&Nl$<~Ri2e%AZupZPvGML+9(h~S5f@UwtJMxWM$nsm3ohJ4sUARyUe@ajrj!J6QEa2O3m18y665GY^6`#uW zW>4&sv<}V+dQ9*V2*t{fARbZ;XZAK0C9t_MP7j>z%gM-3n4iRO2k=w8V1|g#{r#sX zr%!H)gL`o@voh3!5AwF@Hgrvdv%$lnKx!i`lsRGjKz(S=$P`Z!l&^z##DA9S&;*G* zah1pY?d|Ld()w;TKi|CiJ5qu+o16RlcX!`@Kwaw%%NW~zl%$H$!RzH9n_pa4*LNh- zj+^{Xt|Xll^934IMLX0tus$PuV@@{ zEzv$XzIY;L1 zY_%FSc+L6EoBO->?{9!G^tf#`G&Nxuk78Nq=y8%eRVnL+9+TuAI6i?x{{;efz%%H= zJ44d@h7mO;9^eksHi)#?aQCXiHfo=_5Y2j`6c9-}>3(G8Z z9gs7yeg@`bs~QYEV{73RD<@5k7ol30u5u^`KHE+>6V^7p!Jh|%{oO+-4M+ITV7I?_ z`z8ABo}g)$T(>v@)9b5++Zt)+@&m^_E9p7z11O(9Lz(=v_dd@CFk`A0Mm^W}rVFiv zl@f+5V9qx8ghnM7=#L3B;G#ysOz*U@ARvYP0CyY|!XviJ>u=D7hzkZPBXA2MQtG@y z;`-%RFuOl7w<8Vk7)N3@S5xDM)^tt_J)Kdf(+gx{vw#!|3bCdGZ}M-VFun>^xwA{I zS45O1$aaFJ(dqfX^(i-$4uOd*V3?CQw7}t7Yb*i+$~``Jy9=c<@dT3|U`v;VL<-^? z*@SBSRNJpvKV2)&r?@!yrAlqAzp4UB7Y>a8RzKgoyB)o|y^$*11z?*1ZlGBKOnzf0 zF0|o7K`2Ia>qDi9A$5dmAEs?ALEl3jmFjRG6nimld8w`bL2|AP2i^b;=9uKN2+owY zV`bl%k>_sr5j3LTPFZRaL=TnPhI0DH6b9;~Bkp6@poqBOURq#33svw&^h`s*-(uzD z<8I}I2uC&%PI)J%QV3Yz`4m?%*ixo#TMBLo<%$$h7l{h@^<`E)1g}>;rad(Q+Vdtr z%>2VYm}J^lR~e#TxB=2j-Q*!fq+kDj4btdb*JS*1yhdPZEoL>Ltsl_R0LeH{txsBg zo_4Nvg#jn{Ouh@}t3PpGj&OqPUq`xJgOwCSO{lLanz zo%9Vs7QM4{v``vd3_wjWpE9*HL(HQeMF7Fx@_9(&Su=LAlHJ5A&6HeX2g@rH8inZW zu3?&1+LaV=7eAy4^QER;up<@SKD!TY#d5etgCwNeb}29DG^-LNvneMH0jOUxA+!RXJAc5kK2fz2tu^Dh(0qa$EmRg3Q0&GK_iD*0Z0&iU3(?s_Uq9VBKI+E z$5}lU;~oq~RR~lgu2L##SV+$;<_5;f0Y5~4CmWA7;#c`{_utSdq3621xyx*k27 z;;?9J9D}O6qi1BftTNggk8l*cr^zN)djETEY z7z!lf&n{nK1x0e47)+B;rSQ5>1d4IomWLjS6f1~R@tUMQ1Z!uPqf5`o*cqiD4^8SM z`Wa@#0`>D1Q4CS^6dkA`i=x`Q>S&?gW4VcyW#~tW6hHKmWjZo6603b#iU(x#3Q`)y zf?J+E&Npqxcn-iK%5wg-SlCgT&-u%4Cq}zeOI`#`4v)6cYdw^EWSM0!=UB1E!v`z)ca_xg2JS` zx!4Me>%5qw$fXz;jpD7l`cXARN%ESw1vR88%7?7rgoAiTx0__s#=S>LHAkk<6PPyT z$ws49#dGnR$K?J;)GfED3E({K_^|4sj;rOw&xiEt8cl-Jv`@mmt>TZ#R!KD2~Cd@Do6 zL2N~ya$&yRBXdx(up^5SG**vCF@y9Oaa2gx{uBc_DHtQm}usPgH2c@z!z!HD>1+0mNz%2F2K9vYm?t(-RV(NH_ z^FRiJj6T7Ffm`}w66*EJlF(dnbJ;&a4Ck;c@^)AOCyx`|W#=t^uWV$n-sb)nSsq09 zFXcHxB$!Om#vu#$Bup~70}h?#ztG)99M#dE#`p{=I|xrJ6TaLuON$CAN67=O#gIOO)Byz`d`whXJfvi0JSpN=!wk6x1f1&#+J{ zBtFUr58aX5v|e8_fWqDqtndx6-c`acQ~71qA4S=py!X-tQjBI}kY0hqKuM8I6DQj% z(N*>5lD$O+A7FChn!g1?ZSj3cBTeFPubkZO0pt^~o5Gfb3RpR8&^6`)(o}WMvYWpm zpEXFMV`Lzb$=k7mX`lLj;6D9;FBsR0{q4HiaLym)%vMiqHLi_X1A+hZtJ$)TxHu5L zLEz?ju+@Ma>}1pKDT8$q#HRtOe-Ig8Tfzg786D|^@$L@!R-GkynnK2bt`Q`eH}@TV!mA1rX~o- zDEbChv-1h;N_G9HTtOAD?+vbGMh8hZbAz>5Vp9xVTObxR9MYWC)iJ1xIya}C#4Wo+ znKoSfrB`$MlM~3eXd(sw)p`QiY;)E#?wh>2h%uv0h!|`Ko}Rs&t?QPJWDKe74b?z{ zRMwJ55YNGvSO@^g44`a1+2p~sj&I)ILQCsW-sUA~=H=2(mKWS_*JQ72@pnhd@k_|D z#wX(SP%Xyi=#4#B{N5Ucht}4Cy$QglV;%_BDM=t5mQn0-C)}hHi^Wo=Ul#Vs z%T1OXqlqCiyQHHyx==I_KgYi?P$V~JavxPJxCzryATyU1u0E^QWfjb%eN$B7*>dx2 ziU8H={BnfOY-}!EuC;g)FfE)_V(}*Xg?8yFRXcI(JD$3yR4bfL*Z_jv#utj?%Y9QYNs>T^@a8H933UM0B z08bZQf)E;jiKJonqc!?YFd-S-5Q3QeiijYZBKec+Onm-mZ5)33>BBwhQNMjNM%6_g z*G@q22bMB;CI@KtatC@5Jmb{lXZQ=|*KdJg(SA=Ks0DYozoU!0{rfuhfah4| z!DfyBEl)4ab`l^os3hPcg<7R(7?j6{pkqa&Hj7CwUT6Xm;TtB3j1@65vo%KF>e8UH z#Axv#;i^N=9aL5(i$As~`O-EVVg@q-U819}r^s)nFTf8guZN8s46*%*kEqm)FP|0EXW_t8`2u(hCYRS2t_LTy4rJdO;x0bCetq>b z|IL&ZYtCDcN!EzEI<2h~F%_f(sG9Z#(z!Ch8>Gbo2B5hj+J$E;Vjt=RfO#4sr~vA2ys*XvY*Z1k~*6IH*n|ABJRGuEGR5 zN~WYxW@*?Y82DN>NKL**JB29^@}OOGrGPZA#E$WU%AR(@(I~o-pnBv2hz1n>f z5GPR-K#OY5h#N$2HAn- zzLbwX9xdQeo({mBv2j)^%Nahh)yeGXZt5s}htc&jk5Q_kV_f`|%@W5KMrDZt_If-7 zQ^o9r0?jFkK0%fk)B9w$Q2dB$=Y^^9XR_fr4rg|~e+@D3;TL1TB}zkuiS%F)sEp4( z1&!p7{-0do2Er*^azEa@d2{<3Ol*h3s$a&Gk7}5guj0_0i=b%Ed?kYF1X>=8{o3|l zgM>|_5ESoGqY6@Msw&AF=rSddbU=EAumB^JWOc+YYrw_R*3%b1^!f_P&6B<;x?~^1>APi6B=a6nBVM`rtA#e4jZwqpvwm%N)xwTfF6J zmIQC12Ji>4-#FIENG!iSm>F}tG?`NuSM9Q$HJB=fXd4)iL`O3+6!U-iy9j@4=A^@? zHlM_ylypAF__@M;{!X6Vzb1 zbONV18Rp-f4+r!9$Bzn_LR%r$uS=@7Z3-l9-<^Xko*dlwk90nbuU>$dGtA(ECR*TH zA}lrn-*`TL((~c?8}VJon+3i{$mEJ5G!A&wB^{*#MRrU0%?&O_P8hRjow0f*@T`?^ znqD~wT$&2z)8>zY5JHBHUdnhvtenCh|JwT(9nh-6mAuUd=4~bsp>=IEL5a_J;fIkX zPqT<{V9v`zFVIIHKx+rBpHlQx~~ zd}PhRD%IfTwVILuLiaUZ?YS3et}d8Ih~}u%X1U=jH}YaFnJvJNr?zxHnq7b~(%=BU zJNB#ybQ~higF_EOqQac4v}t_>e$s_;20g2rB2q^nK=rF`ishbvw`VWWxV!1? zMR~_-S(@-;;Y0Zw)hjo8A8LrcUsP$)FHVj)z6I1HW=mx1{V^5{UmGNLo=$KH+#b!ZSwOIA6u+Sid z+3Zv@)nsQXm!9Jmha(f4WHd*YJUsZpytL}I4`!xSBjMJ7ruib3@rfyVUGw$fsfy2M z4nO+L5A?V9+2zU!vNZbPc2!8x(uJiNNz8&?+Q|mFZI04z+KCK_u43sED_<|DWCH6e zqb7k0`$4Zzw49M?GgYAxm}D+9RiS!~uH4Sq@=*9(W5JsNKCRR>|GbX_v)9M*h$~J4 zx)!4)WIoP+BFMJ(sJOcxtZ%eN2+#}xnIg)>zqo@UbH8>E?V-4f++upOFv}o}#h7@L z@K<>EcZC&z={S6{K?i~`oU;`~;e&&rAX86<*_7;@n+a`9MDpuhHl0@*Kznmeo| ze2M_jeyS&cWy99SfZtw4wIW0o%jsgbNpH&yZ3HPK!;MzQz4E6ZT2MHuK!?s3P6r0G z6DFd1fwselyBMG8Nd{8oJ9>erPL6pT8Wk$n0T0LtPCWLTN>+~PK1H~z`#=3lIh0Z0 z7#^d*4R6YW2pF&ESm;3}5v|0v=Za7+BDTPW-w*}ep@Sy#E(j*Uy@F-(OMM&#B_5J? z(g;06te}g{Na<|tAI#h77WO|OAg2izU{MhZ26_N>*7K@>Dykr+be^|8{|rX+aGPYq zhAMY#mL|oARjncgv+sq<(5#2=i{w;;N=0*oJ=#^cxmmBpxlUc(S&y3#fhvz;e<%=z zyU?R8t2`|h2XU#gCjTpf@cYyU6 z5ehTH`8Z~`=Nd(Xd?v~L)`04b9^RlP1i-%9Gq`75aRzMV|AV7Y z3xv9>R!l^m9bWMpAsQ+H)sGNq6Av2>GbsM4h4?`R$zE&l1Th71$SwYCb6l5Uwh^hcbNU4UGdKAEPCUa-?kH?fFwfP={xa7#>Oi$zn)0J1o67{dj+Jcl-Lg zC$smfAMqHrKYaiF?K=W2sx3Z-!tU@1D@bJoBPV@M`~;W+s(TQ2 zV4R~g5q_re?5g#o>{$7^Jf+5SDwk3HqN;-A=gRaO55i5=m?}E8Vxs0U5V<{_n}wO) zS(F?*FqsQ#6S`)d0N<>_gqKl}e0_O!0oO4q7J{Cazq#wX2(_Z;0=lDYOCD6xG^p3G zfDf*4BgxwAFh+k;SQ-_dl2IwsW3dUi()0?E{>*?~qEBZ1} zZ?%WjA2bePiR^Q*UdvCMK}X-9c6N@#@uOSAe6g1or_z(Q5cn=|X33(lPdhoXgY+ZL zrl8o2Hn2PbJJc^c>6PSef@v`GG?c%=^o-Sd3@Rt(A(5XpSdZ1qIbCKI-=Ay4ZEB!O zhygH!p?-bFKWigazRiiGh(*RP;SDj6TXY#=gAi1Zy^SncBg^qlUbz8<85I0V!i`_+ z7c!O}@?;6K_?K+w`KsK{&nP)4>2^^{;tMOFEi_y}mL$i@namI}{%7q%yC66VCzAyt zSvPj3-FmE;2k74niPkck_b-@{BdZ}H?@SU(%*qGk?P0*>&?~OsAziL7S11rv4v3jIw>kwL zt`Xt2S*i&CT_l7AOA*uwCr~M%ACBqDy|1MyKuwkNgJ-1BjP}Xy9$?ZF{p&cP{P(ch zIex9(Pf-0F1hL|WIc2JVD{1bU(Jd{vCTs4zBSUqg$44q4aSq$7&d~X6eS-S*Q-qkW zmzVQ7W|Pj=k|nhj707@c#HI<=9WC3cCKG}{>s7mL2+qFxJI6T_mq^bvZ|CAcMBa9C*ck3{&rgm``Du7XW3myH zH3Nj`OEc&Ror{OXJkF#P?m(!xPrUPaV}^gr{}{6xit#bo;4N7mZ=#TX;QLQs1eC32u&e0kKnva zS&_qbsTb}lQP*x~u}GqSKZ~|@sWr1oJ0_>V4xf4rx~_)>`ZvNDy)6_P^tvKr_#cqB z21pJd>tBy^k?nNllavdI{Z^7GkU}-9+hl7Vw9jyb-lWLdx&?dBN+xJ6z6P&IjY%vf zAUUTbhWdH!)@hY3Tmnv*E6j(YHftV215x*}9n-nat-C?Z99@jA zsc422v2;r-!vl=mo<7{kj^%YUSAYw<$E%g4a)>xFDf?htKKzhR}Vx1pMd3H}4R zfxGneSh2;}MpZO696d6*3TEG7-f76-z~`R6EZ#9(D>d~Foy;LvHtXh^bXW7rl zm!o{jWkLjf!c!Nm14JJh=q$)wJ6PwlG{YPjCkrh%wQ;h;f^4876Wf+qBOXOv(I=%s8f}q{on_d}TXerV$|=@kI6NYkAqXt{xH=mWndh zf?ZmcYJhloaf&Qh`d+_A4YBD&T;ky&HDAegokm8MxQsi141J-OqfSPb-YSTuDH%E# z-QZrreYbEXHQyXhdzDbygz0U~({yA~QBVQA!AbCMRhsA_7(b4TwZUxhu?FOk*(7my zGM$fJPABm2ti3Q>;wim624eqc17QQj0k#cRKKt3to9|xVdYhV3@O*|iOZd|5JOxvn z>YXQ`@4U{#7MZ*SixwlaUDJl-I)1>mN9`aIYa&|*mJEcl;W#rO+QcSXN1Wte5dhLI zcxbZJCt^SzeC(kxkPWl5*_`bJ()5}VF^b;K5R&1w&zvJ~1BgXD!)H_JiHpkYbYIW^*yUp3mSzm@(XfX#lQ0>U7D<3%ZojQ)xr- z(lx>oGiq$u?+AUhs;fwRDE9DFp-8)-UN%bvu8{`l#eTmSbhE~ZQ=RyzaT|3~i|j`? z^z%B&7ne*1YEW4mH|4Sp&@Oxki&^7ZPn-ORgi2YNs88~b@!4Sv;D@YH?q?cjcHpeS zG>BY+>PwR&4wcMoVUT?mEY^tZAG?XX1)x8G9W(NX-6rq(UHUwr} z=yUazit&Tf=+FpSzSIbv>V!^CVYwG3Pr`a7#4{#lTKi&+1n;bbw@oe&jFN!w;RDtl zBN_VkMd4D%H~bfrxyNO!Z)wVjz}u30W_%;+Ai=a9@&F#g8Ve~Lnk!#I)M137RSKED z`EL1f{ZV$$n^!FIP{K9cYVQXD@^v!flLBVn;tJIn(rZ0(v4UwHWEr3+In(jM5ZGP`b*d3aRWdQ-CpZjnt_f`j+-$fC*-G%EZ%d)xhQ zPnh5ps8`N;=zzkOp#^nSJh@KxLqoMLrMw!a6@*NLR8eX!$D$758mET&a0nMrIvg$) zaj{+A>jL8`Ae}L%HfA?Lg+W4=_7!vn8LGmg1TAK^4CJ()?GU%@T{^X^3K1=e$8jRTqf6q9I|aLt||_eS!g5Seu3No zJ+Z@!kzm^Hq+m>@qe-QMRsapH*hLojqa!!*5*PT%aM^O%n!ojT&;F~2l+mk4QpRoX zm8yJk+=D%}%B^Nr#_2WA3BKK_t;+7%x^JGnTAxVD_3{Kg4#CoZDT)yNwsPBTHS z31@3iOofaKDO)&R z3lU>rnvz%6-?)myR$p-Yq1+y-62lbXtn3KwSm@gl%V6_5ufmngbyXQIomtv!p^zkt zt@$wCJi%W4=DTnI`~2;9w^|C9r@R*eQn(`5EB=FW@55B>eY#*$3!B39xR~Wq@8V{A>#9Apu*1Ukc5=V- zU}W;>S?8C+$_iTT$aFbdoPn^@sY5|L6>Edz8MK3K)S%uYkWy>5v-92C4~&fL|M~Fg z;la}(>Mb4}42J#vLv*;_JwjO->E9`g#thXIQEaxdRF}9l{54=jmS)0w*9c9z@Q9N+ z+}eq%x0ytj$5W3)9zoJ%KXtxh?ISq27+f~diOhg!*mY z@%2?RcESz(g6IQinFP(SNVuHYnK@#HX|SnWCfK8^5=#gAm-e=TxM%PL(^uO%7D*VQ(hL^ZSGnV8sA3?pM3kf38z`TMdqE0 z$r=Ys3`jYfot~*WYjsDg2G+baw9_TbkwDjaZX`i9 zT=O$xH7sU}c8F2{R_m$#!E5{6DQPRjn(8j+@JNdECn{T!TjBd9G^4B=E3d;C$$_KfM{(D8_mzC#9WPYmd#)U6y|KodRWQLe_u4lvSN%uR zckfW57qXE|7zzf436H^%bRBWqP(V_Pfyt}OhY%-S;7IEmyt>QaVxdncmqMs?%3(>u z0}89hUeZR!h-;i3%MT3Fq~(`Vx?ujyQEXHzLgcv=SiXa9b9FtyjsaE$dvtv@eg@Bb z6*b4T2_Ow;p%!LUGTz|B`^^dJRjPQ4?pekogt0m0n&o7{VmNpy4x@}aCJ~QD_(YY@ z0w)9Sot}=yFME>q+4J>;MeC87tv|I;I!>1-pjBTRDurxLm;5@0Xu7m+;1i}72)N9D z>ZMHM@JfwIFp5GE|6Y8_JPsss7(v9Q#LAk5fzf`@)J#9iZ;J=bdcxC-Bpow`Zx7e% z7@%dFF7`a(9=61qUK(KxVB2)X)tV5XW25p;NiD8TEXGDX1{t#)a>|KLHg0QW$&0LO zJOf!kx`67plxZn@~S`Xr(;`ml)NTxlxdvo{xM+spHtPD3z5>Lh-{s<-YF2fM1L~Kcl z$ktWmz$KAmO;T(+LAEc=#XcyaD~Wu{C>oE(XQE8Clzypn>1D&~fP)vPn`yX@6J(1Lo6GshZmIA554M2Gb%*D!W$rG zH7P;Ebi@rs8-@~Cr5i<0iSdvMJ&Z)5ZLHrm#1%_?3KdI)3au}Xa_A6GJEcRSpoi?7 zR2I<+pmpOpt)}yVes_9n*kkV9@(ID~49>SjrTj8tZQG}KZ!hm#( zrF!JWI5!Xl{-#xcuWG!bxpOSrv-2;$N=7n!6MjMn?#8ggUUj9tB)e18&N+%1#0$ec zyl?RO?#=D{R3tr>+$Dy>-{9TlDj+sw@n0;XMYv!M-#4cv42 zUsXd$*?=vORJm5Oen?)thsgs@LB{}oPKjS@mOZI}`k{uA>gfTDREKVj zBq?Dyxbb6^{*mh#7CmPo9tCZZ$gZns0Q)!a+%I07+lDUDwi(rjyc26p?#v|p&_G5D zmv#ZO3ryrmmb$3DkTXpJO?pU8|UVnK3n? zv8L|Q?8wkVI51Rx?w@yx)DF_d8qFv2QvoD(ha;+OuQkm$ z%4M{(;gM*sMX&{xZ`T(;dY|6!QBoUR4erGqF}t9z*o}sbj9Fl!9@mR=n7O)5HmerU zk%M0XEI_q6|CR^5_MVqfgiW_|>Um;%Nle$O!_JDFVc*|A9Hl83r!IljaHP6YR*%_w zj!~ezK9*f*nyQ%p_}x!8?>>rp=AMJVG0<)LCM@EeNGJ5l42Cg%P=s|5C^wfP;4h0PGcz5g7_2$F=r~_Aeu>pEnaM$I5L7s zj1Dy9Z8EJTFxw8ONzo}v$@Mv!&*FL>d2n_Ns`I5*J{A-tDiNuMm;=CULmCgRZHZo%Pifm2_-$rU_GdKcHqbz(J)l?Y(JB8?-F zeSFgjwJb9muxrC9T3?KHaMYXJ<}fg@KY6|>WW z4t00wa)4&)ly`l4a=xNDERkO{Vs*j?S$VR)JWXU*tgxUmj`Z_^vZ&3;VqZYQowuw9X4w)*Uzww|8K*6hAJUAny(vm1 z72MxJUBUMz*8*mrA{ZOWci4aj3msc;Bh>;9><4DOpo z3@}5;bYhC2gO)knRv1$-{Z=^eB&j0#0WfAvfnBKPaZ*i~et~kRyEBF<1YKr{p;_v}s^&%QX#Cq)Tcw-D z5aASn33*M6MdAx?&dEbnF`*e~>k3V>K$J_c^=d4AH93O!!C_N~Xq5!KCk3_7NR3QQ zj76*XT8EY$I20IU$AH8c5aC4n2_AqzbWoOb{~+H-P=@Yv)0jq~Mg|c7GfD7RCpa}| zGaV-KpS<-&2=0U%x0F>IO}Of^75xEN3bzyey&*Z*DmfRo1$(so_zenJsZNm^U9)iL z8YMz~4{0}q7=6_H;>RDqa1w_PCy9gD=CWP6p)aTGuI>;M%H-n#{*&iAC|lkDd{tL4rJc-9)jFqt_<=GA2{oq!HFop??M`oBzrFd+*IW0Y z!;Y@dKSUiv@j&v$mB10JBzOXo*mW}qpaN-9nca`io_-tc^iS11+-F2|1!K&|qhmX| z^*}xp_oJLAe9W&kd-IWK^rq(^<+s~`^@U1+kmBx|E52tnLG_M;($$0d&Mvqq&m#1G ze#m?(I%k&E%#q!{+Bu}GyeC$9m-{^gL4*if@Fkg~W3NqVTObR>DpEFzny9KfF>j#$ z(tYo-ynst;v^-sfedHO*HS(j&H2PZ}3aWM2YpOm$G-tr81YLNoq34@1(y2Y|5A@B0 z{Sbkt5aE)+Fjx**anH?;G9z-YyNrmqp9(HE$EPkF&HMXX-t!ckii?3d7`aSd-$a*q zN6Tqs?hfr)(43Hii$^h6(52U_9V{U(R1lR-5Cy`-=}heT(9F=|+w%aXypG&oB=tG1pbUY&u9;Pw|_i#6t9? z83Ap+P8rVvp<{OGts}NHBLp;zYIF#c>bqxRwZDh${Cc^cpUntd@F8P*0BgcBEHJ+4 zWOcQ&2u_6?>C(>=DKnRmC==`MIV~)1ySzoAq`O&1^{DL<4&;16InjO65; zXH3p9-CAx61(jFP=cfPA0>?}lOwQ#mEGqJh5<|#Lj-r`Bnv>SeEKf-0Pvq1F*DwvI zqqMNgss+s*BpnZM<-Jm={KQ)#o;>qJ)M5~mWJKi! z@I}l&hc82*>*UK6^uSNUK0R$LWd+hQlA1DP)QBUF_*4Fsd`FGjLP%HBj<#AfNl_cn z`g9_6i|ZltD0d2mnagD+tW2-!Z=zh_|huC+m*j{1Dg9gPNai3tNl>^q{sukrAC0GgOR2G_bcr>?q=i5fYbATt5cW zD+A=iX~G|AlPznX6pXD}>!aND za+JYd&t6QEeUo{3wdUb%JmG#UPDZoWChM017A-dh;&`UN$&VoWLN@V}r4PK=P^ual zct1e;PV983J}*CQ5BG}0*2~u0`3uytoQXi&E4bb-&6M6svA#^(gAR^33=B|8z{1~b56E)%XHI=DIywA7WhRRGD?HpKB_iQBt<(eV+tHO zs7&St6^ajd+tWz6z?v*$KPtOLTu%%rhS@pq;gc?|JC!n4#r-|upTSlqX#{c{5MDt|Nh(N~x@?J}YVqc#TYMZW8aDk^t zweHi{-Y@G0a?Av{I=yv}3v6H5~OARFDyoTt_`}q576lQt|FoZ^Q#-WUCP*}Iv8cVe$_O%zi0CZ6@%I`e_c$7WD;V}=Ipxm zjdQZxBUzQmM5BW%xm00*gR>68D^}rh;*u_faHNG$;-0qcf0N#Jm|HrA%kH%4F<$I! zP>}=O9MVDBb2`COL|*!DIJqhC4?c?8gkNrGJu4F;BDD}V3IT1BM2p>_G%Xl5Vc&-f zYPwj>m}Inpz|dcOd3g5BF*|T;rFG|4GPGJrSt9~L(lm-X5swJhnhYgy%ZhFM&e7Ew z=plpDEIOOoouOYO=G+g`cb^*W4$ba#who zQ0)p?^*R^+7_OJi{;wSa^q?&*MQAMT-VxFq_MWN`jB*^zdc(S>%t!Vt!&K6a9=jd) zZed6|4IcC%dTy48o*ff6O9c3%ix=ocfjZH&Wv*eQNMEXg1ld<0D-%#j1m9wVKF3Bu zEZAc6|2=&NCb$|GjiRN0H7Oisg0P3C`r(WQrgYk<{bc%;&L;QFQ&mw2725?Y0G=yd z4o8-;Mp4L)_qDeYj@^=m9p>{&kJKp)w$A>;rci+Ox{3k0J3kABU4E`SMvqf8c4f^= z`XdD<`MDBABiUWdq7oUJ$a%A}ea%zY6rGSASno=j21E6->&?%L&Kanf!Sn-^7qBO+ zwB=Ut%ta03$!k)&HtM15@ExALy$Ru|)i6n*=A*+AJ>9%ObA&{d@%Ks1hW2_AA`(|J zkqKOtj{OiI`zQ$vo;$*My3Zv+iWn4ZoJ!|kBL~QX29V-R-9(x`MD=Nh6}G^%MqF<& z4k9g7O7U;I^so=ylrImaG8|2x3^jkFH1V$O9S%8SPLyAhj=66?cQ!!v^Au1)FgEkI z|5&{J2cse0e1G@D&f@mn-OoQhdG*tGiay1EdyoJ6S0nIfL+DSPkFWIb^bM=EbiU#- zx)e4>dn#V{a8fr$6Efou^>10qfst5Abm!tS(M{#mOx~uMfd6F9RMS7;-yT>}DgtD{ z2ZOHoguE!GgHR;HTEjr4%_)~gJFuv9!2k^6iaL?_!$|-gEhZ8SUF6*2cnDzaiDVq| zdlPoTL9iQ^R;q)_ARBb}X?PuR2fclCQ)XzcSJizwusNEkYq%ZVmtYrgMF1}y5n20$ zuMA3#7JdBG?Vhdc zEM8q}lgRZBAV`JWQc?wEX~Q4lx!TrYs=lR%ZOysut9>vvo=<{?=W7Ko>Fmq}fM!Y>RS3cDpdCNO4R-C&G}Id|(#lYzXTaE8VS zOC08qPWQkt?JBD5%$Cz@ny>9_u13emRxW7P1_C<0z$!Vt#u4_RSAqd z=toT#!4hufK$DBH2fvf&MO!=q-ReutBYbvQ4%34ID6fbhrd+aW=`m7>mFz(tOJyZ< zH7d8B+Y;mOjO7KOzQFGGK}3P*D)$&ftQIglGRTj(wKw@T!8WiZj>^c!&Rf6 zSjuLwav5elkpu}53*u7HuaO`n&o!vzWcm$5#PCLh4T`p6-!)#8)yno6i(qZ6$+T3# z64}e32uW^ml>2CGygR@N&>Dbs=6v3+1`{dQ*9Jot$>GKfA+`yVQSdfQFSu9diZn~E zLVQiN8%7JbTQ6C(p|w5j?G77jQ*nNNjHM-A zOi{?KmS-D4y~n0{NE1vN?HW^rXeh{b4h>(V!A`Pkn1*{wV9yR*iar59t&9dbeg&u} z?|=GvbAR{K?b{Fcxs}8M7DIp1E0ep91@l0%v%R=wk+TojRz$$u>{M@f#O@Lz%{7*;BtHcX*B6iRyKhC z!>nwmrKp~mK=Axp24_4{wjRPYPKED#=UD_;KN1}$9*)(xMQJg8O{o4%g5D^@pP+iN z5C^kELU1Lq#`_uw>69h^-BfEzXY}`WK+T(vywKAt9HQjA?~h5(m@~pOWJtqEDr8%~ zg{v~wdP_jGOuYd0OaKc&R@EDHFBqrP5mv#`wJ?Pwr9@`s1ak4Ij{ABh5jvI_a?xr) zc11$(O#|D}$qAy>;c0b$;F(*iB%&LE+Y{--K->CsLSXkO1hJyT)d*jHO8CSz>a)L6 z&f_CR&?CX2J*d?5(3Mt#-*G*9HoaP){m_CDt2J${;$<{TP)8)%4DkP~5BPQ74r|`a zx}dy8jC6`_tFsUKC!ju*_Ad*0xm>M@9dM0u=a99>+%L+aJ_(v_cx-J;0&r}}2tfeB!JtJ@cGNNG5Q zK68P3+NtDQeOJq=ygSUHxg>!`fV_1K$V^tsZB`W;Jl27}4W)7gi8vFUtb63?#T6C> zUB9Q#cYeD0Ur&Czdqc}Ef~yGFP{-*Xu;QiPNzIDBLbWPB@VJcF;j=DDg*dYQK~LCL z-SP$CT&%$s60K-kew&i4{4RR&A-v>rQVGb>tkn{ap~^r~23d1&8L>UzODz+rP9X)a zKR`bi{2lV~#4`DeD2#{b^{>e zWYZ2%Dllyu=V9SBM3V8dJu9~rZq0GePcAH$Sm)xwcU-k|oPl~T@6i+~6d6=btOiKK zW!OXIos&}q&d|uQn8Tb0o{m_@L*)rDiXj7VlfDV~Hdm-4w36w<)@4%y~$qj21tHPl570x^YmJGL3 zD5r-P<;!q-iK6&*VoW_wo%JIuHbxcgO(Gm(u2WbkFOR{4c~tl=hKUmgs(0`~pr zkybI$V$A~Pc`8|hbrRt5IE&@!v*}AYa{I&nUVq;W+gHz@r!wHXW^;x{iJ;k_QF80) zBOzm{nPG$o`?LX4D3RW5#KP6fp|+XT>kxhUjq2I)j~)@Ob=Oy(iWgD}J$|jDW2$*F zgKb}NNZ)^t-R5cL0YMxq^>Sx{z4k4PCDYDD;**RTPGu)t$mo9avvsBG5={$43&YQZ zGehemfy88geZD(7TpP$k!bgZoQ;Njo#^7q}*~Qi6m9<#g0_zmFIy%cYFvd;vA}!Cc zRS3>@8+p3Y-cV`v76U`Lw`;6u0QLRMggrm6%;sT%Td;i6v5d#t3^oSS>-m$^3eL~# ztmt^(_krRY1n=>B)tI))eGc+TR@rmiHZ$!$d>etK^i+Uauo0Q!h_0? zD_Etm7cY&t`hiUYp$ z?s4ynzrOpThd<1zW)+zgx>fIC*pd|3RkWM0Nhpxr#B)s2?brHX&KjNzj{>#*@}TmZ z=iom@Q%Me<$v}NxiaBBJ&Zf(+hG{sY9uxvbhNqf@P$7h1?M*`V{`_=r_hA2EZ~tho zKiE6i-@8Rg?>z)T+f&>e$S}sW(LDsWNs&=}{1TxjShjYZsR||&0bRSL!o3RH+a-j4 zB65Md>y>R9hHTSd)|Px}C^#QIOQKK@rMlAJR$EXG4hi1ymnXrym!uokS_xJDazWs22yV>mQ{NwiK z@1T11sc^$vK0{Vdw`l8@vPGFLOLM=X`7hn}PlPFLo#c2F&I@w%ZK=p$s)yhp)i}3T!tH0lV_oR38`tFA}x8Lpb*`@)- zf7h&<4ymh1ug+Dliiz!PA7lt9ITc3znhFUw6G;1M~0AqFGgk$@L_N!KX2dd<2Ow0J47>_rrR+jI0F|6;)FzuX~QEr&yJ8hn6(eB7<(fR_)CTs8-YS z#rh@f{vHk%Q;nw=)(D%nne!2@v^qMfRRmDls7&)ahG<#9w?=qNL8g{$)CpGspw*c| ziC(}HL1|$Ee8xL_Y&Cj!|NZNmA1wJ^cBHwIUC~KIyn~d`ur)Wl^Jv8sqF7CXL^TgI zNL8*H9Nr9h*wAiCP%6)g({q0h-BfGX>A5c8Cc1D;ONR&`vt)HhZA^}>5?z!n%O@1M zP1`Pc)CX?H~?`&o68s{dq=TkWF5v0XRbLS>|}B!0|y42>q^VPuNtMSw6kL~ zk=03QG!`@y$Z!}+s=GLq?&y`UQ;CRMb*K%MQ+$UMMW^LJbY$_lF1lJDAsPX>=cIEKs*8RY*ebEn395PNVP!&i-SrWMo!xl zjNAiLO@I4TVbwUnXKzWg?ST5;(8)X-5546HSI?-ve+lcMp(V(2;UZga3v?Ilr&Ad& zEI$b%Qu{BF;{I|c{h{FQa)C00aTpqZUiUn+WBZ_UQMFGFW6`Eh4nm#nm+H6%sZB}& z&=i?g#t%%RPK*Ya7VQ$S4*Vv;m9P8Na%+C*A+eQJ|BUHFNUPd(Biq7)e8}|{Ykd6j z3V#{{VX%trEYXr=FQ>RyQ7NBWMohMeQb)Vn90NxIY&FE+$Y4})R)&sX*72cYH42$| zx)s&2Obwu{TNG01$;fN0RS%L{g19n>l z=pK;B5^`Y>C+Pdbg54CP5rKz@$&JptTi$%}ya@KAa`t?4LM{u|zi*NK{8b5XqhrMCbXwQFP`PI! zNC0hE*S%i(R*>hJSq$E;G_3Y11x~_#6ZQnSn>sXXdSCR1e;)q1k63K9_vnoFoanCt$#;jax(OT^;>uFA>@r{2U#0mBWMxFo`C=?bL^j3HkJFNJhs zO-y0H_?wtA{d`ho{sUrmDLE2<3sp+qpxxw~SGOH+1hf2|-PIooOz27{?-|dZgj{A){?*HaF{%&u~b3ACw@c?t=LG>ea z=++FYrZ`YasKgyV@NQZ_P{DHmb=alBZi|cn`3lr7Z`I%l@}`EG0dnFE{z0)2fE_SrEryxG;NN7Dwu<5 zv`MAIjc~WN(R-pY7PVD5iw+2|A&YF=%B3<`yArra2?f~iG&=4};#AkXnBvWW*+VuiE z)({0*{>zir88E`{h8|w5H;uppz*>O^)G$u2E>H*#F=peJV}$pN&m>Wy{HUE`%V#u$ z7##0jMJZoU>yG1%{2$7(E zwxYC+SUNDuuOsw$ot<=kQW`*^Nj?X=`5fpkpZG92e7B9$OR@@zlvrfu&p|abCuk3_ z^1q?ZKVy_NJnLMy70tu`1LQKvPYoV(4WSwV8TGQ+ZWgG1bF(>zPkX~&YE1K_<%`AR zmeUvTdoZ93Hx!3wI&NETZUd#kZY_!qR}hpUU{Q{X%kcomplkod&bKiG!ftBY(g%E< zz7Ov}7#+_*t8LJ;M%N%zlXGL*U~`J2l9mS5XGmaDDGTd&%K^SRWYQ$0l*eZv^`kWc zgzT`E+n(vmwX0n??d9qoP#6i?uU5WVnkrIX)-)$BP)Or$F_%ubHkNJY7#DHYOH3H) z?RhP16~s26@ELEWy{Nlb)FEm`v62)K4XY!It8?wHnR@`ApXCH0yXi%pg7tkbPVgFs5SBF_H8}kJB(SP<_$_TfbfrywcNZ7j$;s1Tj+eOgEqU_5a~U?1?V4Ms_)MHEh;b&SP)@aLW@CZc zm>(J_O5?M(Q&u=tty03koA2)4{4iTS$6VVt-G~m42v(ndk&F5w;8frWk~V%muHbT6xxOl?Co0jxK+-E76$&wQnA6#b*Xdsv57 z=`tZs&iU@h1*}rOg9?-bEYKLK`?lVmS@s^Ikn3{t?#%~vbn-+3=d5uW~Ib4 z@Z$e6_ioLNTt~KW{}gnYk}j1&SK^VLEIPRk`c7ckaAjuzRJ|gWOFXA0HmackkbSgXkeV3Y5-VOKq8; z2{O^R2&s&&RMja>eEtLo1c-$0w)YnTK{3Frt)uClQZn7R=1msS*V5;Nk~y0X@-Gae z^KnwlEZrcY2FWB^k_b@-!dwCcL1qmQ+)Q!vD21IC9}L$)S~(Dh+t zjz_u(y)J*|TZ-~-7X-V&xN3tU<(v2ScORedCQqC1?!SMB_(&*`Bsi1#E*Rw2tmyYw&2HShro;t`1WM4h-r-bZE%wV%4m0T3 zidtF4IZ}oMFiv9y*Q+wndqr5Gr{1B1fd~`ae-&#;)r@nh01J2Fc4a6uCOpme2XXe;s!A6UU+cJT`mjH4pWO69E+QaFnA*^u5 z<6W!GT$02ra;56YE^zU36Sty*vSiZ{%KTvKK~gBGF#1J@GJw>$+qH8z?oS-)#fUo| z5r~|#CbP*9%>g$a3z)VmBS2Q|EUP{2U(!?(iW6#(0o<%h~8u?IQ}5E|wGH7t{r@>%<_i%W$e}q4S-9FP=c8{jR z!Dr45(`hg@(~dsD36z%6qAe5$g&Z290>9Xm5w3G%fPXa?k`oAN71aN=^iTh-fC)5h zLOJB?$JOKAxAzwxe){wz@&Q|_6V9%{dOq3hklRM-@!FN8BG9>Q>jCz`VLBMj>TJGb zMj${#%?-iC)I>;Hr(PN5Lj1sDww`Masxt+`Yx||XqtEPjPxXbFM3Y}6!GXAWu5avk zP&)aRpxm3)5mpEfgAGeeK12*+43;0tV+PABiXm2NCUN+NYs;~uZPIUy(@Z*Dir$nd z&!amG#8YvETdCORekIK|VR}kKW-pMqg!s_XxQ+_0NxbnacxvhV2YRlTFHCR8W&$YB zI9ZRuy<7`mNdQH13<{qh%O8I>Vq zb#O4yl6LXLtQ;*?UV0+bD7^H4eEYY%M+mx`-m8c2zyEmu^zgmp4m|5^^0xTWlJeSl z&ASSr>h5xR@es*n?6lhJ0u{SQB1A(pr?iMIVgYmHgmrODo!Q_*W0DQB1L|Yd*aMSI z4z8(A8kEsEnknU4y$D(cnm{szvW0^>_Bs#wCS_U!(`P$%n^dkVX$9~N2sE4 ziTV$W3v;yyZqIIrbVrO+ub{-^Nh|2)$JwdNflIEwiK{#G=f$p3&5A=K*iphlS-dvF zld*ICy*hY9dD|XrRydpx#e4%%qLw=PX2+e4XwEu4-IFCZ9cg9~foUYeR-)dvL0T4m zmYdQL-GEb;-=gaM2<5~7e2Lw|T>x}Fag=J-V%c;8l@JZ>5c%Q8OCrD5@DwV*!^idC ztGP@AWY4$oc8oqBs8w}Axx~wbR)odyiy1f@-R8Ig^OR%Od^lvf$r*B8U;#p9%_4e! zfO^m#H+tlCTl%Swda12gG2xTHuYXz~(~ztl`v_`Ebw1FA#;U`%4b#n7D#g|?q&$%dz(HAG~lUVZxGT^b^|{GK}wmY zIYbw8?jX%$H%~0ptyroWrr}xIt?V8lP88a%2fS`Ee1I#9#2`cI4B(M!1xcEdl)-eACh&AUx(xSO(0)!{`}`}}vY2&RRz>G0dCU<3A$o?L}p-<9kE zxc(&*`YoLwAB#ZgKOG()9vlz*!@Z+}!LYx7c>hPJJIzuG&%0boOC5syOG{mlWi&(| z53VXvvjNf8eosG^+;9K`@38b zfO{6tuTY9Ur*_lf$bx$t>QY3Bv0`ivJ41Xq27i>2O=Q-pau`jdf1uJ-Q zj+Jx*Ex1aRwrY@s_=}yOcn#l(jhcS} z)lzEnQ+8cIQ_=?W+$0&8WGrtt0?IJM9}4EnrB&3622>JcB&=IaYJctF!c4uS;}k7C z-Glh49_O+H1E?EMk^(+R|S;!ipkB^k{i z&Hx%1t)yyEEz*&0;u7lZ=my>4OZ=(;1=2#)wDyPa$1MwMP;aAoa|;BxMt!J9r69NS>GjnGXsV_cu7^b0;UsJd zN3!g~f3JU92;zjat@(NKkvT5s_Zkyuvjpi5>HtK#k?#pcMT5s>`*TO`T?XnVChyWm zkK`|UxeYT^LXX>)J5S-mh`cOz@_6wUVT7HmkskO0Vsmf}A0{U3vOB~V_C;1)YYm4{7lf0(gX<-%(%Az^lu66f7(DHjqj zqCu2=w^8DtQK=Pj(VmyC&QC5xbe*a)Vfm~41vn8p-)ye5Z>D`7BWIUXHY&|ctMH51eC2nB= z)ybhcC=H4$4Xyh$jR9pnLVhyOC-m~vTvjxoU9BrpS)SK>`-{xsLBihk*gaB|2_GhA zSD1>c`1;H&np$cJ@%0NF!#p3BQ6?3Jfl1UhP@bTb;}Acv!|dA!!D^h+a6a{-jbwnj z9Z>fOTf36tnPHSh(NKsQ1n=VdFO%^K!5dyT(@IUY&SJ;iJ^o1LFB5TA^=t&zSv&&f zo01|vB(^S$t2w^iUZnyR)9U1fk)K3<${a~5XW@FV-5r{zzxsDLvA;A+HQm{%o0noo z5Z^eRATXZY;g<9K&a!KY%<@++F{JvukS?TQtGxt$W^}543#P!saRyd^k63&bKS*J9 zU^sjZk0nSt;Mi7Uw-=9*6hDzJ}} z%;_<8u(CSky&e2B$6b~T^xQoh($>n4>gDfEdRoY_VeW%W&`JudVLso;^#USH9SOMC zNb|7|#^e6B{0Rf;22pQ{rfDpcGRcmb2`X8tNM#a~BslQu3I0K@2sFm9EC9PPjd=f) z6A8)nDU;8m2(uUdNr&2lw1NPAj!GI^Oe58X3TC%-+g0#UiuEA|f(0eNLbh^NP|XkV zfDRlBZ%&s4LvKJE2n1I7TMU=Hyf$2_k~sYc-QG-KeFK;Y9(;}H??n^eC2I}dt*EV zI)iXk3tD@yjn*E3)?zm@#s$}wrjY`dy1=-K6zXyXr`F}@EmXbyQ%2g;DGD0*aaZ^2 z!)QAYrZ)j>xHB;9l(Q94G7>9DYb?L;;1fh^uoP@zL|66lPm_Rvag6Xm`?t|@S*U)b z{tW-RLO8CWBHsrs^D%S$6gY*jD;}pJPDdZh(Ea;p=3`x#d?GY ztVL!XXR&PqY(T<3aB(_@VF6J+H=Ep$JK0;EcGQDx2U4AbGROa1ZOpKf8a!7p4X?Bk zmp4HGk~feo{qUJwPBo31OprWtMJL+h-N$=5)uiz-`VSUU0~-)uU1Sutkg^5Ko3CNP zw2fDok-BW5`Wo>u6*Hx+Cc>zdl8&=sxTQS3*IXHDO!dK>II^W=b+_;67@r(i@uT5xs-lglx)x9{>ceuXS-&}V3f_dKGp^(8+ zKvdY?DD&i~4ynvJ5XvWcNOd_vpomMGLdEK+lv6?V4txV>ZrFMw2!}tTjNt6&`^VEq zG}~=?yA#AUUUq=L7!RhEUI^R(mL`xM645a`47B+Yu_UnEF(>SsPw(D8z5B2Uc+Up( ze1r+hVPP}_5?QAsX+|k-RQIWoo~D3QQ5$^W^mev5^&F6HV9=QcFE4hgNKFHbt6~Ke zwUb$#FJhKkBY3Tl2kce^?Uhf zwdk8~E`n}qD{QDa3eWLf$8*uCaIaS#>1#4gi!P+Wexx(vyL?wF1R~q#oj}yUVs{e2 z3+~j(6d1;FJajGWwNf~Qaxj?Zm6!p-TBQ_GD37B}6;XD}Zu|taW7vk=N zh2Wcf?Tmti83|L|2=f@iWZ&_?T zJutQj@Q&vC4ucK(a-k8^#qs4GU-!RG12Fy1-fW9bCz9#%&zd0B63vWqey{js7C$%Hr)siidqcufb%x`Hc%jm z?>)7c(1yg%FG{&;&S`9*v=|U}N&OdU)qW~4WzVm`Z$)CvfyIg?KD$)v|6i6-{BC8vHY(6W#37h35m(UTWT7 z#=kEjab2yM6mg;{f?#z5%Lz-KXeaYn`FG1P-VL?YhXZ7)stM3@QG-g7azPaD&{-Q; zf@lR4kLk;jws=$GP9e#Zr%S}EQ0nC36m49Qo&oho^#oKFACk-!dL3=egm54qyK}M@T9qP8rB++?7nFjY_Xa$bvqkH#@u=C zETAK?n%GU3C^T>Z`kJ;^oX{w>M@==jb|vds`0>QLH^hNP*M`_Wv-5*Sd;yphjNcLl z&+Hgp4Gy@<5Ijl|Sn>nw*yJg91iCI6M?&qyvL{yq6UYq=5ft=um1=zqR*N%fCiN-Z zBg+D6V=<(d;JL{SkT$raX9TF-p2~OwI)tCPksx0q_;UHRH|~rG_6lNT0$KtB=G{lb zk{fnJ_e^L|OqNE3f6}P@SkE#V0T&Po-_Z`)Yo17>QkVpSJc{2*XE)W}#Y#+?rqsko z7aes*Tsrb!t24-?;Tz|3NWB256Wjfw_vc=|wF6ivqIkd;s>uvKpYMR@wC-wEPq8Af zGj`m&0(U$izXdCS;2yjagvt;Y$`=A&#u^}m5NqH@G6pKshIu-^LaB=nci+6fA1_e* zxOwjJ;inLuSc~8S>COkc`}@c85U}ulBp1bBpaim!!XZSH3K}SCh3M~!m>(uV2qp~D zY|Wv*BU-FxW+fz{EH6#vE$i{b&I+uHBwQEP6;$IZ<6Aqx)wA#tum-eZPWT)LX?RB4 zQGvqJjY-6XF%u_|C|GT z!~YG_RM{msH|Hqh%@07CvRTLWts%HU^hBNz9ab@A$Q?Ad+HdW6&|_+JE(fZZA480_ zJJOM;JM=S{wOXE{Ah?*;PB=)Db#vmCwy4D=O^_&I=9=?03}T}9jdT7+p-&a*AD`rT3Pv(E)?}}Hj9~=}YR@iDX`70_ zezE+(Bop8t$bYTuFU2%=K<#s_Bogcg`gluR=$j9VJ9IJ|qdfMGkz^e%FQC}QR)K@P zSNyJ-d|NIKCVw~SIi zI*yl?R?Psb-s8Nm1d3tGOYAG~Q_1QjyJj|aybIP&ap+AuPy0M5c3Dd!C(lVXjY5Un z2I<|%JIU5(S17X8t@c&g9R`yWadZj zq>u}!x70p!rJ?Gl(^mvNP>FdIe5W3X^PO5U&L2a37d=5V`1Yuy2Jn@< z3(FOPMWKr^v)Dv(P9s!2RC@vKG8`m}vb3;)>Wgr?IkPUNR3Kp>-bryRG&b)+Rcjn; zxx8ffXJnv^malz?A}ah8v8F*lj?7NnI_+-U(8~wcfOB-TnK=rZMo%CA6^5S@3#H8m;0!D5ncWx1OrqnmVbTdzt z?Y1W?`nmv-FeDp%M~+y6#e0fSz*ITeSV#iP&Ia+$FpYLMB56rkvi3CXsG&31pe3Ba za#K~FV#N^r@817Q#i(e*;}s+%O~c+^+pvdIi3O|u?sC0smMbQA$S|Kx3Hz|Wr1)7U zbH4s0BHMuP zMy-<;wMd2K;##Vd73+}`$;={G$bz9G-%Db^z5Lo}M+q*Wm@mx2;B+em?SSH%z<#1b zMSCmsr;EQ1UgH`1=kXWo$E#K2^|_ApyE1*LVSU0j84lqmLkpvV>F(@cYG8B+VLzR` zVF(OdH7w#o{A6wb$8(|a=z@E1Nv5!<=`TM#f6N%PDm*&3e+zWMT=`470OjdBfZ>Cem9*2r696 zuxz@iWFCt#D`N(=oDqsFG07E7*Rfo|Q~-VEz%co;+k-PUw->a)hGE$cG}RyNx{4~bKkWKgiy%86LN+YN^ zg4|?|&WAz++e)xLJkuN{Lv_<;W6oN-X+m{LVS~Z8a6^kVrYt};#I#|z*2nz2Bv6R# zj!dy4j1ulot7w)6NH4_Cc3XEe4?AS7-&p1d=H50=H*pz~8>F>&@X$lCQQxI3I5WCf zfSlZbR==LSjYs9c@%9isg)EMXc103c&vgY#-z9y>ix>B7eftdMv}(q2R&J ztJi95%My}wxP&A9S^1!QKvK#eP9ca}`%-7whCBv zpTBGO0Qn9q^$69>8AlcArt%og%*+wW}AnnBr@x)vJ>88+ z3xB+~U`NX6K%q{(KEZSYZYS$gzP!QOUq%sebiCtBgaN0tUzF!{4>}d7aa>%Z0hh5= zDt9Sm*ox;Y6@oAyq5FekqpXhU+LWWk<}YJV<$B|aQ98t4)|zpe`XC1g%u;2sgO*;{vSSgTURKcl1 zzMp61KEN)lav%rM?_tQmQR%hZJzGL=2K&_OaW_l8-jW&F2`?hV;KwwYYY}3IJ)ekR z;kwP@Gix3tk`!_Wii6p%87N}Ozg@ySzYRZ3+>5YYKk39MunlKnxh^d=FVPlwm8lC7 z{IH9`*KneROO)~psAikEiLhsDe=-QJ;ix)zm28#2Xreqg`tKMv4=hlPuZ6-0bdx&% zyJ5wQ2N|k&7VnM>rkq1TqeYoX<^nA)v5X%|2(kk}0+hHA2U-OXed}imV^Nf~<^8(E zwk`*7)2Zf>`$-mG-c}~`^1MFEc6HzrGJIMexNpjl-~82@1wpp&B`s+`31|8?~V+?Ru1HeK}ClI5Z|WYqoI zdmCQZxm|H3xAG0b1}G(RU{z;qD!^&sL4*lV_MkQ7517+?oo6NINy^=4c6jy@bl2f) z4AS(Al!gz=wsNDP$d<+@d78IZQP8Da0x*M%6`K5jodMZVM@rZp=F$qHw=$u2e__>R zQv6#!A=EAHIYk&vn0Vv`uY$%x6BsZY&OIc32Iv7^Z!WE>I7Kh>;O+sh7?80Up;ymLRenncw?O{B*w-nI$%WpE(RF}b z=ddM#;5F%y#UR zjvXZ=KBe3RuXU`GUXl1>EP`WIon3yTH@4tQZ$ks3Gqri z@i|#7(-Dl4J3JV%ulw#=(M`qR0K-!G=U#s+cueqMD;Vt@|J)mH1y2ax+X_A>cz-K+ zO7H=}<}wh6-YPY9Kwo`kvznDC3S>sa_<-YDpoB+meNZ|k7*8} zk+W$b_j9@{IZl{P@S+sRutnTpSK?ImMs(zH0zX(ECp?choc78CJ&N*-?kJ`4WW9V# zflaDiK219$LE;d2_u&@lTxR$RSbDuJHq5t6+v|;rxN!Td7uTRCh2e=ULO(n_-ambM z`~bAY_dx#vQJ!8w+^>9C1t16@5PH&(j0!-7`?;?T}Ue%>X=Tuq}n+hjy4zIESHJNsa*^lcE!FzRwVC5HgN0K^7 z_bZsVHOmZ6$%M>_JP#zN zv1hN5a@ldV@I`(LF(pid@fUG4yB=r6&`f+>xNRajP3D%gcWH%5raQ?sb(QL7G5K-_iIdL03 z*KH$%F(D;xvWBJ{e>M&&!B+Foa-PYWj5e}aXE$4KEo7BmQcw7Edj zI`4j2P(0oN>O@YXD&=kJ*IB7Kr_&6*l6Zyb!z7y^Z88a?)DW4C&?(iyYQ=!I!1{JD zd`uL=07eYJwInzmz4~eOnTETfvaq@pduR$hVTKa4_ffUN-3%j4uuuL5siTv5Iu>;? zNeQ8g`QsaWrh;M842`?Tw_r}0C~QFaMoTuYHLWUI#9G=F)$m+5RA4`drJ+<4rfHI$ z3rID&UBhfw9c6N9Spj>UPBZ2Uz=9+J0~7&x2pmEGfM4UpwDG!07E^H3Gvi0t6ke|= zq!z*SOu9Td9q1`!RpfkIgpZ^Jw>QPcKq~D3ZrC*55}AGXWw^$R7!Vf_3y%{nfWb?T zQdqPn7R4Fz$y9_Hlx*{QvFY@ysFsfd^(d>Y>Yn~)Fmx2Ky}We3&Xv19J-=~TGY++M z+*D{lj+^5@yYZop3=Lr8D>Kp?eKsc@b@Wm|Xu@<83SUtsHRd)?YCvo#IS5`Emw?~M z*p?6V37OjSeb2Vp*^G)5PWghYoEce3Ea_@Iqsa;=7c;W&uNVBR7-6p&xr2yALJe;^ zQjp{*QY`~E$PDmNYUj~D(rf!ihpsPLf-SbCw)w!kE}dSS8n#6M>6SiZ<|M_m@YJ%s z0;*l>$;Vsh5$H<=3ahs@+Kl;ejB$&&!}0=B1i+M`YD(qUEGL{WT_DPeK$aqFzOElo z4$u|+FgiJy$`8dwdyj<9h;biG3G5^LM*UrzP~EDKG(8#1Bu(i~m?%|*w!#+u{T%KL z0oYq&>ydX{=d8gz|T?7u+wYu$d{c4Lu@18irk4riHIyeLA2;=R|r(d ziOufZ4tjplWd=p~o3dw2h&mZvBV~$#58UcUyGUsuH;L#&uNLSDzj(uah&NFb*nrl5 zZu-|Rdp?-@{$~1D7Of=12hUv1=1o>-M57f8oOvCwnlVs_+kcaPI1V1_B^e*oJxp65 z&#Y_cIXnO#@#20XX1(x+BVo#5nhwjbMePODVyNA1ZuHoCSyfY^QBDDqW=_#1T(D)_ zOa;(4lJM|R5-g#%;BRA}c8$=bRh%SH0P&JQ_A=UERn_n=R@iMe?jtGMY!B}I;QJIn zyDfw=I2hrnU82#|WO4;BxUMP$vnJdwRCL7{8Dc=;`Rr10UM7q>VtLKVMYFJFl>1YW zRMfmw`AZ*Vvs5s(v|X_c*ahI}$DbbWe^6BmY)^9etMw&5jK*8Y(yn<*bM6301|3iF zxmQp;U~q_vo5j~Qz!rJ!kQ_r!8q2X%Y?{ixnXXitW4^R z;Ln>@p0zE*uu@@h!cz5j!`c=0bLwEJiXv6vF3oti)QrW!p>|p0J(vtBAmwARFRcvl zbH3Q^6~6@|;w(*d7}%bTOqU9xnM#RJ`vXLbBL(Ws_xF#L*Ve@k_&u9!w}j|s#*{4j zC8RA$ZNP1Q1f&&4qoY!ZA2GhSe-JPp!3mYa2K3=B=J3KjQxSpTs1{Tv7vVr(zByT* zZf@CA6;@>Hc?NBxe~ftwWl~cB;T=g4Mhj8|ehJa%2$^SypydCP!pG{5_#P^Cv_>Gj zV*w__Andl**BYSv`n-9}C7GRXw*sJn$+oRBl3Pni5|Gsrvr=TeBwH;=Q;=ajT8z(o zhp!ap+i0v46lOatx#VQ1E{SRQ>IBg110B4N%H%R46OL4Aem55vm)c^f)pC-sWtjF8 z)tP*r>TP9fbyI7fu7>45KCa$<`*#)#zBoY-oNEggVs5ko4=<)OY)g0yM=K+Xc)cFl z7`<{s1%wnz9<)-7*q6EEv?qGpKi%Aa`}Dw~ikA5iCos1}m$GuaO=f%!(7$_tu-}4H zFE2sX2lB%rzfD#te4V`zBShg~8xEo94EJ5nF{d+Upo|pC1(2JG2F3p0>vV<{Mg^Lg zK!#Uan^=)XbIGt!GCqWVE0>Hy!HgUN)LoHB8T-XB+!W>?s~wK&9e)-l(Ct^_zIE2WzwD0b9Z`6s zddL0W{Eq*!JEnI$XuRVA-jN&Cx6mO-1&iE834;{10xio7NYLuf*Jg0^ApP>Z=sL+W zsY8$kl8F@a6(<+>-`=ByvtU_5A_-*hq)gy1^Q7pK(kq9jr47CBU!rsRs6Se;C1k^W zyuZmEDaeqquaZ5gGbTFdldPR#Sk|diAV_j`0mB0FvLJ$zaj5Gj*+1g`Fj=EZHqape z?51cq3EM*1*EI2{6=Y`?d}Llx$v-;>XufF#jjW+TLujdC8qNuWjXF%#MIR*9&1HGE z3&gwCi%_tsE-*ffDf+mku1aFhLTSDU#U%R+=TPZr+A^eg)%x;bW$Ns@TIQ%qqCD6u zB}&+9#OUB$++~Bw;cj)yCM>^+6fJmb=Wy80z&nd$B>p6TJz6Z=O_s1d$GW&WT8geT zdvZkmAjtR7>!8qxm%E)^pR4l$)kWOFC^v^{IoG3;%ZYY0WlNrO(+t9#%pxZWwSX+wANwv;5r;P?Q2i9ZxALA%mssE(8%J%<`Gb`|_x zTOE@LtY?s9%i2R#Z3$2NN*_HqSTix542|t1A*QOUWMq}bf#-~31a@+Nf^SP%rJX|t z8p7I=2xXa(VUi4#1iyyp6~lr!;9jJ~kw3H*;~<^YM&x{h1ogcE4Yh#F*TS%%P8&OC zjt$YX$qn;aFJY@iD4@<-` zPA^kV(avJ5P+Y+qu__xkRhb?mli>!o1S=r|JA-kn5|^4?4Yh&l0X{vQk=R?}vz3!k zd0&dT1evNpB84e2mSS+^#g@xOvK%?JX^dVC$>QU;patv!eL1^TqIh{C6OJUWw1m5E zc_o~Oheq_0kxQZowge5m9;C~~^6v62R?~oxR9l`yqeKl(mL+RwbZwmi4d=DY?emf~ z-i%d&44dAk4<9YTmNoPxCZ;Nl#cUP;O<{A@<<>05x8b@BDS3#|r+CB2FpfvCg>7c6 z6@yes9Pp!L&0%RKN8B&Hk+d>{8<+!(9+({J6D}ED1CU2>x-5Y*g)R;b86U@w`^#*K z+$8*$`GR|~e96t#F+?8(6%&hym8JJ7WwJUQZUA)wx!q*G2c}}hC@Zqm0v4A**2SBx z=ULR%p$J1R_l94n-{pIoW2Rn;e^isAGU8FcbT?+0gK{#B0V~BvQfCC`0LtZeG;rv8YiPOiIEE(|8NTo3d-ifaa`ST_bxrPa+QWbV(8^+aU~a z5%jFsv^DG)`YdklCWQe@EXhd+*j|J*P6)!#KP_J}@ptt?k7H8ev+dJ6ZJ09%s4*SFY{a5`1wexVl;pm%($EVqc$>Zb0qX;@) z3nJ&qM6(kIzU=%Q<{KC0pEB>T3yilyFDJ8bMFOq&*e!Wm5?{C31GE&tA}kr)$3QPO zoYhq4;O7dad5)$+^T&4&kMExTarXG|>8E!ee(1Sh7&Y>mpq#vYdwqI4ktU)jTpem6 z%+rfEQc&OV0fYLEkIXJ0Z?Ne8>a$`r*xk=CR`G$0l~=Nl)>8DA%d#^b&5_hKSzvQQ znyAbS?6#OW6QZidj)D}I%@l*Ymz6{#!%e0CU_NpgU&P~mZ7_x~>2Ba@tk_XfkMg`` zFg66TcCO|}RcKiQq~WqK?3Ef1raH7C+`Iy5H6a2|;mlgDPjV(nj@9FOS0nV4cTXQ5 zK0SVW&$%OA#8N0@FMey4XtxCEP`ZqJih6(e!ZK!Pu<4*9opDtqn!3RSLebOxk7Fd; zjkz!N9sGv2CD_hZGdbW)Qdq6x;$kubs!JLKs$8fB$R}TB2j8C&*ic48hG^v)ybWkP@2-Q7AkE2qo%l50BkzQLOgUG z=80T^qCTgait>(NxzLwjZ#H;Hi!%3GXLKL&ZE*G9{q1)kWyEAkvFC{LV;2H5gJA3V zBol@b+k}_ZO46`Yd}i@xifEV3=wt>JV0Dg^$#WE>4owieVEu{&y67E-mSnLEo;cMp zATI^#(@an%sa`lCnM3kWusg%Ly^0jn80qv^CvBPgz4AblrC=+1TbC%31#2mu(c4KU z5pgsfAyAS+9RPns1~W?Xfi(d6psm4h#oDN@ELSI6Z1%9VS`q;=?H;4<45b{}kwm@y zgkF=Y)M==v@biOdm2VWJcHTST~#0f@=L5f8KrUJE=>VdG-*L9JK?xahCl@JLBic& zxc!2oes#%8Vy71{3~Y?uGlCys45AbETN5BTxX8abXZ*ERkWw<@;P6?Dh9k=&zv6HC z7x30JcAyUgf+o>t6m3{0r#-dU!IF>1)?G(Gp&_}qctFo@UA^5FRQWlDe##X~WU7b( z`%(lDn|Y0(Y&hHKjzdBhlg(2AS>3p8U_EKsyx1>7k~N$KOyN*a3$3`PXi!$4#OI#g ze~&juc&n%^bv)**Epa1?dzUAp@$02UZ*W9%C@{E{p%q>Fq6MD9iMopJb;cpm95Vdi?lw zdH>;ur@x^n<%&Um2>kt+Hpd#+a|tIL%3}e{ie^*9xte$f=Qo}%ty&H~Xg znwsNJtg0Vv7T#pb6lcaW_VQ0%=@Az5xhx$<@%)@D^qK-9l)UlFlmg(geF@P}ao(tX zc+iZ>O-skGfsi*-*~`dT1ue5KAG+WHV@GArmof7IWqm zvW}ISFhpsP^=KLjdDgU(VOW6Fd6+_jJ8Q#tTe(sUdC^{J>p);KcSh*v8yQ()UR5c^ z1}x#?80DY9e_WxLu(L9*1jDSZbfN$J16?ey4G^1wK|?XJ4fgM6>0jAbWGRgjA%+gqDj!BHh6x1m~U z%CM`?^Sf{V&KmqmBW$1Y>3LQu;G=Mfy zQlcOzU7@dDt*aDx=zb0A+o$*6eEI>>4;!`IU>0UDm`o^>;C3b&sIYhBg-1TP2L+ff z!s(O>RYgwZ`V=B&;|*$<-q-0GNh9B!4|Zz4VH{C(esdzn9p9k_mRDrCq@&PDB3u;K zur-17jMKGnj9NfmE)2@TA)?a~&86`%0ZbWTetTdyptSq~#^pNmg@VYTe$)fn^g2T~3 zb1g@y`+%*%a6uqDC-v66)=A{O#TQdk|;JEV>By_;TBY;crS8?jVZGupfJF1zSHRp5f7yo8Z%) zURWtCKTC0HDHENMKcD&`Ed!`z4V}a{yPGm>Aquc?!!d$ejW$01?aK~fY?CaR9FMVX ziZuqdX8z8#A$d+c{whtcWC*Fop|}2t2pnB)Zcz5Cv|GdeR0Z}Fn9u~7H9~|!LIWA{ z{`P*=`=NMSa*s)m9&ao`%giorhyg+_kv_T_kFY19&102Qi*XiosetOgVF7euG6iQi ziDWrg>Y|W0EvN!%0YDCNGN-7KC{YYfFbz(XM3xhjm0@LVoF+}C42NZc!7q#f_$f+} zSvNvJ;nX#%`pd!?*EY|qU5nVq$>L&uzBw@omQ-giys)q@(4V+?bF!X7LE13I_$~GV z{B97up1#=qygwT4^Zy{Th%7}ye4!8&YutcfY~7%aZw4<|TP}FcD|Ez};&VYTfZ%*` zDZCVq?;emdichA`W)x?ztyovj`N8h-A=r&crHlv6QmG%w_=H4<0SzALb&>@@3!;G} ztFSH1uX`RJe*E#_L#bxic~dl+bA=fw4c#4Jy?o>`;xA;pz%{Q@Vf?@Ur^DmJgJZb8 z_Kpq)!~Xu^{U3+BN0$svgAWJcTp)i|B{;%}(-Ahj4eXvlO|NM{OJH6hHSWp(CNA;O~Wf-IIP+#E|{DfXZ#sn{?It?)gg+|k7~ z5(KJH0(OS}ObL3ngnXr@OK?kXkh$#)Ohie`rSjd|c3Nsh>~;nQsBa zy3tUXeEdWvgH+gQE>awOsj$!Im4RpE=4Q5y3@#J)9&fxNdVtCX=eQ^44i0x0CEWDh zhHJg$g}~&jQCydOTUHATP8fO#pu-UHTwyFW7Km;WDl}ot2dX!N&(O4hf7GqbHw+d^ z-|*q?-fDKp-DhLmvc^rG+G!0Wh2}#|us-5sX#wXcY=zIjBe-h79(9PA+1AO2Q_+|3 zPlb)iIyFK=(Zf1CREvuxoz9hNLV}_fF`K%6@|+IceAo&*>}go5aJZ2KFKUx~pQW=u z!L(fVjV!Hz87>bB{Npsnhf;9%ZI;_-3IQ?+E zZ#%5&Vd)NPFAVElQL2?kno-HpBpr42nBufcO6PWWrI4hS5D%f=a&S3WJgcD)n|-Z&6sh zPfQ>aDo261p<#A9bVRKDd2QO!1&&bKIea4ICde zD`w!N@RJ;Br)_hS9A+;`+)2%u@K9^1Pzo<_iqwZ%bzydNvguZf6ve0S;1*&vs|oVU z-fnKE^zTuj_c&qa+mVHl_JU&qK246KRNl>3wV*U9Xk|-1)kqRDmvkS3r#_XOgmh&x zAJV*xg|ZB`;#ePRwpZKf`@F-RyOSolRVjJj~UnpT+_NW3Zbi@O$Ppn(# zk~S9m@^p$X2^H!urCiV}^s^>R1^GZBC)dlyc94c=0N)3okVAN`%Qia2tvjHvqPrqp z=u9m@ON-5Ze?XsKL4N3d3hIlf4g{thR?dJXOs_+lYe{)1d_Jv;P&7aqu6uZ6$=%L! zHfk&>vplUJqAL4aX3-dGDS3%Ndo-n2NRJ~Cu#$v^FhCiEyI-%Sg8mT13t8eG7Ehs_6mKHhay9^;Ur3F08s#Nw_q!sp(hT3B2j+h1b{H{=4 zk~7mdr%C0`wNaS*xCg@u@FdYyL>2j7?TAqX2DRa`a9KaNh#~`-5F=y8XCh7mYhG^! zxS>a*hKh;lTkL7w10+v3#57ObZak7humut{kSXdF88li`jGr9+u?&W(T8q6vt-)>9t zD7`Lj6(_K`XPHuh&7ep`hyW39;6VZg)TfZwpW6n#=^Me%eOqDc>FbtqDT1QC+3dnx zxW0z`&ff`LtS*H%AK5cEF)#zviND6@hca;(=dR965hIb4j9cs?9!G4$mTh5O#Z61u zJr#*SrsU}T4-Z!l-`!&gmghivp1M4n$&|q(>Eq07AOYY@?%{{YSj-zpW+oJxfw871 zZlA4Yvfp6mvrHW$Cj-6l)2BLwt*#-O@Iso;Vm|AY6o4fDKIFpc(#w}#ldL%>{d3XscLUqh)dAR1b86)%2>9C=n}ZNl;=7BVkVgG;NaKC}kg zD^UW($}l=eI%3#1tv!Z$HyGihvIVfwV8bQ56TKUP=~khF?=tpX|HF~nsT<4w>m!0DdZADNwE)kS-LPk?oi*qt2Nomnpq(NMFp&(B7%&RtWIy}9ap z-VaXFZKtyr*9cl-&Vfmx7qfmyCUE6vJoLA6*~CEUGlUX@j5WQ4O2tW{g`|zYpzP%a z|6#`vN{N1JE`0{+-Xtd39E)b8A}ED97N^8?L<&e7Bs~nAOdOPSq5%osu81)CQ`?pfZPZqr|fLLSPIYF8q~O#t>}Xi zqN(8iHx{^Fo+*%;EKobm=dXK&F6PYSfW&%x)-Vm%CQKq*40j7_4b*tqiGV7%>uKtd zfZtkht7bW!AXgUgScsBC;EC-#Dal53>8PuAURIz>`K~Wz7F$ly&RxZOld;t9)>#Hv zuk0$Rh&JiRDXDgRslN)zM-i&4A-cHoOv4Wb&opWzq(aCC{2Fp?Psk#XhoO4%W)A-d zJW#K^Q{ZQWk}2pNTmup{sP}jr=ZtG}J0q0Fi-K!&_m3p+%*gv;T02AJ3}db$NFe%& zvT+I^d<&!wj5ljwHXL}H9?U#II+#=_Ku#DY0mLUA<0}IfD1j0s3f{@HDR|4P6`9NA zjpDZv!ae`0zyF#qmORM)wq+#2G>KWZ*3K*iHJ1x3`PxFkeqY35c7$z-8FO`tWX+=9 z3mR6EU|_409e8lg6=Jhc;)@zx>umK!`XC9i;hU&GNNlKZO~{f3WL5eg^y6q*M{kY` z?Npn~)1qaPF;t#6)_`)5oqf7{y7#j|z<{N+|C`>t8LbgYf^>46WSP}oo@EYdK>ecJ zd~9;-#q+qqwDa69e{6=ZI7+143mEUWDS3iuv9-i_&mk$Zi$_#FoD`7J_KM%Szm9Xy zuEypx^D>;x(a;OB7UCX8FdND?fHEU9p#EYqQ;jw*ZwrXvF@t8A)N7^XsP9ODpj=4# zz~@Es^kN0)PEDY+yOxo?1}EI*g? z#rm3-pMpZ|G$J+r*xPYOgZDni@IUm1gD;RHwBt9x^DG@05R?pUC+`iK@rGKKB6$x3 z(%VBQbmD=p>nr55i}rVnO1Fs0U7(?iE>qtV_DSGB;x*^u_1;k?M3@!e-&_I=&US#b z3Sn3oKG$weKzkJrhzGy){vvq3i_+LXCWjEF(LT*Lv!$_V1W{U&n6Q=tf;CHTY&BqP zhUrG8_oI2h2JC>EO;ydW3DqS=h&&=(S(#lC;RRf(T(~Xb?_Q@?qZbHTf{25&Ev>u- zDn3B*kn@Sri;hny;kv9OQC{98V(&|k##TatbxTM%>Y`NV5TC8fIk`~>S1d^S)-kVK z@WBG%mmAMp(We#t5KDN$MAdv6D_WKcdv;D)>IKw4)Qd1yTg z@rPUH8hy;Ehh+T%dPh24r(X5H?1kAJj(Ib2GGcA^>FK9WPaC#%+br&XMgq}23>lZ0 zdA7CbfVxp1<_Ny%wih4zGPWpf(~H$HKyztpoKjh2mPGMe$1&nYf@!=2tX6D+;qQ=C zw<&>nL&`!XQ@DtYQ@O&SBM3xeh5Efl z1-VUnfx?cmS|G7L2fMJ4V#6YlfqJqqvDILZmOL8n{Mk-n;;bQR$rV%lj4P3?wQ{>W z$XirP>F}HfNG}#Rc)2{8UL<1}35+yU&?K2-5w-dTY+bCQ)L62;T$wT4nO#;R3p0kx9GeZRc~95ZV=PP6 zv-czV6uf)*u=Be=E$)7te){n3?X@*rmf{8w*J@gPLAgQN$QWFXDK*YX(jd1Q&Z=d@E8q#opKI@d1RIzd}LPfrD{XxCGH+j;DBXvrQkg*{%@+-#M}Mql1=HN=V~@d z=ml?t;?dGYC=X{)=aShPFqX2Ci_E@)QhWp6Xi~{;8)u%O}5fRHrN;unuZd#z3Rx(T+v|5 zvu3po!}J8y%(aO0pn>ll19YLX3&HEk4DwLhVD5)L=Mk;7p1X?nMeap1E}BI&5B68d zee7OldlT0yngz-ycMcGtdw^RZyqU3(fjlE@i&;06wrGbCqH1_VJt6jl?SRY(MS4$P z8t&#&x)gzit*``XvbZrP^Fs@d$zrhcswPyI;2y!H(f=wj9JeQyKpPItiUmFq%Y*`- z%|)dCUP5(AFxSPK*>yBL6WyxzOcZGBb)I#~6w6@}`xei(*+08`hteS0%aBVoRVDAXuf~}6te=#%@RpsWM3~3$MAI+ijz=C z0bci2kQBjSTCTdMh(1}DX;*fN<UI0-zfrMGM3 z&x3MX&9P0+z*YdQd_B)isjTav5uO3_xS|3c$umN`#L|#u9uW+*cXOkH{-QQ$DQf1k zddn#G!PDKPKDboWW;SP+dvf`^>b<8$6l66qCm$iKw{d8604WQW4C1wd%S^fgruVox zJ&kwI)`B6dd1e@;3Hqv|uV$RrJw%y6MUoRK^07&=blyKXx!A!`fDv55Lz-J`abaU| zEaiNo{u7iA{FiPT-{@h4X~F&eW>SIrgRK9!Cb6svXzxwItZ9w>dW)6v>sNg0>BR!x zWJZ;#PD8ReoLro$2_~=|0j`MR+4TO1@E8WugD?2x)tFf%jb5wl=rWS;hV2gFp%&^60i7-J|26~Kf# zuxZILXI0Sovw?G(k@g_n!0g1>wuze8N zk@k_tCE3z_)rHkBq)I~cuDqFB!?3vUSn#VexxHHaD96};Dgm{*8kdlbPM2-E^=Ii&kVGDh=~1~9FkTeQJbcO$yVtZX2; zEZm8gNh<+nK3+leX|7P5&n91l2{k46!m>J3t` z*ffgqSw^M@*a5S773tIf>CWZDs>bbo*_h<>2XGCoTzIjt8(Q@#tA@ZRumYrS6vAQO zLC}PM@pgf~jzKD*gT0wD=ypXf@}b^cbHq9}6S(`#KyOuT`hBuAi*A6S8+Mvp7c%Cv6S1Rj0Rry*DMiFeMWrrw72e80Jw0(mE>xAh4r^K=F_F+LXL{I~5m^PY?{txweA zv`1iC(49aH$}U)A0`W`eer91liqW#%#nR`@pcsL)h8Wuwf}V0>f%cS+pk<;4Fk+z4 zJ&tw>9fSX)zk;7OW{r<$hiiQs0~d@?>>>Ed1?XH3TGT}ly-1QGJnue>6_JRK?Oa

^}F1#`D`D$`CL*Cf*ik<^bj2mno1<~Cp!YhFe;`+>La^yqpXHJzXCYAoFSr?HinDPO5ws;(@ zFx33!(z}T(9gM8>h1@0^Ht|pGiJ!%fRlwvW#B>FZRsr=3h+?0!Mmbv z8`OF4dKH6Q6;DP;%hUyc_&OK@>NB!5-z+9mMt+-bb$S0DZXV&aFJBkDjCaWPY_#d* zYl%%aU7rF;6IOvg)%Wvn$ni#0p)*+DEjnpxS^dccKm*;VO^s$V{i{L=V7Z1|a)mhc zr1oPdL^-Z~Wo@*O2cX6{*J2`;rHvTwXQ;lC!Ue(tnat0h*hV-4r6pSjC-2}m6)FRHKIj#&;KgBQkEMhNI9>UtA^#L=c=C8jD)fU zI+9@OK`tf!VO363iTP+CT*7p-YB|lMeB5PGRtjnge1qnOtFh*I9wT2_`ffgYdpR4O zdUfaOTrg8uYuMPS+P!Ykb&%evk^~tc(-uwQtWb#B7z8sQ!wHL}CWU7wG#@Et`2cDb z#v}Gj2G8dC;g<7zTh60%v^Z#sg_15Q2jlj&H^@pydhJ*!$Pp*o7D_NpN;ywQ&In6` z*VnX#eLe6(LlTCGhpFKB?(XoD)`5%w(I-f`Y@iySPyqE*Hl?$6Zc6$@J>royrfZz! z45T!eAvPa^ULi=le?TLKs+XHytO`yrQN22)>FFR$Ts2de684E-g4m$VgEhF2h4U5# zEM~XjQYrsz3&4~-FLB_Jo?hYL*m8E}Yox(nT+J^hC_}_b#fko!Flex9-XxW76<|=Lj)n~l(?H9doZT=Z|0Xx0nf`Tv(L~Ni6 zp11AGc2+kd>kG4Ri*{Bp4Hx?9{&2k>?eT?Ih?DDL>$btSRs?`3M(|a?OQ*{3c2#e z8~`$W#OeiekoExbJzvvcc^SdwoD}#vs@!_0B4>?kY|<9c1}Gc8!CZFbl(b;D8@RG* z9_`^xkYR*}q1z<-fp$oZQ{9gsi!7MY{^&iKU3Kp>#4Uv><+7?Oa z(gXj;=0(ybxsIn=?6^UetUvv%?5mNJA!8}t5p)nPU8x4>Xh9t5arP_8!M0K1$3K=GCDVo~c7@^pbuq($5 z$QY5s&l9V;m=3(gj2O=#)g{5~j2Ca`TXAkQLE({-Xi2S-BA0lJLQV3Mt~6s7;g^BmCflPr z2nHl%_ujOI`R?M)@o~rj%B-dgjkH!OMaG!?a=e0`KPk>39yr4vkl~9or#KRmvTA7> zf~JR<82>MXvOUuwvy^7J32DI>5t^bLM$$ew3SZM(`1-)K{B&qD%5SU_+N^bpo~eYk zi7`bNCIX+*p>7kR5DN+I%NWfs*OB1H($$gl^meqEVos;Z(oFsc3}?Dxl_g;&5`)C9 zp?#p6n9FoffP}GgpH=ol}q+ zR(#Aka<{Lj;;0uH+hu-x_x}E|XAH=pla=hx$yp;K73sq2^Wt;KEJCpMhKO8}I*@?? zJ>7Q+s}<*X|2jq3U>fae_;~!Lt$}}u>P$#Qzmz6k=;cWj|NZajI8CGMJQDwO)h6n$ zZi9y|zYQKb{Wdt$&CD9mdN*A9Kla^VlK3C{Zu|d(-|hIfzuQ)P>7$JBFD=UUi-G9B zd@=1!%9TLy3EYRM)Wb%gdw)9K+dbGn*xNta>ksx0_V@0;8V>d@osqgZC5IXwgBXU> z%z$cHKbZdY%U-sGOwimh4il`V!DWWKlyWsNckuus(F`dO{Fd@9c+4UM_ z9xmwffqw}nsGN}Zdt~Ky;h-MiUqkX9E^3Qc6lt#=(n~aT;lLb}4w_EpKu&2Y8NOT#N`mE$rIHR<-nH;#$ucdLUfO@%pwA{xHP8jK^(B2o$yvC4{vpG4kImj0 z`D?evTM#31K<}{0!&_jzrEybVg#PhhH5=@DI6j@|ZVU@f&jm4SghiH`;VW}{4_L|E zJ|b9jAtxS~!QY68>?|vUI0wiuO{bvbKJrgz;CZzfbqbxz%nwKfLuger?Ct*vpR;>B zI6B_n-#t9)5BBfBI-F98<>eNd0BsytD!&uz^XxDRRh-j)fH`U?2Uw|N7UOdUwrvQe zsth99Hq1kZQk>{`bTKVjEaFIbU0JBi3j`-QQoyYWGS-KRd9{c`tl?f-LW~ICF4Rw0 zY7k2=KXV-*5->w?V5}7-9ew=Ahw=NrUwqJh*{8XRsvL8Q%2MCf8^+W^NU&^|35?<% zq$f+e*!*pUFHRC>0ZL_+%oAsZ2Hb2mU%^?qaFa*6f3o}y|xyy^vlAdK}H z^byq2Cy?Cd9Eg&)ty_4B=_vr;(%y?;NY8_}>kZkX*F0`UN(7xA(GvJ?3Sjf!KsASN zkd5IemPVG)>t}!`Z|5*EQJ}V}FlLF64YXAirnE#bB5{v)HblrEe6|$8$v!HeCd+)* zGuVemGdL8{&(Kp!U}ZzE`Pr@0R~id0kXH#3X4VeXtVl|=Z|4S3PjDF>2}^2>pe&!V zQ38}Fx9`M@GZd|$5%r4$sM|_+^d?*~Te`P3Oc7-_NEkU##SwdkwHyc4%_XoGFx^`$ zkPgoY*1;#BN@!*gtXk>Q>x9u&H*s4RELw=9zQE*a2<3-VP`q7~n+C9QxM6F)Lglz6 z2{=+a7b+bZoUaDdjWBXSbQ)o@bHWi$R+$c4I17Mfiwy>+U^S;?&TtEeW+S#F82(ya zL7DG|PMx;6{pV1&0P0pG3G&?!f5EqJa9zX4FoakMu<@hUc~;~|7yuGwrn~Tg7bi3- zEjkUMmEHZ=DLMA0%10jTu^;-ufp#z`IsPF>j)LLWR5+XDsh5qtop7^lBoAOzWKJiL z&oijw4m@fHOP5j@6u+0HCbq>Kr1~d{+@d!~q8Lpg1s~w1iDX{!Y!5!65xFD{rE z%oG{D9u{TcP$u9vaI~PvYGskgu{E|($y=xaprAH!@bjm(b{)H*3!G#~7%L!qUtA6G zL*$x*WqHz&ps<`8tL3`6C`H^+IM9J=G}4IY2`OIAm185njv_UUUoaNZ%!*iF6g>my zFD$VoF1aJj$%!0c*k;;xjRZ^EW_d#zjk%?BQpn&1=nKTKp3oV;X!whzC`G|WvVf%S zv?NIk=hZcT$JU`)}`&-OIh1raq6_6yUIQnWN51 z#=1=lZ3(`PHbiA{LX@;}kUmrxXneV8t*by9Y-s2Yz%sn<6~D1O&;wXU2ikfn39<9l zaQ6^uh1Iz$Jzg@2GB~_Y##4k=0@}`w4axdLAVmmmDg<%T7jEyS!!hw~nq@h_weiyD zSdJlnfr46uX#b$A_1WR}R6sO~pc)9Gfl%R69x6^J)JpUVuLU~Bk1Ql8B42ZaF4b(O zNQCbG1LheP^|wH>6%7<9n}_eJd5q_z*TGPJQq!)-EmHS`;tflP-b`E(Qq~xza0SBA zWX%KJ$V2j=Wm~2*Dw$r+(<3-^j_kF168MOK=n+j?87#aYmT*hpCa*rv@xf+k7-DmZ zc_ELF-I@Ivk$+Z#^pM0R%IdLzIL8G2PL+9Bnh^3qPPPM(%|fhbAzCJj`msPujPm*{ zU^J9YeU)8z0X0;ei+IEExfv=n2kBi=kONTL65@)q7vT_Prp9J60!E`sn;MosBeHB8 zQh8)L3$?m?Mt&zxJoT!mUfVYEJh_-5fux{?kTLP;W#bbF7Qd-91aAj($G`QSe*Ee2 z{s**}tkXESvyj?mmNP$~aA6lcR~jNAhs4slE{lojE+9BTf~(#lghhSQk#MxeW)#Y) zPcXw9M2)&zDj#G~>YgdlfC(WeX?y0!3MBy*b)5`X7hz1v$y&_8Z~ z08Mp8rAJyvdRs%~^&C4$IW^ChF7_4X`kFPtOp!Dw@OAJ!f=Dv(h{gTKPe0zf;}H7dCrCB<*D}sT1xK3gUp4yN!p~d^$)E5euTB*FzUQm?@vusOuY4 zsf6Qd{`l_U@!iuu@D9yW*oFLFu8!-6Xv@uWRu)U0IlS1CStl~=i>fx(cp>|qOhK5^ zHRKPp+h`~k6Xq?DU@-b<7h0qQa>1&?E6z-7Zm5?=DdLg0bltS7-miC1eq)Em(AbT(n zwWrd>WGB|FiWdV#lKB~N+0uT(9L+dwjsb#cy~~Wk!hyC^{Dz{#q0|v8!sa;o>t%J4 zq*_)-3e@Fadnq_?v-#%JyZ2A;K5V{y|9@ZEPMc3qwqM@Ye^ zNi%5zS;z-Cmc8&b_wtu&(F>4ILKPoGQ%bZqgGAP7Z&nTUZBmT(&ttJhn@NOz*Hps3 zzZxK%CXSrnefaKuDmh!)(3n8nu%XR2=ND(^>F(|ge%VE~i-6{y#O6(e(vgsgY($nl zXD{KoJ=32Pt@hW_%F_ zi6a+d$S;hIS&Xi+Lb_ieh%~@@{x8f643hB?FPliSU|M8?z6;T@eg{ucOkW0wUct~% z27S@AoEu#v$SG+VIHFWK?A1Ix)%k#H^3RUb<{dzdDYN`z-%St>$;%;~{IBL9w-uIy zT>2YLj}%r2!j`rzXcTHRTAXumFt>91jY)>F`;(sUP%TjrrPCzniF!i@gvlbwSzv9- zeKRlW?w@wo=dbbnHIja&rtF~IDQ8v1mcjSo$8>$f*Q^F=(z&f7`X;K6(C3h3B-vSN z87a9xXln`XREqCyA&75+cby`J7ojwW^;H8f=gWx@O@>;7l&-S^Dp41oYl z|MCGLkHAvCAFr4oHU2+)kM~cX9zW<r6o5&zOmPro^+CN_ww@fD^3e!t`)jCI-4KB_XU|2h6ie?MW7q?F$d|MET4_n zMTanCu-{BvB0KGMpO^87x42lL>vk)=lT5XQ>Is!#vroZh-vk?CJ^qowKd)edMCVhep%f>sXiXSysb%U)(e?;6%n<8F#7NCYYeVH$KmPpL6*NZ{z}0qNEt zj1$N$A)wNzX~YP9Ks0G&PF`IN7ohQ{Po;-@@l(Oj2(YD@BdZyX)T&p=&DE|K%xVBG zX1j$y6X6X_f-4#ru@3`#gmEWY8rHqyH(yM&aWY40nHsEY;qL`l@64Tz$nS09b{nW2 zLI0U{*#HTj~MJ9c+io%?-`>&L;Cy@>9wSg^AXG&{82%8)`+(%myecjQCLnwm;Fh|XOy5cFx@=e8f8 zTPZK=-qnJEJz8q-5~7M(Szw67D-;Gq@a$wujH){237};$8c#&roiF~g!y=TlzJ2R% z8I_*BTLhN=!rd~SJ$pCAOupn3^1gWXZig?sTgK>T?}nJkm%JOpA73=?h3n9N;X?FZ zxDx#rE=B)^Yk`9DFZe}fm!-{6JwH+a$f-B1vI*#r(=h|UFt zeiokxFIE8o4=xz+7ycs?ym$iY}UZkE?ij~kW z$#^uIxG4p}hUrwYF{x;d_g=N%u9>111YEpr*NCSn7B(m8bRKU96%IkVaza!IXavlyYvt%N}}nN_8DGOo4ry6ZEF7*3o(#&+Dl2ahjY9|d9J7_2qP;DOjoXj zG1}kHXws!tBUXiW+tasWNx&?i<;NP+5zb7fdz!9YwH`4~o02Tc2!`Ucrl2dVCz=}4 zy3qyStE@fUBXo0f#IgF8ioa^nWipXA$WAW1pC=ZorT#lIq#ka`)`KCX0@Y5Rt19o^ zj4oF&_MlGBm1*-~m9n4;ZxH7e@g_`fU#k2vlZ1@~cAC{vW&yVoU^^sxx`KC;70Am_ zvn!wcnpC&3vA((lwo}lU{5-)A{(-OltgaH*J6d92YKUu&47gWMc zQ!qcBzWYe)lnsCQfK2eG#XbLv9wS;n;6F+iA|Jx1%ol_Um_V8=ugXw3rizIGRu4h!}r&l){f&DkLt*-@FRU-Rs;m`U~jbVPY2iNgX+A{W?c2g~jR0s!D_z zL2}2!R`nZw7`OqPLf{To^&C71=9nei;U{=i*=FKEvn$eOt#gl!Mn*fn3Zm&PZ4@S` zZ;6S5UVxw|J~;CBkM-nqq(|d+xqgfAmMfJi^JJJF&fO!2X|${sBFQjri5Oz(?I2u+ z#S2tm2)d0;K%l)o9qP{NUIX6DW{XD36L?ETYot5Xq^Dzm?#zh7I<>zfKn;-FhdpM< z9C%u%^@4hL}S91c@uIwvLEYl*4Lhb}@Slh%unhHhrYvDXkkD_P7+*W`XrzQrhu1<2N>bW|#E119_k7_ev<^EpGj zFScnwbdQjgWQC_}r5^y9H$ZW5sjAJ#cRzf%|E^~>ZA_}*GNI`uolyK~6jrUeAZ2ND zF<@EuGvWkC#&B@i|NPnG7$Ly2&B5lpC&~r4T*jH!zLICI39nlvOs+0iJQ<-jL7|M% zRh<&@plT8npv+0ok2DFubEvEG#aa%GwrG?_3y|(4Nl6uZDm|z;tzig&WG*dpzZi~s z0@o}AKa}`{7nUWT8>b)d)C>?4bc8W9QEb%t>om2-d znXtKama``=;V0!%1d1nlUPt^w!nHhb%y<2$dQ`@rPQfy zktK<`h}`6_CZ>*!wj|b#m<>#5@QV~teuS`&@x$Z&>HRmKen2ke6(;%yhKlpo;YvSX z4)OX@%NB7zEQ8Hyu6ji8YH!pCxowoD(gbXYPZY6Dj`D&5jcUI`(HO4wvTOoRsgf;= zhWzgo^6*fe!1|O{ndFHDu%=7Nj`p)&e=Bq=E~GWLV~sf>NjhQ2uP8iToq1&u22B>uGFSL8UuFV z?!bEi6v#ZF+D*r3so(apu+;?F7qZtJ|F1USRFKHtxf?1Jq0IG*7?K7Rlfm1tj<;JT zY%@eAU?u8V&4@zS^CA+s+IIsums`>_v!D#87pUOK0!(0pX||0WHcsGL4T!pgb=g6$ zoRyMnQr?4yl+;!q&wP+9k}@xIB_XHg43#UOniEOQjL&3jPE$Wu;A0Bf(c3bd29}$u zF>`-khRcY(acLA4J`%YPkRFMNry1sEcDX{#^=8R%KTMh!(2oAA5)A$e)5Ot`K~Xy& zO+>2eCgB@+(cth8ylC(cf=H!2cq;6m&QprBw)cTr*x8sIJu~%@GByYIex{PO3! z_n;U*KfL?y3xrqie0+NRgbo3#Y9x$h8o|H3=nF)*{)`wcT!*XOdgUo6Tq8F()-0B+ zqfA5bL3%~P{Fr&#gCog^8XZPToNOt~{YtYE4=+r(LZZa^EY)0cE=%Z{5Q>FS26{TJ z8Rpv{x{(4hc6K2(7GFT|c>v^GsJkE-F1`b3#%*_k>7Bzc#m#xd8U#mCf`AqVZB5sd z>ps4|A)xc_65` zSlETVRe3tJxhsv<+eCO-wAY+6i=quB(@cd$`KSPBB;=9J;QhM~_aDn_SlfRTDb=q) z>`7u}K5W#5KwTr!OE>&D!NkIWJW(u-3`{Ganp{h?maNIE5P)h3K^mOo7}#E2 zX0;&UfmI#~e+R4KATWEem@QPidx1BlDGcp`{1HmurJ99@SZDc`_T7NIVgrY(t1%kg zB8yJZ%Mfo5jue!~Aa{QNJzy70cFurX3lieV8pMvi1BpiV1Cmj3#q|um*V*#NV-~u` zsK3YJ_LoO&){EIQqoB@SzVvC&-N)W%rl&QvRi<^c%o=5NiRZLcw}geZni(8)_EHzg z{LNc4L!ST4_;>!}egY{#{zShI`8Ws13uu^_;X*AZc&68+a()LY=hszU0N7zb5gu+7 zm42Aq&^1{r1d@VTPhFYSOz^deKo6od3b6!50=au{jSLZ6NbPGsOIYS}!R>Mz+!E8#0(!;nJ9 zfb`Xn>=6jU{h?pNUy@p8uCgRhA8jxj#~PEQyB_$9cLDul5W?NPF)$<1XQZB)itOY$ z`vMLa|19}IzkF{p)<)Yh2@Z{MdV2y>C;Frf(EQp$v0o6*8q%5ZGLyr^&HS}o0M~3L zmRAhZTe+$^zZxq52b_SYB55pZ^=!%P1*awY=vdQA!6JG-u}Af_QV*mCVb1woq) zFFJy(D}>3zX@X=VxOi;(`710FKF(Lhd{W-2kJ94uA0L?kWz8+LD2m(A*N5`aJw#tF zO9mu_8CqNA-%E>SlG+GE+`6d**(&aVtqZ6-afWMwThb))9slsAy1n_6p&wUAnjQK; z3YJQ9^XBLZ#TJXCNfqDWlOSGGf*uaERbAMIB~z_<+WmMy{YL1DHBtLE>s^S;l`ekT zdj{BTgs8gc?b0{Q&8F@$>uBkxXr)4tY)+wVPg62gt`19yNR8Eav^eFPGAC0nDwEbV zE3fsc0p+I{v$41EQeLygP$U5O%bK1jc3@^#7aF(9pHaeq(rozIPd6%j#dxb^Rmw1} zeh!)$q0y^^Xf7&Iz_GAvgf2BElD`d-thJc5$d+vY@UZaQ*>)~Mogi8Krs^SfLul5& zu6{^y*>e>{Ou>U&S=N`nvJ2R(2QrS;aR(ap zcWKJ5C)>$gV@%%hz70DHw4l<$9*ahaTeii*N>FJDaHVHddNC>92*03o&^&W`zBoe2 z1%8eP_?@XNkS#UaG|Mxs&Y^E4kUqdIn8_xI2EA^bG|Oc^a_i;Q2&_5IVsE)@olYrP zjQavPZu8kKbdGXx%t7Uq#y6;zRnL&nCC_?@#?mdOIW|qW*No z!PD(VUb*IA<27NT;a_21Ujayd7o5lT09$&#lTG&kTsfMenFGC+P9yy@g;fnuko5tO zW{}9b9f_<{vySMVqbk-XLgb=0>G>&aKki9n=%eSvJc8Mjdk3=wdl_yZ_8nT~;O`CZ zOtkRkWPYHz>ej0cpVO-hXzRba0t>%bU2SO0pe2L9)quXUA{;0huxCp}xCGR#YcnY{{eBx?TqzxSZDFv}QJ z9sB|U{ORP)7k{QW%EsKi|7Aax3$!|*RgGP!${YM%f~(2uu-CJTe0CC)XjVz`2+>`h zQ`;;@#AJk7?u0nU=_pJk*`jwst}A1u#zPG0YB-%?8f{ZUR7dHg|DU)wZEhpWvIO;0 z(9zaqR8}aB0Jy2EBg;S#AQ2)72mnbbzrYw0BSMy1Vniu3vb&~!`D@MkczSy zo3Km~?)Ulj-hFpp`s*_g;j{TUqP)*$Q`kx-tNHnr;y@lBVhDo7SnLU@KDFc`+$f-W zJm%P&F&}fj)ra|5^F`l3YJx1Gh#+v?%jh7>mitHA2qIoDuFmUDgbkP;q2MNK?~Hp< zruZHrct{jlL>_C&cl1j<4f_BbMI!+75rlx3Vl+Auk%UxMfNX|F(N$0Y zv8n)RCB!Gpd};xV)CGh9M$w3Nm03KWFb2piXogQ@E*j=gfayXIga>z@PAJIG;K@== z7EK)M$RB}CpZaJ8*H%V=EVeoJ@ah^nQ13E;X+BeB`A4@XAnu6kWep@;bG*tl5C{UR z(RydJJnesve-Mzc+1&k(oRWLwlt3WbK@FadU*O&R0sv^*_xQuX^i%RLv_YI$L7e&S z{{Hq$?|KFtv} z^xUR59co&+=M~(p_5e$(CS0Dd$p=ZRJUS{GM-cfyrwt6)WP^l9R?u*YE}HwQUrMl@lC$r(xG176*`*N&tZH&-_gG!z5dG; zIgHSWO(ZLC0r#IOH-8H>0#UYrhYwyHDZ5)P-hc4osA#a|;zP&)wMct(2rAM)I`Z6w zw|6!YuZ+=C>D zHX#+c*~napt`&v}(;}{(_N??7c%wTY$q~Mn=S2KM`D%1PRy1z7SdA+$d`aa56n=tZ zup((coUAaX%Pg3jth*@Hkx2z(o&7Coq$pB%w7nyD2cL|QaPu7>W0U&@QG|$91g+Lc z4`Ld^eDevREh#C*5BzNh95sOY2A5X{-Hp)e03qAaE-Y>j7GDDk3bO zs^ujq=Y-MK0axyPNa1gj@0D*_d7!#%|z_$Fq^V^Ok*w2zsWbb>F86QYbsTZ0DQt>+$3oS)D0>-`9g- z?2Q3h4tzpZGQv9+oT`Lrw4%YJEzPf|7qeb@3}?OQCXxZqP^1dW&%D61o2-f|&gEfM zv>c)*a&CZ;AeDJ5RhqX4AMOQuJ9c-E(JkqgoX)0mbgst|`|`%+9;w(pCcP0oPsgC7 zFQ!${UkmbqE(C@M9#W` z$woh8V~aJimgvt$8ublJj7=`F>oU(E2%0llhP>V)2RESVM(gNo@&-vkPE6itf%RZJ z3%aR`aLU>uaNp3=HXbe3SBMgwjr*~e@YBApi~xgnEVD~8&W2ac!UK})bhrPt;68eP zNHsa{!&yriK@rZ#c7!u8rwcQuw1qDKS}D1eOe*{R!Hb4-ED7$A1P~%Z4aYn27AHh7 zYJ>+45X9} zYK8NRp9IKj{mN5~s)dSChy75Wfx&EihAfM)8S)z;Dn#=RWG!u8Ud^zymm@aal-Q-% z0tAHl_N$Cb0n@ibkC$~iqkpA=@?E(2|;fU8?W^w=WvMJ6)T z4m_U#oprrmy={zcAkxbTn|z$YKl(*`-)%`L-H24~l)F=N-agI8fn=Fa1ElWwg^>_W zuh20i6(suEnN;8ew0Pl0I?tBRYK+o{B@&6*V6AE2?I5XsLN6USWbL!OAho9+OHk+( zEE*6|YZ|N+sh)n|H7vBS;*JBU6KI5l-~*4wV{6i^Ab2cG0|i1u2&ld>#0ls%$IOi4 z{m`u|HfOet#%SB;4rrT{cFdR@7*}T2`83Cqmv16hE z!1di57FNw20qlfKRT5}U&(Unb3n^o#(sSpoA8w!rwvK@?oIEyElrehmB;vdi)Okl> zQ0VdU>Gy>?1APzGAyaGyX($SC8r^dzSV2RrHfIXV8yqFK8h#oMF(fIaf%j7yMr__D z*cJn4A!S{(JLcF~4I&OJyhRQ>FZW}=6Y^NOAL%=6rUln(uRPEj#!RQyrNB$-z&uZF z4h>An{|Q0qH({FeA74V>@qSYrP#p8EGFh|c&9D${C3)CoPz3mK6X*h)#K;d_aiL66 z56~NEp$eJ!u(H;)p}HtVq8cgEJW_+jBamIYQb4q?2X`0s@tT7WnycjplgMDbQs$ zXC4c@+zg_-y}!Tv{AKgo?dRJMI~WM6186Y{4vi2qs012G`d&ql;y&-UsvUnAkc3?3Zi``AxS0A85pxNi%@!N@9s z-qncZWIcnez#VH)p`0Yp+*(8mMDGQ(a*|wU<(x550YK8*?Bo5H+mCPVp8drG1JYP? zEa$@~Dw9a=crrO3y`G#bmh<&Q#TJm+uQTBLkf0~m2S>d$7#K6!KvIe^4_wtyM^eCj zr#d1-NRs@9y9v?oGxkp~qtUi-QRNe9!IDvM@(Q-WF}Q?S1f15w3#S7oN%@O3-b_IN zOG^)qy}CMv=ey<$La6|0a1z~N62}SS$ywGQ@tVkLlO*VG4kJ~hzPFRJsD0h-LF)d{ zH4o8tll7Gw#m+_7SF5E+Nyqs*fY}r-_<6I!MTsF&eQ7}$U5;*GLg*J|CgYUWdBnDg zf7R@wD_Va zv`&V^1+@oeNeFM$B#O2nY?2T#-Ti#AI>G0|-o=nXluhd`=BpV4Unqd@$XCI*7LM}D z@yxBiyM6o5@$LKfKi$6hTS*VJXv-LJa{J{rjVgzIubOk@L_LIOz5VoIIQZ$^7i>n% z0dYJGL7wy~D-Z;^P5%k?1aV~8?5Yml@#VYx@?o_U{D{go;>?s!Yr)FhilC9wSjRW> zeGG`EkEh7Jj5%?#X++|GF0^L2jmIOCtp}8F?-6rQ49S=vzshtC=A+ejHwzePz3Efd zR)=n(O`43fd263m23klOc!Js~(nJik2G)eJMFW-q*if$>hIfE!X^s}7H^odhAZD1n zKv3*r>?Y3A;ZEP7K>G5;+)ZOC&9?r1mErvX%dL5hU`2nxl(%(^Vgy-H5Sk(0%ZP24 ze3&@T12UxZA1JfTJf4GPFwkPME~cyjfktXZxWR^==V%x~1E@_9_W+jzjw_g76%=d9 zzuN#Q*XDdaI^iDSAAT9=AbivGq{07{I%o2?sGf)!4FeX7W)+#NY?_EK;hyQm=>cL% zKCMsbPTIC+>V_>Q$eZt;8t9miBCUMoi}`ATh+~Yj7ng3UlL@3dlYvXA8Y8SY{qV_< ztseoSi_vS&Q4c7h3Q+v(=Spn?GK;Gf7J<}-BZ7!v(@3*kT`wo-&dBFkOss!Ay4}3& zyM`Kx>@`SlZwApr$OaF%lnStYGD?wd#=qWv{CM{sp0pj=h3rtF&7P-?(|MTZYx~T? z(s|mkdpWZL=`k0d-rhNe5-}iTS}5Hg7fFyKg7D$g;_v?bu70P7-3;HhL=YzKQ%1=8S5@>PZJA)01o`dTBNn1D4uwwO~# zKgv%^wm{YIGNz!|YIvCjuoj$#GKA-lXW!A4aFxdBW1QYxuoh<}w^RTP1y@wqAo6p^ z1J6&DS)cpt42Z1#R#Y0$dB@x$0HjSpaA%ACaFC3E>TNX{$@J&HMZ3g+y`-iGKE{#Y zjvCnA_=Sy$G%~!tc@1C@XQTz?u1ya?q1@8Blk||11Va5~>#sqY0HY_cB{LV-2pj!f zCi$9@DLX=^l9??GDM~70uOSIK&Sep%Ymlu1q=HjWI(kp}zOH43KUq#y4HUV8;Ax^+ zztcn*FkK)%2hp{oWCS@N%KIYTGMFAdw^I3;Ygp*=->mUxzkSmA2aoIgMt7NU1HyZL zu64soFgzBU$i+jZ=-|Uz@uQzef`b@H5p8D5y@t+=Zn!B7fGQ@%SToJ` zB(p0^;#m)&tFy(KPuKmgpFV$KJm?byYD{P6(ElwTv9B)Gz$E-Hy=IZOYKlP=0Xc$! z7|6NrL3Y4y)KcQ}5JP`LwO1HK6PO#=hzN!yFr}CBw7#~2YV~8%ObzFZN}z7a)Kt?o zUb!ZqZ0IMsn4gbO$LDp#@v(4P?*X`3rC=MM^C~ltn;V?lX;+D`TOt*jX}rudcVtLK zwgVe>4}=Xyz!6$U0}fs_S$&JmCh}hn(I>_ZvU>fpCGp;!b`2GL42L5oevFC)v8&xM zY4kH-dcw(v+vD5&yAetm!LeU+>r$YHoc+xP1Q?@BZmrB8%mKJD>}G$Yi+#H2A#N>f zDy;gpqjo%ZO|;sE$kgZNK<2ObPa5>FhMa0LU~8zY_@XF3RD%pxA+FEoZ`fApCHT@+7EUFFCz3@R>jv_(Xwi=3`ovYxIs}fR)R7p zpN{n2I^Oh-;>UPPoSpbnzeR2MMqDXj%Dl|qs0_WC{vrEH>9c) zk;Um@1DrvG4w!)@Jh)6E3T|(bMnkRRO9xQ{v5m+IeF}>Kke=bYJ->7O+xssv;4o6T z9f*?~CZJh?`~d!Jr%7$No=$5wg2%R-yNe`Lrmis>&$FRX9B)0k9HYdM0|s#UD7XWh z?rQy7b-pN^;kVWh&vGJi4$Bu}mK3mWKX41dF6VZvaQqs?qpN6&)&`x-Z&+N#1a9my zq=lSa8(xq`No9^eArd_7O;eg1C-tfv4c(h@-q~`eUr=n`x98w6nf~$9rkBJ? zZEcJs_;0~T>~h#f{-wE!U9SsZ&@aUuQ9Rx>8Tzq^+KjAw4wGjR7p$3bF#W<_3*CVm zuipBxk7}byS@J-bd%Qx0>*Lj?MO3+sQ)L&5P`2z0AyH%j9FFKN-#d7cvYa7$pjDCn zyE^A6ywI@FE!%ok_W)d}U|P%rExs^aO=qXz$P{fS=B;BBaVP@CIqXCt9WP+vga4CV zb(W`U)&XD{MqohdCjQWUrc>Ui&;YjF>cJ7muNU9+G>k(5%SYbaZkD`|Tiz!%N`LUh zGz$-oh*!5}>f&7?_F54*$oTMbpYP1SBHVNQ+xIh=jP&<@_3Q2DJN7kt+G||01ImFw z&ba0&!n9_2I8>`0zY9}QK?NFT;KvUYkJ`=k$;oUEZ;#cDA==<<+0+}*(q_rM$_?f0 z#f=EEV2apf)C28+jzvb(2&<@Ln-$Siwd!CL4r8)#xd-I@H>=+qJ6FW@urg*eKzbFP z3*CR{)-+E&t3meS$Ey>sLBHOJhOsHd>THoaRPaEwDu1MysDES7PlkMr%zDh6Es{+NntA)WTuB0FuLc? z=cmv|A%jJ111cD8fjq$?Eq;ZjVt34yHbs6#9mSF`CG+ER@X#n#y;=rJ|pXZUolf=8@2=R*Nl_QC)?$Ld* zt*SXLu6G5bUU($OJHInaH6H{wgKqnBaMT&8=^&v$-xUG^LjM1kBZ%Ie-tiKhVR((E%Q*e9yBUVofO}^ z`^?xHs~64^`(#pqc+S2=oQbKy&T#K1n6U8~T)=o0@7u=myig*NQGr1Qo2iwIWu!Ht zBGBF_I9~(T-N^9BHNr(~NyO(s*<*)5h~M|3`7SJgE+84Jg6K z^CgwOq$w{>M<5ox#$ZaZGS-j<@;1X;`jO@fHWtdcbPmZYJz z=Ob1(WXOd=NNtSFX7YD53|)Qt`uWWr#WQgnmG||R#ksO!PAlF|nCUWck%`k9r^Pm! zEUAf21XXOygr;;Tn>XX(RU0Y&@C|U7jP|6}37UQwdBcup42=bHhTNEK;v@nNFW!pF z%lZl;v8LQiPEo4T-A~z0?W#f^>?}X(A*;Cx6gT_W>b5b`3zm9SfGXzG1OPLoSMI%B zK0YM3XR4bPTCO1NW zJ6?=mAY{=I$T77Ebvz(9K)QEQ+v=I-X4*1BSbMx?3DS-Ki3e5~TMyAwiH#)O5W5fr zCjJ?1JS#{nM4z08(^haE975wX-ov*{l06np;oEV2w)8xmX6Nm^=5lVwoP78V8 zlv?7G(Xf)W;UHm>eA&0;Vzhu{p0kPjpzydU1R(evHygwO3;IAHHAdIhJjK@P2)Hhv zvO!|X8bx7oVcZ@Ufy>XPukli+%EW~-qdZ(HHFyY&1=XwZG09qjnC&#Y_!{O$KYU{h zn4?He@ggj8Rz*Z6RSF~d&@h=8OJA?NEthr-6-T_QYY4dcv=WaSAV=zgKtKyvPF`M3 z;H9Zi`@u2V+?0`!WV7xCLDLDd;v{OKxF`$WlEb>0S}0crKFqUng1~@81Xbm)wp;SR$Dp2rVX)pG1w8c^1&W}Oc1^nmCac*4xL&23*8btzS%5Nv+{dXC?! z3d=e#t&`fb5|HuqA1Cuw-^ArO5}cm^gg;*_uP(KeageTNM6Vn1gX!k5kpieMfb>RE zdV=78#oYtZg%=jspATSTt;THzWKGcu;?Z#+?eoj?*Y1aTV0fRmg{T)RwYpj`Yoixb z5B3{=|CoNtAkf)W1sYfm&=;=8AC>erULz+9o8|(skaV}{YSRW%CYM(gbOb6+7k2{j z_FIyEv({%SJy|z>E}SLO-icBu*>+&MdmQCud&w};mxJ7OuQuO1P;Vlohy5wRbCM&I z7))6S4ARhUz92Us?Veeb7AClNV-O#wFwo>u~c~6^kJXszo7{#hKuC9^q zc8->rd4@qTxdctPKE-$qv3`v=pq(&PUKIAX&Wg-fYzLxa@hpg1w3Sf_KClf#;T*ZE z=wF%uXhMXTs|7tw4?CoMf7K2t`J;4s<%u#!6c+;;YL~{*1c9@H#KY$0c8o0?xdq2{ zm?0<$`b?E{ci~aOKm+syxlM?f1M5V2R}xj@q1PAD&a44oA2X@257#qP%x99UOsB?m zVI;$cC5PL8A&HfjyLAw>hDaAuFK8K(XBxY`0Te1hryQXR2E?dK=+FFl%t|>OrzPzP z?^P1#vC_zmL5{b~ho_CF$cGP|X29J)8d&h9_Q zbg1BuqPTXbmWL}90z90hVqm*N?pCW;-@CxguN2-)(MDl1S7);Mkc7A?$_x>$AtbK*U2=!;_LEyBao0^>i_0X8!fB)}2 zS=`{1$R{wlbP9nv?LR2@cMour!eRpQfHbngj+>;12~xMy!Nu}9$}r(Ifmen2jw6@d zi|}$M%pn3fU6zEUN!@I|{QC97PbpEI`W|{ztc-^Ff#%AP*zI&jXw3DzD5S4q5}|`2 z+yrYmAGnn%iJ2TXP#s0PbaSAw#sJND*CFl|mjTrcjF_ zy1NRCK5UVWjsbdRkQ6*-5(Vq!TW2-ohD(jWv0aT_*#?+uJmQiR#` zQQ}`{V?J!SJ>hvAe05%GLwp3egy6eEdm*eS zE#{R|f;6|Vrfaf74j-M&FIR?nYF_|SgQ6JIluc!Pu+*tL;bFyA4rf@gQ$lA#T1l@= zncv?c-~zGhF?w0@oz(6U#`DV2-2mzW$RCm+WwhVXzaqZ=D`J~;XgvebH^Qa&?PD%b zbm8ja(P0$w9vze_(G}VE|(u+gs7S>{O?l{)C?7jD@o>M4p#-&-0Cumty!9Ouf1XqBVjw4T+dE6qx*k; z9KZkD>|F!1hkUA6yb&TT!93>@^6rgkePRlO}lq-D}8-}J&DZvt6 z42?ym1<~7LYeu<^jy@X!($Elb2k1gLoaQcseyk7VCPCWhvbzbPq+ztrf&85>GI$;Ev6y5~H!J<{MCjI?XMVW3?CUTawx5h)ubHoYo-F0rY6W+xQ8 z2;HcP?&TAj3&&PkG!45+7~G<PU!c*14lCx%XVn3YOy$7-3V!BiM1K zbilIpD=L*WClwV;FwvIIH9u$+!QJJeGXVNxI5_YB{yQkw3ZD#-SwZ(puY6J@z{rAC z%Vo)K90@SgYKtx#GO-I$xLw8hyjW!2GZj_@x}!sfGWip>SZi@d8QXH*WObk@FuO#V zdzv8pK-ZI|GMEm*TY4rFuZm~{Rs6g_LV?#fV1{F*pIQYL6!}OkqVQmbb&1T+DPbUB zX1&R81$Pg?^uypi){wA5^rw6hEBiBO59>YS)r<0kJ19HN8zY28rcthO z&J7-gn6|ERaWSU$+CrL->Zu{I=fB12{<6Jt_8(1Jd6KY-;+m=@ZL5_2Ux)L-3U5RHdG zGLL#!r%FZ%>?kF{lx8L;ND%277@BU^pi5w6x}y}`1+W8gHIVtP#_Qhwm(O3{d;w9t z{qp7WyPpthzuD~U{Du-ccW=M%-M)YK3+k}$^y!CaZ$L90@k8*R&&-c3TKgl##2zOq zA8MhvjP!4!LaT2Esv9+T8L;V3e-K@Nlw!`iXToo_buA3XI7$T8)KN2$HX06u?bp=- zIsDR&vGvW1kQ}^R2dTgZW>SH6a@8jQClNx5l_$!YPSNI#qzY73w~P$Zax=PaDCACa z3?LjN^|P)=k|?v3lvmYSe07?wJZxKc3a>ii0T8||&pI1}1AW)C>q*|U$l`?9q9`HE z#5lZ&g|RxrbYrIatVt<9-@ds!{(27!hBLFMt=Ta`R~8m%IBlDbau0d5v{RxHBzZ_$ zA$+9>eM33*~Q>P39n;O3zdotynv=OcYYLxf#WQ}c&e~tF0Lv3ol z9`^M7TDm=D!Xkvq0h*zt5Mdw_^!wFXwV}GGNp4F7ZNhXxDjtD&Ne_=pr;4Hz7z?)+ zV;o5yG{wv19Bty41s_oB%P?c)x{w1e45|6tVif}M%jP0(g+kzm;GDfsNw^Ot-Vpeo zTcnzTg_qWYNUXe2Owf$9GRU^!)l>o-Q1IkX1e)B+kF}Wfi$a+B_7_DujvmZ~9A!eV z`!x{)Y_8)?vzkp%2?6z<^*hjKlw5X?O%_rtA+|zTX7bB=iEyszhUHH7e3SKQ?HD00 z=auhs(-eb4@YTnqbe{Do6I`=8)evOKAgeV-9h7f>?SneDY0#OH0-@sNKy0&Qh7ioX zQ+VVu(iAqjJe^o%Gz182wiMPz-B1=q%UMhT=eh!6XlbT*WKt{cV_%rVK087`GO%ME zqnO7xX}SC5CpH!9UKRz48be0Tva}vl@7ALcKs+0T@q6c}?-ZJpR`ChS#NCVZXgE8)guIQ(=pn2NHaoV6Yw;nvffG8eCyfv;qpOQ0(|C4Gk@Ewg zgKG8xwNEIAh0J6&$O>dD58-yc8qW|xwMN_<4dZY=Bufs&ZM+JkU*^`o`*Ml+fxFK= zmx!y}|0EwFL=2u`;7}_hz#w{TT1oo$UB~t`e-hmn1+y#=qX~Kf9(jd&JCNaiL^vVl zRRwg!$+|(L2gwhuMW7%qb&^s{pF&N{SvEH};Q9i-%cgL~dGsAuj?)7f+4CU~S)&P) z$Csy6A8A1Qt2u2DS9Ds%kpeWB- z`0HYP<&)?-cLCS8d!iqL1^p|O2Ba^H##B&K8^^*mBT##pjXJ)$$Fc?1)Ma|@dQzdN zXATRCrEGFP^!`&-8)(9047y!Is~i_Ig%|pR^P-hNJ+{^>_jZqLl$t&A({z{i4a*I_LBrN0<->6xad>m48 zDe|_VdaJ@?cR6=cf)hnAK7qg$bE43OD-nssTWENJp$9Rm_4_*d@LSqI`6_UxR=xVg2&fyT|)HE{EQ?(!4#%> zC{O5}xh3eR0k^zq2N{+yyJ^kYfUSRkwW;X`z7(QKHY~LH?UoVMRxn8uI6{7qsrM*M zVFOw*t`sec>>u6!y1Mg0u+KyvBpN{k~T-=SuIKPUZr8QXtS8Bg(Wih z3^j>?bEyKB&rO7;1yoOhWzg$^S)*@0lujq&Z3|%10c4r+ixbf~%I5ejw9dSjuV+Sy z(%@KfCWa}%-xz&d$|?_I3t=$C3K^kEAvFORXkUU%V9+prWf9Mc!$CxSe)@cOa`)5M zUm(9;K#ILaOae{WNIt*~dWUZON8~lOrqr~t{nqEv)QQ}eBYZJ_j{Eo>s~H8+yN2l1 zM9@8?q%#mB!8CmJ&-?YeH-D=#zWIi5Ph_9RYN$|}nscBTuHMhsz(%&27at5t{9jU z(u$qQvZ7FT<>PKm@yOiLgPjU?S%g1@z%ETpHdm0|+!dX&yg+FRE%0T$hYi9h%ZGY- zq2y@Vx9TS*(x$_{-kqBCA-hATAGo)ffL+^%f$ZhrpflmjL3$f=7(s+VQSBN5N{EJX zG9Vc>TzfpDPyv)P#JAAt7j%CguV5Wv^EHhQ1OF#PTsbvyf9A|VPX(4hl3{; ztu`4gW%xijBY2fPXS_PeWl#vT%O4(1gtdVFY$@oGTTlI70^`(zuwfwhURbiFmnc^BPjy3fXj2zbC@opplPx-{19bpp48is4a#!nG3owWFzh%P zP$9xiJdA)L1kJE~4|J!+AX%ZB+^YdJ%&@3(&JUl;zhETXJz>J&8%qSBjLRSCJF2tQ z%LXlmsD`B?7s~y_>|7J$QjNwUu}IoD<;g4MJ1}Z<2$nc{#k}a|IRxN686z-x{fcq| zDvZn#z%M1qRb4j_l2u?X$347N{MNfufjD`0&kAy|kF4I`-TlUX0cs@U29pkOjfdX1 zyn%>uR*$j0Tb9H134!k7M4WBHWsR^^c6LMZ?xJIs9K3%}5)@o|>=>Zc?sC)Kw4AgE zav4t*)Y)TTCk;@h1V)b+_1@qs`s1{_GEk3VJURWqh!R;}AV9`MqO7MuonT;1a&O5- zT%W5+WL?y1U`4HbZlvUR%f}E4YLMQ^p6+HZAj{w(vl!w22Jmu18gruQX?f z0atFa^$MsblmAJ+MjFZT_2y;@+iHcJW}#j;T4RSe5FiKXBPDQOB0;=}!uyK5-d7NYuU zay`EUop7tO<47B-i5X8}ap#_AOKOb5h3U-5iH2S19;lk3_Br^2==xC_F+KG(up%kayyS7_(P@C zJ9?OihdfeD{lUvBX5V1+_TpAG3feF#zBf0<2h1UX>#hoy>^EkG{DW(!crwY&s!t%wUY!JxdnSf3`ygyYhTG^Hfj;G)C| znA=Roq!MR?Y@IxXXfLM_VJX3d3zN$TO>V5`SRo9>IgQ1fNV0~odTcEV7*&{*X1}W~Txhez=AP+h>P+ zZN27pDAuDBj_aU>3?JHOop4r43lhIvo$Ya8hnbLw`0t7fB5I&pZmQ5RPWsb zWa&Kn@aDI#KfFPi#=GC2eHh~S=l7p(zdXDB>D>?apML&=6H2ki-`me`e*NM0^M}75 zKKsyn_6x?&cYDw7zr6k7mycg@>t{dz{Pm*@a?kF~Fn5o0Z_%!@JVs;NH-CHf_5Svk zJ3!z3^UeEDA8x2NpD2-1>W98K28F}KDamF^|JHDwx_$p z^m!=rv2HjiT+fg!?!u^~*Z`lp%DsE2bR2;-dm&X?Nr{wCLYKup^*(m_vtXWam&rY?K?Dc#JY zfPoKJC(GFcAx@TxkWPr`2m?rp$aTQq*pkGGeZbb&N9-Q3gmpgJ5gvBd-#eHKZ3rcI zXfqcYh)l+Tlw;13IRpE#JpBm0!J~Jl6F@<^i?~T_qd(vc?ITr+78?*0l-7hx4tR!t zJ>@U`M)F%8g7m7M`fO|ghpfH@9CG;<@X^CJ?;n7{F2>9Gf`$zyU^5S(2Nt7~<`(g@ z!CDz0LB7F?e8gEZ!x%@ENs7ReWRohQ7I{(_P-%Wmt1BW~ z6=ev}PzvkvuFN4#l?Qq|Y=X!{*q2ku(-Q36)t}iai$E-N(nU!!+7V@v*~_9dMde06 zqCC!|fXLcUVk0r#cL84(7K@j4IexPkIz%645^WzuIQj$Xcls<=UO^mMm8a_}1)?MP z;c0};DX<0e3i{?AY($XYz-<70LB648e#AJp5dyF-pdOX{!O72-L3)g&8{~JMZAMf2 z$ddEWgD2bY;%mWjm@2-0CG&s`GIp%5cE!;QoGK~l393>UK!P&2FqQb(Uoc>Ku|Ryh zU1W#MdsWbl)lfuK3?>=n{D+(iFLy&en*e%4d%9s5JQ=ViIl9>atR!n-5I^t7tsegl zXffloS%k5M;TU=c#)1uIQ+X4>2Xx@Gac+&kz18Ecne=D|M^_J3|fIg z)945Ssi4J#lJaC#pBc=Oxa|7_d_t0vV1VuaO!Un5>HkRj8EEQyTcuHNtNAI}7!% z-u>@8kz>y#L%4ILvSMX3#ID1s+-eYUV7<&5NzHLaQ&LU!KwBTqhY=S_jMsQ?6~$df zgH`}Nm~uEb?#1mr+9qvQcmLN{RBwNG`<{7qAMZcB`+`j^a`y%%%=I3Z< z06mYI)8y5dnv?%YbPyt3_)mtxzK!0|ML|kMjZDt<_#yfg2N_Ipk`D4P54N$V1?%?K zl`&-~W=PzyT{(ACgZoJ`<-#6?ODMaGD}AOJuB>*Wyu$cMMhkXJu}>e6){7jy|8#%n z`CO68O@a_^vO1NU{?6&U_gGSS+Il*+{zW?B0>(DaHc49rQ;8qXIIePpYnwN#-4*fk zX=x+0sssuhxT=Z;(y~_d00O5KI!JzpuN~}`bK9$?y@qL_P)rCF`|%*#*XdyjJhB)L zVNi}n%7Gn1H~~=hCn zi>ecerxe@~LQwmZ6GsBhO5M4bj~2`q9JAf9hBq#1570zR7BHiRji=LG9zZQCMSWJU zT#it73eNc(6bkFvo-08-UC)SzYqUvP#XOIy8s!a;UO?>1l~>7XTR2*Ch%QcPH?Z}O zXYh?U4yE&GQ=;-&Saz=YzxEVCK(2u^=q<{;m#B(@xCB%VjS!kfpGgd_>-y$KlYX13 zyssKfVh@4M;{QV=ti=vX>Td?=Q)Ib(vD}~;cSg@}21xd{dh4;-TzN}7WuLf@q!*Mh zJXTpr&%yN&XHrB2cSYi)Rn20pERy-@)uk$UL$yRz3eRamM3!-CD4h^La&ZP8REP~z zOhHG>dWMGF4LAu;S+U;>_HSTt$jp%jBuN#6hxP%;Z5uAB0Q16kVv^2i)|cdIr*bSe z0eD8(w?GO~0<}4zoEep!`$En57wa*aoEyB@lnnNVO`-{`8NxAN{LrO|e*x0sOEK_F zm83oU=o+TsoL0xr9lS!IY!P;2J&xgfBI9wTwi)A4feZ%+tHrVss?<29DMMjWMYJUu zk)pEFCa7wuOq2UI;d+MAmI;XtFqN;oW2f|+<%kuNPrsRYV8C8gn`n2RO{R7aEehOZ zDD||c++vNHu3&n;E%?=?N02~PN-g|4BS|_(YGb%vsToK^mXbhvBr(js5&QT`^%rUW zJL!endB7-Cn8L{Zl&`hf{CfNMyA7+_@&5;VJ@48V!apb}G` z1tF$<2!(ux?&el}QS}k&!B`a_oh*4O{8C%8B_kpsr%T38fGUb@fT=c`X$96tOVz)+ z1WQj;Qg|Ka&c^I-2JO3U8UrPgAkNG7}wZ{XZTmE+{=5d3;ZOTmhlVD zFNAc|e7j?SCIg?$5E$e@pMNxdCpR#Kqk+5d%FbA9rA-XW3 zRisDp&L)FW0!ebZwr5lbXsu|dgkks)sUOk>4F!09g@Q!-ooK{RuF)0p+q?|CheEH` zC$OHv(y~B=AwFXCDs2F)KI$2`Qf3EwZJT8BMJ?zYHT>Avr+ET3tzWNXn?*w$Hg!xY z!(Oc}+kCn+WZNK{N+6LEAwc~?o+cqAa#?~z4TuD4sxxT4&3lKTCo>=q%)Wm67I4rI zN(0lHdK7ro0S!aKVBlI{Sb@k7QB4=IwB8WNswKf%P!0IOldp|}vqK1lviEjW1glf!N6B@aac6Aj=L1OkrE zFFYvZC>F1R`RbuFH!B^Njf=`t5pON{2V}g z-vK3c#}Mv_D7(+O+|E2ZN48K30yn3Gyqu263pmE7Beb-MNTL4oBgAoVvlam+?35;A z-#l4hWYU{KJPse$tU1EzYoE>Q#t1aq5gP-iXX)peD%`=82S>DcBa*{+U$H;O(G_$M zJh!zN0=Deb+D`C_K<2uP7x!prw|Q!!+$! zs}!Dz)d|)dRLM$G*S-mfPw)W7=Of6(PwBP6qc5+o-%p1Fsn?C z9l~hc7*JQXiMmnF72sSU-I4qTGP{~jdprNhBLxrOux$?j;*bVVd6i)%8xht^uc=J> zKuyFnQbeS<52dcF5+P$&HpezXk~rFJdd1v(Uyh%_Ny@oqLD*mP?GdY8+pa9c{ zo7X?J3(v6>{-Y203``qr_h!`#{Ez96Q*aQ6}}Le}1`p^XcoyFShA+fA`p! zZKHf2dN=Zus(eQOP~VRX{HnT_VH4ZL@jPx&?*&gqkH837qjeuTwDo;n8bwOS8Ivra zM-DWkWCtiH?xrl_j?j_nkSf->YGl6~su3(rG$=HD28Gbp1@;&bc>o1T@*J%kl@c2?`!w?{Y@NC-{I&L@?=`Gy!r0$vrk`EEqnBPV=R?sRBbBH?i$;{V1RDc8NAkZVrl2oeb>tVB zId$lr40^$;;)F&~KSfp%+OxyvG>qoI?B{?}LkQ7G&tf$Ei@Sfamdj@KD>5T+0K1q& z=$I5eT%7?0agf(9#A-4F>GN3Z5fUQ)ez&~)@afCl&F$arzW#<=!PXq0+b)f&yyccU+?7R3K1{Pqn$9+Fx^^V`pFF#4#0vc$Y0bTPEU*t z(DB1=Vr5&JsOhX`=N^Qg!qfx!w5*$eBxN?QsDtUiCx}pxM(5{}ve?tQKC|f$j?G_7 z*CHAv7z)uYWqg*L3z(&TtBi9oo{c@8TOc z0WfSRTQYy>NF;)HQJoC%P>}BV^;9>mPAyGVusSvSofMBH4zP>qgyWi!#3`P}(2;W? z8piKIIbI`Z`nZ8loi1=Hrr&zI@?Lw5eO$xzXp!HLVN6E{x^(5&dTkoL6nzPkivxQp zb1Wz`oDxK8mE`Tqu|s9>Q@8W{8{Yq}(I#2bAO#Edmb5t%~?)kla`r}~08Wu7vA z8#f9BFwp@2t!bjBzsJ>-GO740iziMh;_8MmCrPL_+KviQi%;+W`SH^S#Earn zy)IOpZSCuzJ1t+M^b~~GDjVC^DMBYWt7et*E8RquEI$~auLd<)&-zHpXt^3Q#Bt{8 z3?#!y))7OKpc2xXOPPcL+Q~`@sp>Wa(Uj{Pj4RAFX(u)qTZa3q z0moBw^-dFc6DqX30c~SQmrEYWHh{ScknV4@?n>FWg`}1Cf&;*7Wteq)tity#S#wu|L zELEk75JX~SyLO)S2m5XToWYgB|HH}aF>BD6cp0UbNP28C@*1WWX3;ho3 zL$B5-7GN7;S3)(ZzJ*a7fBl(}>vtdTKYiYeKfK*}^WiP)WAJb9=?^~`az5?-yZAS* zLv)8-d5r>rAermC55L*vuu}ZbVpO=`+QU!~)-2XYI1P(6erobGpDDbg@3pzo3Anuv zjkQDK+%fT}s28adR%XIBbq=oY!~7&#U7ylJxzd&nv%o??TqqAU0(0ouQjmseF#a># z3@{cKjwddAQ45Pa(N5_G+1@oDTd5+hwaX9CT=|l#yDy8+?>>D- z`uFMQPhWp~_wg4{(`_K5ZZt|SQ8P%Wcl1?`FD(LM>frrAh{oz{HeH*}03i>%hb!N- zi%51lFJ1O;XzqWdpw3 zWumw`@69H1DkUH9B%hl_+Kof?dcM^!t9)trQ}$eonwWX)Qa&MxzTgyU4NArigi!vf7ORINdzwO7 zuzZxXa_mUBU!zkSaUNSiReVaUEYI6Cu`2BxMroL|P?Ht{Ot7S2?aZX9N9aOv&LUsH zXIT8vls9|~;t3hW5%=`6x9?)s^3=18$oI-8oFv z(=M|fG}!@$O5IHM#jd9)OJr0Sfd#&8v#A2fI|krNDxX42WTu4)9gGpAFd$`$WR}pe z100v3sbh<}Z^mASm!2)Tu|Q?V??1iy+v4-x{hQnO=zC!|cBtDop&%j0_k6PS7ovR# zyI$4Y;_;Ta&pQK}80+jK@^=vQNK4n%Z|Cnm-s#0uO&2zsX;J%3huYI!L00|2QG=2w ze}&tB1*AhP9MMBlF3d604zvfEc81T{U~g|1jg^>Xra)?wW%$D6eAwkJ>lR%VrBgrk zPOUu^WnjBSbwNRBM*nmHPtT$=<>Ms)d){S{)9;RSOFJp&M*{RP7L z_q`O0$ZIejzN#nf)Ln_|&4ga*JrdYU50Hk^$q5A&)(OK<$jk`e1MMg{NyOb4$HBys zxKlbP>~)bc;>8wp8#cU%_kjWgn_MK;rxdXDirEUtRLC^jwLbES1l972wW>64tYy!* zZF$aiIjwm}B4GNBEPM7_Ux;u&zMQCIpbL3Qfu}?fytf)VD-^tpKDO9!TwxKhwwk0% z2+A&&P=P*~D7hSuG5wvV|JHSWfb$akjf&+9hFdP!;{~a9FNwXPwz@rBO_0-5PO^kL zTFJrGSbJE)p6$v zO#YN!pZCviU}1*b%~p%D`7&nR+eQTBo+t~OQc0>?&@WSR9($MRC_ zbb+ml2@M)7Xm#LRBsPt!4E|^LZQmASLtLs&+wI1EG!hYXFZhn z!7M7+U;qpLUQP)xy}tqU{p$ItbyO=hZRdHtF%4lxwM}P^#RSW!0WqyA0=a7zk*J|s zk}j18s)Z@K?SU#Pe?tuFwUFuEaC#PqLucB48wo;%cFgHaIHC)gPMu-a|lrMvx{?W=94x z!tu}t2xPu!mJRRO_sHt~9!Zz{f9S;E^I!_j=N-$8e;cHMVh|V@`i3S#iXAmQXms-9 z)e3b@0Bpg)tl<86xcMfoV^&z*d$apyh^*seTZ<{bj$%I6Tfyq^({+WCVDU>x&Mujb z&!7}gGaGm#Fd8#o0sCNYyo3>ui98!*6&6A+NFJ=Rlhd1zu7I}X;Btu1An*cWPuI&e zAW?gQX)n37iBw2Rc*J93^b(B~=@>fX5mZ1I2TKquW+y21{-Q@39oRekN797-fDq9b zu|YD6S8UrlA!e%2>AA6cY&Siu^~`E9~;s?czn$8 z8{URyvqzsrjrg%anB>O?VU`~s)W3NAVUG{ldwj^z<3sufkB=D+9v^e?4X*=Ke*8w5 z=EnzNnjat3KYe_fA0M)ZA*S>dTbkxP3N+LeaK|Bs_cxL)M-I56}vEDqk_v`uW>A)f)iZE$}CRR&>Ri3_})s5VsI$cBSU{szT34Z_XmydUEdvAWd{ai?a@QfM*cOyey z;ca3duaF$bFQH>~dH3cHp>{OwWg#2+k%$YIzQOP=Ss*wa^ad@+@-#W=NN*@OEcXcY z%Edl-AZV6c@%8P@`Rc_LZe5u%EC8EVI&K!aM%F{jm|TF88X|}cOGx4D;~Oa2n6$@L zgYAXk<>7t8_aZ&6$b}2za8n-i6%VlXfgWE5zGXbHIWY6fiPXBV!Fcly_4~k7WRn`? z7F02&+vN1E!uwzrNVNf0|qidBPXsz*(GIPOZS|&1B&#tO~fP7YyXEVf& z+|~r6v-1{3F~G&{Fgp_N^oU{AdK(pnRXbrODnq!iUUTsneXu%?vXq!BeuPI~q2Gws zTlfRxf20DyhuovJqC7Qv71j#gfRS#?RSxXMZ<|cW_1-6-yHv{%c6ydO$qG@*@WO_H zC5QRZhJ<`q+zzA)#$Z#3uMxOtr*ItRcxzPJs9|Lln_!|CXG4UHucUk)k_fVwD+tAI zaqH2xVOn?*55{NitM9g6ms_wR8&xY0|fYnS{@)kCR=vwYUuZPi{l#X~_p|FK!FlS;lIlW*% z2{wBo>T#J>yjUv3BL=WSj*s8|H+k z3L_w%L}e=5XXyxi!ekD#rx63APIE3++U{!7DAimI)dotfoYh^zJWJ6MDXHNIqcd=< zhe8?PggZv8HRo1=(^cBBfHu5iPhx|1?$yNCo~P0TeN@AvR;*?5GP@QQPiD^0csC3{ zVehsMlLl8XeK^Xc^qok+%AmJV9uLmb%u$*L6Yq6Hg4q$SPF_Y#@d2t?G&;Pp8<@IA zVGereSLH(00q8A-D!NEGaX!^tPQ@VvFwGpqd2V>w>T-ZiaY~c3+1#UiCpt%MqNfTe zA!H(ymMLeYlufL@OU}l^gJA2z`{61xdbwGhjGA^e{)O?ju%jZY*kYS0J^@J(F<*uZ zgqURzeUf3X)Ax?TQ+PoJ$1=Iv2AMNx`q%FZD_LR+u(K<*6UlGbMQkP7usHAOrTZih ziP9ekWs+BKjBelA$H$|@s}kDp3q2ZJWnXASPhj+faMr}adgh2kjU%v0#4)T<0zqE8 z&Gp4D;tAlz1&wL}XY<`G=Bv7-m=S+Lj&{~mpZDbtW{gN*B%vaGdD8<@N{57*81*_qFW#A|OMV4)ep&ej7 zh1vvBe*Fsb6}Dck>*(fWXr3|2ZuyYLH|{w|Bann2Zo}YXas(FR)8X`^i!a|I8lyG) zEcn%XGKkh%awQ*{eETgW`#1}(Dfj-H)$A*#IWxf{(5wQG<{#(f!Wqq$paa+NwFuq@boJa)MLyIVI|D+e3qLcuQ3{AZNZN~{|rF+{Oq-d`cI_AmW zdRQUxLZB~^qlRcOji*dHRQ4DMc&gS7cNScAQfVSX&8b0(2ZF1lB*nc-Y-j*;*3k8s zg(!6|MB5QPD6=y*6EqqkcH@Nhm#haE#R39&$>MN@my|ngafQkoFms$wC?{cw@p(Pg zxr_{{hcl5uWtfSaf>lsDNBYpLFr1{VTGf%hUy~jBbJ-$ zCz%dE^|pDcB&uu)1=&)FF3Txgj+D}Q*huL-6mz;^fwRjw3ge0`;S+cUweIt}uWoEN zd1MY{PTLHyxLDcEU8W1}4ivv?5oNU~0aw$JO-Ld+Nz4#T(*ZU**dSUG9x+H~uyZs| zXljfDF~dbDSJ2B65;x2?IkZ*ANswJ~D{}0}o34$vW(U8P--h#EYU|2UxkMH)BwqWG{$pV);3K{B^Ab*#Thh%j| zEVvoWzF8Ny%Svq=K4+}_bb=<_4D&b}v4UH9YJC1zAe~VPD7~Z<0}_gX(FtOZ8|Agf ziewNBXrI!?Fm-U~x+1Op#r|&r^O~1}t{1&_>MxY2!Mcnabv8h)g0Ej1(M#&ywdlEkz=oy5pF-T7gDc1A+_x70Qzi(NkSl{d=OB?{myhBFk459R4 zmW-kw&Pw;R@2XkasR=WqLdrojf0tzmpV_;6SIhaN$D4s$qIiGQTR~HG2k4Y-pAW zZVb{LxSLmaBKo}LpL$IhaiR=aErV5{bQ{kcJi9VVseXdyC4+tbbmLtJ%Lb=a?MFz( zHZyXMvD!77&jBg@SIR#qj{ow5)83+81uz}vocg-|)fk6zGmsrJgMiMPcDpZX1DIxe zvKU~pCTo;x#yQt$Gea2C1XVBu9cw!4rOMrriUsZ*lAbK1yOz)|w&$~^LQ>>l)~Bz= zBbf>V$e6W$5>)rB6^56f4PctY{U2eF+5C835&iPKUu~V2w=(W7aCRf8GE~CX>_({1 z8y*5fg<3>Y?_?s&T;wo!!1anE*hNMsyxZDtrSegObs1M-!WfqDdX*QofV!mEIXE^^ zh!p`xsOf@^yPmZugn@=mO2=fu(NvvC7JHnzzDqnmzmvI` zxq!ze*fgYE;_Lhxg{SBQXHE1QG%big`7VHv1~xr}ddw#1f?9KBTaX0Qa+It@T-s}A zLRxI~f)XhMVi^FJKgpYU(Adm6);y6ajfY#BNHjq?>U+JqS}n3$PlvjnP&JGxz*Aw7 zjAgRc!d?X_sz%=mpwFhVil{bhp)D5uF7Olj=v1Ny9MW~*#wk;Tt=a|*-E-QUqz(7~ zytmsQJU`ky*c%S^j{1lFyJvg*Q#iOPY0Z4JDcQ-RRXT_0J2V+41ZFRf6X*g4wZ#fK z8)!>-4vYd@+ZRxoE3!^}sNO;GSU`)#^;NI8g5o!ZohoJXRQ+0S!I;1&z{`h>0*ijIZg#4>Y@z>3itYS(H zQIw?_q?;h7hD=b@MNljb*L_lKpyF$rAdH5BJQzHv+-(_=N$_%fhQ=hx0ir{FG)Vds z?X9-a&NdM56Ig_&rUQ@cZvVyXSJLa@2D@Fm?I@O_|pq&mNW>ZrGgXhFxW1#+mXD)ZQ zohpHqOC5{!ll!q@jQtXkwpe=ra_sEQ$cQrwcu|a)K;jxhYltXX*Ue!MV%5yq#ZhNH zG!OV8yjW8+6EsZq1$qjestSbhuwf+hR6V(Rvgy#z3hh)Xk4~EI=+eQrvo9a2r3*g6 zVus-Fr3BjmX?VtDB^L%yt1$1|a9P(oG9z$=0wPHONSqw!Uc5SvGy{$+^p)cOs4TsF zd3O8pEsKC;G-?BlsSwLi@Eb{JGz2M7x5r#PG8~8L3&pq=jGce1rL{&hW`(4P>VKQ` zl(P~!A5cHJZ%}K^_P4IC=cI|4hy}CtcLb|L(SVugOhu`d5p4*b#Op!xq$Eu(<79G; zu!)OzACd35`rkpaqYhSkfIbfQq@jVms&qHW?4awc8RiN+?GcnRWiN!_jo+xKbA|yX zrhp~5v$boGo-B;|;^R$75HSR|q%VpzD{CF`d9!DE6aL9%jC#%f!sq)VjN*hZ*)vCP-+QO5kJ) z8G=iG8+|(heX}o=p17F6T$O&=W`b=By9suys^p6HSq5oJ@yt}BvZM7z6t>h@SZ&v* zs0F%>19HK<{%19$;y3+^>Ya#Xk(dLJo?}uSWouUby{2hY2vt}s5Yt$Kbr~No69^1> zUZGdN0L0$UbS5>K#17$UVUgc~3o3ZFP}eBh5ThOVutP(IWM?qGy!?(lEvgVA~S zz1XJ$jj%}+J%Jy7qy0OFJ~)+Dn!Cd7@#@gfpiz@`H&Eig#T)y=m?UCR};LVdrfcHJp|e|9j8@* z%YGxkWxtwuwDQzCA>=rR!!2^xWnX)dI8yXT>uZXSsLl)l5M>AFa@F8#lF+H7mMWFcE6O8~zB!?Gon(*&jQF$j*9oJ=?f0nZ;SWOjQWiyH<$v z>z^uE!?&!lHP<5CVpW2)`V!9&>I*|lj`mVOD0yzsf&=h+$^GIkJI(ZjVli6ST_|30VG-JuiHdMZaZ3+xiNUG03PTuC8dZ$Q zvvfdTk?Ap8z(G=WR6dkt8C8&gv(}yGSaMf!+^|1-IUuW2uc^-EfGVroQ6H_1kA@~> zc-=01St3aTrXxOF=ic-#EK>F^$@>7d8u&uvU_Fzk& z%gg9{2j!LJKGI1?zo@nh5gidt)qhv$7j5sNb)TI5S1uuiMY zQn2{Xag!}#864d|Fmz$0-2zeo!ozv;39S!MLMAU2GSVvo&(0t{m07Gh)<)QDj8I0@ zJ4|9>*fB4Y}}8WIVlSg1f29ER!s zme7F6b8Z({XciGd4=?V%N^BidLejLfPy2_G|L{61(VOZ_KnVK-*<%bm_4alyJz1UC z2b0GhxagtWF_!cNI-jDs8@8jB_07k&JRUX>4Lzcc5*ik{0S<~4;?6=;$K~w{( z8;?hq*kbf?AWvmFnz7$`6*>Yh4A+Z%!N9b0zBZ*njFJRC)MfNf-mnb7XUd1MBw=sDtCk4L1h{4g4f&9xk z!~n{9Fhw9S{a*)98X+8mW(dbX@1G25{oNM}D|jq4-(?9RD9j`~EJ?h)G8{7d%#NIt zRsn|YN+p?e4|P*c6c~AIwA*1IFjW49$hhitp0y>X*Teciy2dA=EuEp(C$#cteAZ&X z0=pbY2vT5}GGqC^o)5!7qmOrYZ^4DYWEFl^_v`ahLKW@)r0#+r)hCcAbWmA6R560t zhAHs0HhM^Um0fyrjfx4T5Jc-+mPdlYnnfFtwyq~(6n=Ww2OnRY@GGgF(#}qI zaQIAhz4|VB8dV`|*TwDE`#YKfa8XV%$3adm&-__8a%S<|u!GUdrWNp=Sm&1A<5GcJ zorDG~%@!p?`DE=~dGR4g05Dme)oQAsv zr-r5Bxvu-#!b8dvT0-i8G7}D#!~<@2OaoL4oUD;C!!Iplm9 zQ#gcv17|ebb~aDwowcH}0>ETY9tg^~^fjJ3L6HwuklpkKe;y1F&3~}F_k6IwJM0hP zMC~6;kta!JVVN)#EJbe%QK1RdhY@L`>j+L*3llAXn><=|+Vxh+B*QGZBFrCLSW1Vt zXl+}NNN*I}VB~l^3V%R%E>W9kr|ra-+zJzv5?N7l{p(c z={3((+sk`r*!GGN03;lo2g+Kr%d7d-O42}m3J=COGp0HZ?PWV_6NJ%VXW-@V$7W21 z6uUq#SwK+C9sE$yBH)7vsEyQkY*uYoXxHitU{piK8Pwc8M=!h74M3s1UJa#4WA~ZJ4%V_Z6(ZHns)$$rIEoc=uIPYHE@4M%1ypEq z4XPW9P4y&=<5d`UP0{Ume|t& z0&p3&xtGM0>hcww@HZ7N`cVrwUDM8)l1!FRb)vIfzV7 zpw-TndKV04j?jH1DCz^!*NGq32Ct@R1w0mfZoKpRQxKATV8WpScNnPua&tC2Jqunb=rAdVD5}+A5;@1aZ(d$a zuDmoGHIptVcQR8N!x}}S7Tw_oZQoh(#@z#K{mKUGhC#B1lk#w;5TZ1yTd3kt-=ePo zHC65b&lD0(4b$RK%z|!uikdiz7o;`@qAA)cKZ6oUqpeE5w;*|NoT(2T`&F%wT-|Abq}fXxQ!S zZRDlW^(mPrAiY6t;frnA0O|tcR3KB5S?K)G%Vi!Y8WuoZLXwPI9e@3N|KCGk;(B7=!SENNF+u= zRM_7&LNAoXTaxbGKu`CBF^C`)$RdUnaa&R6sJ~kVZ3#!b>OmR7YliVD_Vuure{YH= zwjx1rchoO#bBxkV0oGfmr%X_?CmmcYcTEwn=Uch>hFLj4X*DPlBUpUAcTv$dE>r>1 zaFXWaKy=H-fWBPA+{FZ>l^%QhLy3ZPOSY}Lo1vf5O{pU-5I`~63>Xrabfz&*%JO`^ zx}xRS|M=`E=%h~G7z}LR4=6lT7CuzPfy0{t)gvOP?Hy?#nmR9vlE_18g-FTCq? zHl6QoCLn*KwP6}SJ=E`Jp7k*-VqNuD%t?$nwP5iwIRBJP+C z2@jHI)l#9Zy=vkZKbUS&5DSY0*_w$1KVDYk3rTpjvFdib6GL`+D+=n8yyoT`iUYkA z(I=7^wXNeoP~-7*t*yosqD#iwglXd8Nt@2F8KIw|t7;09*!k`sKfn7!N<9&Epf@S(+j|VIFYVhpp;4NNISifrf9c3ca%#8>2PUSbLtS2A z8LaBnk>D@~L83Wgc{C5OQ1^D4g=*i6950h5ZL3@_F+|fQqRrq96x#LOp~Q=0rZm71 zrqUsYYDaYx?WojfoC_TJo1PZT8u?6l@)>HJeZpx6SWQpM`G10GxP=2b;T-G^(Z>%~d-d@nSLA8l&ecBe@D^52+8B4 zH5*~|D1}$6v2eyZRjj54tHTANs1aw6PL8V^)K=>w>a}xY3@YBfWr*e$qDfS4t;*uo z-W$qrWG&n-`8MNEAAf%LiH;QBbG|2k9A8bLHI9zY(P+lv1)!h% zFK;!|8rd0N;G-_*h+9kdWM}~-p2&u^zd=BpQ*;b4OsC`wCZJ?fqkwUw?=Wr3li3j+ zEe3kDdxWq=2rf1oA_27#S{$z9yzc2#zKxLX&IvscYja`9;somfa_Lf294J1fJ3>8RzMDgeA$r3=4;E3$Fx13>s3^Ic5-ff| zEeqmqoKYBojOkb%iWy!KD3-TjnB-7myazH!z+HlsxJY*zsnLseYo9|@~b^3FErat zB}Zcx_=>8y!WXiK!vCf^>MSEo+dT*LpIZS?Iwvf%0@J+DUxsg<`j9>F9o5n^Q1h42 z6ZQ#DX7$$wagoz;%H+~b57^2bl?8@j{?N>j3zzRfwQQoN71WoHv$4(X)q+XtP+5pF zYd=eMq-%fFxWsEp+tPT7_ZflZ!aol~!}tPi){s8mIHw?KXiq94DRDgxL!U5kld>G;1~_5gc=V#aS`XaQAXg7$)wKz$Rpre zM3`ijPFFWNkt!{YN8>ZZf1uj{e=rl-2@wpJ$jxHWLHsh*SB6#-$q;qGZL?zz6D}$y zOEr2hllTb=Cj2kFcg@g`He4&CCpD54QmE4dI*bQBk>CJdkp47&LBmdUs0o`cPF6*# zw;kpzZ?oSFlnQ)VZL}JqmnG4UcE{rnZ+G5&c&m6o{{7(x)9#=CyTqnYFF)S?^#0DT z0UH0$66l$v32Nx9Op790Tb>^==kcvk0OC=#28M z8Z5d3>Al7*qE<(W6&px6PmvfpF8|fe=7*N}Ucq(K_J7NbYz+PZf6g#2q9hJa*I1l^(W=Gx7!M`POB+8N@C>mAC><;+7 zSzdvOpOhuTI89u0OX`HSs@A~;W;KAC?aT|wJRz)S8L!LRVq!$$Z*jQ-7rT`zrO9U_ zE`Gg24GqkAVaUxVp|Pkk??2w4zZVMg{@OF0q~iXi6RSzK6+uB+3~#YrVr&Ctc-NL0 zcf=*a1B1t7IA&6{5zGS?{wB96B@12gxX0Saw{a7F72p0#6`3j>m&j zS>@v(aYFE9@nP7EVZ6|k+diWJm{$cfVx(GV$F4Rq8Yk z-VTD!Lp_4pX&&jKhtfP?QMdNoW^ zq{a01K;epU+RJ5ji0=+uYu=%D@9aNm*@0;g(_ zzY5Xb`Wm+1r3K4XHBu#`f)b?E00Zg)W*is;>1WIHMXx>-DsmpFy&ca^W~AHBqw@)k zYDz%J|8JktNQQ&0q>Ub*%|kF_928Q%MZ*zdL_yl*RhHp7r$)OssBJeW-VIl8u^>8>Uv;wxi<^)C}SI3O3eBbVBe|Q#FOX z&RQ}K(tHO;JIovn4i{jJB4btxro5P3DE@=#*x_MvRApRn=OEo&GcJjGx<0h|clr9z zWGO7AB|M_67ZF2dQqr`#C`6J`BZ#j2Mi)*w*-FSE|79>Z-T-D%IehV$(N8FPzWyD& zWm#Gy!7-yo6k~lw(;EUZgMdwh2mNDk9S{%{M+yK*Vm_s5OGu531jO8nOgoKkfHXz? z64q?M-;^(+x`@CgR@+A(8y4HQui?kocT%*&hn}D3SyO}_uOi__`P=+c@0F0T!xbD> zbeYld3`YvY7HSeD`B05U0G+uGQUGmGtOhiF8Vx;`VFXUY1>wdrY<7Ws`Ss)C(?9M$ zpM3hqN6G7g=DIK?T%n0bF+)||qQNB(^oe}!r{C zrO0C}*9yb{7^KWQGq-d>G@Z)H2X!eQ!?%j_dIUVL_!jh?KcC;k!ir~Gy&O?0+AFOV zF-(rD*9-}ypqXKQHa9szRvv;Rz>T#6&__3ylN&TjN5`8b^T~SO?frT0&%56_4`+oH zg`I~<&v~LH^EY7H7-q0!g1N16&S)VY<(_I7OCS>@gB?j{QGLTR>~#@9&~+&h!jIS= zboStLji_@_v25`ou!Ea$*%m9$P?x17xNkI%`Atn_8CmUlf|^O zz?v6rHn8R&VPjcCIkG)goY1X{jR`v+s%BoT=QksySm^TVR3WA+jzG@FZ)|dd3y2Bj z`ku5qsXF}uq`*GgI^J*AFweFaHbNMD$t$1z1&Uo~m)T@v8?Dz%#U;y9Q8^v^2S+IV z**|!mYkwjZ5E!XYUdXJJbM5KArMY-u6BP)fugrvM32YXpNh+jR%@@vq;4BcMrHO&- z=;7eToeE&WZ&brVq~;409@WYh@@CTN`v8FiFoFj{^6i8Td9?I3ZH(<)*d*kAk>a!R7G zV0Mt(*P`tI4}13=AGNVId|%iQ2mz9iLP$blLg?UlcfIyHK)@ISrWtHgQV6WqYeMK9 z0)!ACy(gr1(tGc{_uhN&y?37Ln)%JHBroTj`@Hub&*yz#KIi1?(P&jh(r9Kh8u_M~ z4(^iMXUmG_*{x~PF@H&tNb+j7qPJMNA?q;qp^GOFWzsNIrnSQZ`O3I@<=V@Jq0Qu7 zZ)w&yuU2tx1RqXleCF;e{Xesxm)3yUQ>nFNUiQlIbKSzmMJTm-U%`q zded)H$l&B=4%dA{Z?;I<7nT* z%$DUCd&KuDsXxxFm(xcpqSEPGZoAcTapanqNqrqrxuAz0hrpmMrimleq(qCH-UZn| zxvffhtRN6FOSU77>CI9G;nPp#NP(K0GxG=H%-r^VEnNhpOLgEgp<`pTt~HIT zs@4We$(mwPo6h~o+oq8=bCn%2V^zwDG=z%%uUWu&gvmE zN+u?;zPY5O&J}5Dq(EbHG5aA4mXmEQ*6&1QZkQu|o%XqxNS$%;6#HmeOET_5&3Y>_ zQJE80AJL4E-PRhn$rZ`4GX+TE%n#(XV*L^f#T)baHXZC}l(|Rfl4O|B2|C`m-bH<3 zj;R!ln|z?lcMx+$+r|#t*r=_AdeM#@B@YsH4PytFm^B3=WTIzBmDaJT?M+%=d<{>t z$C{q#;kt%74>ECP-vif+yow(Rn_V=$EnFuj*_|jK-z_OE$o6guOwX2yrTdR0Z0$(t zq{xLz7Luv=_~ytQKKW6(evQNZhTP9&J1&YtryFOEswvm&=qgSf^4CEVjj z!F1WTFIVe_0Nf=c8EUpOzd29*y%}wZ)9$3+g4`F|^}=?YVuwkeYYJnW{W_=iq78k! zo%)XZos_ptBIs_)!?p066~5`~dffQ(A#&tcE$#HC(_L@|lR=xO zw>D=8o{=tZ@MjI~Yl+(0E9E8A&#pM!&rTa`myVUq*IjV8BlBq1ofzRXql+#{@L!~w zzmISBl9!qrt*Tt)rE;6lzI9p|8C~G}+nikHa$;az?g~+Dupoh@0IBuV|N7yZ{5bgV zP4gBxoc{N@Vs-!OeXdxxFSj`*U3b%*`C2y8IK6f0m=b!lE62)nV1Mr({lJg!Wki3oUnq)I>&q)srX&~4 zqIuLd&*-;eG|Tfh*~m20701{4P`>Xd`HytJ3s#8b_9}N$UuT@MO^qpACS%IFORrA8 zhe{U|(?3O?XjY7ttTf#1j_XfLF1cqg*I%})Uzy3KePRDuDMxNxl)&!31g>EyD{ zA<`7>E`BZ=X73pGVl!)fbg{Qek3rV=`Y%$Ts-s zkT!DA{E>L}A&`9~z*Mia9%LSH>GKQuBU3r@Pc+9; zPX$+NGUI&95eV*lt~q=O=DsUqZ|IVX@tGM}NakcR@9SpIB^xxWH;Gj~R36x9)+1w1 z2CoL`A8oTb`-+5IQo}ffGmm;JCvuWkGXE&*;>CvJrKUUg(YUFhRvn~QQ!R0{8 zi6?!wbzEwb>1iXF=18UqDaR-b;THi+qPY*tgx~B9MVcL!w2kw&u^#JO1FaTSXi>wS zhq8HfwN+9zx0|Yen@x9jCzIPYIZwi|X3e??c^sDODT-^y&_gWaCrKN2VAO57sc|=w zURTm?85~DUN`-E!X;P9|qm%^0(_@>MUc8Cv@l8xG*~IixQ@E53$W$?SP~ppLbHv(* zB-K)PksDq`bcj4SKezsi7K? z_BP*(XQi59>Og)8Hxx-WU^;VXejrcT#$<-O*1zR6%MAW!d-O?Xe!nXqbwr zc8)M1lcHuADETN-wRC2aN{>_te5a<|+X7L6;)gt&DbjY%Y$nJ(OvfwMDATwvr5jr7 zCV>%{6sV&FYJ~O8NV(Ry14)b)@Jb}$UDxXGib20TV8Es9P<+SN0 zchyYy%T@?|!^+g!0X;NR3yyvwHQmgoR!mhl6OwwYxy6KkAzxq9!8KQ`ki+8p@g`@N zvZxta<$v%K9f{?CFuOK`{0}!ufAU{!nEuRc9Cuk?e`Y_bB<0PS;MdlAF|xbFBoCsC~z#c6ilLz1@u;>^|tB zr@tGF#q}qZ95VAZy>CTYX|Q#n+L_74>GFn#`4!2TGwYM78Ky$PAX&c2?i4q@gLw7N zlqTgoGf80E`DhE2(<^%&%c;ZUZZ=IcWS`JzM@)G_GoFub=KjsWZu$I3PCxr2sg&5^ z{c!2v+u0~Q&GSF}?r%zD0-$*-zcG?k4r(-v$Y-qCCL|v(NppX_<$<@u3tyzM=}%t&bTgwV$JWYl5jpw~ z)GCtA^43AQd+AKwgd$U+xEdgVMH=Ett8smsO_JksV{AxIZFyn;v^5$);FyKRm)XSHKuB` zWMP%^U`*a0mMqA;X6}mPzVdpw@NSAukzB=VTd3M(OwOXcsm12}iCh42dV|Q-q2JIl z9f92QTU%Ap$tL~uAegrx%=bM5A(IQ}eSy!sn)EfD`An`@E?2lIItMGW^0K)7jSSzf z-N5XxGzXGveQ^2sA@YPv21avT)bxG&9c~>DqI;{YBu8Vets;`hwml?F?L~WAYe(zs=(`%qj=QTjzHA3c z^CTl1G>K~Oabu)YZ;iZxJls7?b3>#yiI7uJZ=3$=h?IPDbczVfVfW6Bo=bylCTKRq z+&C&`rjzr>re`-ypFK^!U?$gcuF0|ub;HMxma|1a`!2XO^Uyg?xNh%cI%+GVn<||42kbWOFrb^qLQT z*Df$u_B+#~$4fnXq%>mMGqY(wVI2uhPukuES^zS|6}?N%p1x4F$JXTB6VuE`0{!9iqu#$WokwNgGH(H8du$Fj zJvOxvNq*=be8^;b{t4y^l^cxviiH-O_1bU)0>}-FaN9MB%n{9iGz{k!eYn>E?bZImlqS zhXyY}y*(0PE(?DXQRZ)(`I{!$Xt*S9u1ObV7GaBGF)684)=AId;QB(5<_CH_Gy%1s zs#jrLi&(**<($R-SkEANd_JmXux$T{VWs z_Yz?iq_+#xKqz;LYC9g8oHH8me8lf+mmq`mZlflhsJpYwvo2 zE`8d;BHR5U`#~(tBTPFOGjPzg&^>sl91|(0OUEOb#e6ZZu4;n3t7<;4tvh5s#8@F; zA(vkj$heNOcY~{jNtZhPLDjG^qh*|SGu(nbi!^;@NbahNvGdalQc3+%t1m)dlhy8e z_Vo!_)TrRVu)59qPsWOmjH)p=c{z`H?c5y@S3$NXvWv7wSI()S+TB<>1S7q37Sk@sf|pf9z>%ZqK$?lx88?sH+ya=90if zJ?>J~m1@@*dHascVhC;izDYJ+T-#f4RELNi)*+lLWC~MUy!!!fgKL4g^OUvU$(M2}@YWl)iFw@C(>yn3@W}|4v zGL3eLoGn~LnYlH0HxCA*+MXk?Ov*Sz^5r70spA>3CwjC|Vbky}VR{N&Puv5}!QeFcZu6?a^c#}-X zl%~x$IO^*G#RlyGf9CWT~9+kr*<*2ykqmZAfoO7o?Z=|{<^S*Bm7eGkr!N@QMM zlf*TJb&jjMw@{WJ<)Zy3Poy}T4HVmKKyy>-hEY@YrEVBC6(aM@O24URwoPx@rmQu# z$aEZH&2-T4$C#DcQ^`!$+=RlGuVO62ww8~qltQJ+Z8Gta9s6rj{tK4;+}|E*%ISdy zQCo7?W9a&=+XZriZ~Cb!9RtH0O!-um9zOGaqc(&2Z$*I!vww15qe)xGqm2}V!Y0Qt zH!I)!fy3pH*(ye8qM6&gY-mMbAh>+wVUJz z(SMg8M12{F{d`C*Bd*&#S5F4lAS=%*q_0{u(1IL}v*)2LRl80uu2d~qD$huVSL*ov z^7LBjdQupg(nlLTqq;|M&KCx!k&9QUOm@@a%$k0V{y2~Bf zUtICskU}wB8rk!NYK}Z^u$Padims^1J4tSWWX#zgXHT-8GHSoQNKCB$$Chi{RqN{s zD;M9M;hCd>OE@sIOI*GBYNTN6FJMnd&Rmo>6&Z6J{3UGj6gZOy$*cBK9h7vG5vJUu zb4eQMzi6guiN)r-QXP<^Q9CkH5DJ^?E1R*H(t(UKlr1A>^A!7jye~`Pg?alM^FF2C z*rdO$e34iOE_1Cxrfv{*BRo&g4tKWGtr-fXKt5qW_9=OvDTHT7UL24ZpCP?~Ar)`oDRV zMc;Fk8oIp(Oecx)rt<1uQMMn?(cDyTj8bd0P06OSv`&>XNt(Dddbq!Lzkf2Rt$?=L}*&@pvKXo<+=QQ4q5jm)CMZAy_?&Z12uW|}nI(^ipd z%{B%J%gYXf~ayU9n<%a+xM8b5Yq5B=nn2+9OblS7t~F zJHaf6C$3Vv8ET6RT1m+EjWNBrB+BenlS7_)t9(<3+|-mM7nLs^$?&{2Qbd+*kOnrb z_v(u#zGs-)kJ5d}Mh7<5OWg$Nre7XeQ3g zZSw#v1)Hx&WXc`#=!O!4p7-IG;R&1M)5fzJ-$?UP0;Btoy;970;`&H@$XNF=3V%ql z2Xj>PeoKD@-RBVl;Gq0-Ich+UBl1;oRD4Bp{dw}f;WJWuXYxiG1WU=w)XPNi;C)xUd_A@v4 z3|}WC`rzom_&gEQVKZ~TILSRY5N#f+`Ez>deQ9#~5>vdkqf~1;y2-Mdai;Y(dnflL zSU9R_j+;bsbagNW|q(S6o@i2%NGaDDC80& zkM$^U75Jx0);CxOX(=bt-x<&J#nU#4?56l%lQM}XWg>kFZBkH2qS1i4^0H@^CTZql zL4n7kfjYlw$ICvxl1#`}w#?6M8(#s#*xCD}eB@KAit-YryQ7%Wn>#1XAo+nV2!R-r zJlSp3tW#c4$#%`i7TIiN%Kz%J$sElup98Xw#MHbWt=R)$Pm-Jm zfZI{_2)O%``HejU_901yHFRcj!2!X+rZh`lnme9EFkg+CBA?|Ro1Q;?P6J86 z)XF-2{h@k@|3Q`i`?Ka$;gs_Yk?o(wY^c5Qm&%sbRcmK+Zr0jX7wBFuS;T1KOm9;8 z($pxqSC^+!=>-c+L_|jN(N}hDBdcC+xn9tSNrtP1s9rBF}A6d7F943(l!0p#yY2ah^^0dUszg*E9^divtDylX8R zQEQ+7&>67En<YL#Sb+TbXYZF-rprKJTxYqh4q#2+|Hv?jzZmTCE(Pl7HJPOuwHh-yVqhZ?V23 z6^=4hifXxKYB#lt;n7XKrWuvjH1$Yl`UFTH3ArKIV`e_ey4+p4O*W17 zWj`@(h^86E{B6=kD`bp8D^*@yRG_TpAD-5p-EsG%!`+aAH@$FlldMy2!j*%^%NQMI zujDCfuBU6}W1mePxk+|wT7^slw2U$`$vxnby_9-|W|<}hTpO$@F4?oh^xn34tqh?r zqqlE*WRu+SI=YGNktqd~no-rfI%5MSB_)5!Jm%65cG*&0W|HYWE!V0PD5Uphv_QMR zWP@f2HYH72$2P5MqmFz$y{^jK$fZi7?X8)KT-v7GIJQzty#>CKq@9x4GHq1RS?FUV z<4)>XB;(8dU-7eZH9pq908NpWQkpG|_@YfFA!n=}fibnUl2-EH%y=67EzRM?%d06v>*ykv znbj99EiXglypn-y|J_V>cw0U8(i26`Yq>6UPwIx($lKl70WEEZ(M^nSXX?iOIDL*> zCBLt$8oGDpOBwzN=2Y{K3zBV#G0(^KCQ89botn{WMw?q66(D)q6s*&P zBF(l2&U5=fLn`U!lf%CIY_>KeucmCes$?Qb0@-wbai>YCCTF~91hxa+hPGX9&y0Yp z*MhxW%5zwJpHA`uvJkrJ?ce%+L$%V$oTqa`3y*0zP~@=?R8O>a3ZeoG<4HD{TA zx|}TTIY*$mAy*dz{gJ&pg=-nszANfL@YYR8H64k%!oO?lF^ibnPN$?RR5;A#!G~Y`(v3iKDRcAtG$=XO@8_)G? zS9P_a^RP*@*<9Tm^Sz2G^3e*LS!?ms=D0=F|LP{mj_8;o*$HNirtGdyacZ^gR$k~Z zJ=5jttI%cGn}hs!m^Kn|uaJF}fGL=m{s%gmRPb8YGD{}PY@;?^gvZ8}QkT@X&QD)iU z&6Zaw!&R2@%xh}8NJhNp;`S|&Ck6I6M5N9n&j(!Z6m5|;2Xbt=v_{G6Xa0aWQnc3= zZ=(2b-YW9PnL@p!faFbNR5H%C|2om}9b}Rn6HHD?`JcaBZ-xc4lTAA4X49oc3c;Db z%xRSgWv82M)&rp3+hW;%EipMBQlvHqvRVtOaxK)+@Mbf8?Qmocs5Z;h$Q#+glPeHq zwk(@t*^$Hp54)ut79J2+-V@r?*GmJ(Cevo3g?znGq_33u+O}+N@Vd!9;*dRdU4_h; ziFSd~r_a9c$VHe5o3xOpB~nS2^VU>1qh`e2XlBG+_m)WD25Re@?p~WsQGbsymu{PC zC*xk`8)B7&)_$^?=4!2Mo7c*HNlnGsUww@fNit_kn05~Hsk!LTefs#`s+CUI`)E~H zANNX=w*A7A=@>Q~P#@h?m^lZpHKGihTe>NS> z#mo#Q9d&|frjVXV_91yDWDcgS^~p2wn#>Yu^7F@-MP(lQ*j^0sEi+Gw9d7UK%lq=Q zO;S^9`PxpSSGL?FrLiP5A$uO#+N@*(Adc!Iz_AKZzY|QwAx;b-ZE+}Z6Grz!$EnX0b6~+qZr)NeAqeao; zqOxd7-$-dhMo2LckpeTdBvR~oUK{!UM)}vw%UjW|OPcSN3V zojqi`@&`7vYYi?h8l109%YyuE-HiVA*5vz^SES3k$juhmzE&nZ%zo^ksjarpwu?NuG9y znaQ80J>g$YL3x{&JLIv|!F$eS{`q>ydkD*4+Dkqko2cPnVeem+y7S2IQ~&z+FSb zUA^rBb94=a^1be%`0k@-Y$P{uQy@4{MzioHJ>rQF&g{yO!{MCY&;Jx&P#Q<)P)3yC`G6H#ihOI22zIimwR8 zSBBzc;A@%VugvyVdXKPudf(0Sri6Y!EcAQ5db0oWz2Tww;n_&}E8nXM#aD&mM}*?_ zs>%M#_eO@|M`k1CuY7M*D1KBZesm~)bSQpID1J;RzB&|N9f}_tiq~3S_Fuj?E)+j5 z8!3O~d$pnX@bxf06dyjnCx+rRH_QIZ_x29O@12d5zw*6(L-G5D;wOjV!`J_mP<;6O zNrvK+=KOmqvzBD$Fa0CmONHhSUoYuUeA;`1^H<9adEWBS@}`C659g25L-Er?zn>9` zpAm|m6^ftbeZ}@@870qK8Jd4iX#P2&_<5oDdFEP`MS2gJ<*f?MzaTXKf>8XTQ2ZjV zO`gr)v}~8>Ei%U=d;eJ!`u&p7@5A@wWuf?GW_jmlmJ+_-FAvSX+|2)8X8!Q;TN#=^ zoSv&f@vF@8?#e7LoL;L#^RG7Zug%QAI`fzQkuUdyV0mgyC_ej3JO5#!_`^ftBSYb% zL*Zvb;pao)V?*KNL*Wxc;gdt*^`Y=-q3{`@@L8eoIic`*q3{Kv@P<(M;!ya~Q26pt z_{vcD>QMOFP*_Vx*?;-ojoEd-fw|$3onwNU7F`@<~0PuExmIB z;a1+Wf$-*Dv*!NaxAvle@D|>Ifp8n|oItp(_k1AS&TG-azq~EIvOst%Z*CyGwRdqK z+}?XH5Z=bydNcp>w)I8_!rOUA2EyBWj|IXVycR9}zu&>D41_y+s{`R3z54>;oxFbn z;hnvKt^CXD}`$Oh!Ed{Z0FPRjQ>W&+8KjSf4Glm)ia}gj<>QN4z{a1$2A# zSwVZPe-qZ{0_~;#Ttryg|JzIbw$gXX==vrQul2b0Qa?SA@NXvE&pV9pYbHFvJ0m|xrX+j|4O2Sf2M5wB;?Zr&L08^VJn++ON;8w26N-qvzT%c4x%eS5FM>r7Y* zV={lGS4`M0Z?rce5FX|w1L5J`(m=S%J24O*;awF7kMtf5ghzQF5!N%Wy;tr1Ojyt4 z_WBfS!NOUw=uG`8?*Yk~Qx?pfUYPQBUugQKRL*XwSz5QWPCL{mQwyihneChGo49*} znO=` z%`V700XnXw**2M;YnmD6(#@bhA$vxT3TRl6w7Zo$-EJ*7y)W^$aznBsX`{E}ir!SPZSfywR1nb1&L7AZ>>mHB@Yk1kE?uSyEzjSZ!xjWQZ%vMiE_$>^MA@zP{* zLt`|VPA8-_*ZgYA?DUeE)9a@!PS0N;C%61kK2sivG}IRtr<2iGEFpW8P9>v_MWwQ^ zM5H(ou|I4~Cl@Y~aldq3vBGpws;n^#nDuKW4ySiI8u~I6_>^0b|a-*+k!=N^%q5j z#R=K_`udVYtgI-WDsD(7i{mBnWFjuRRUa)Ww!c`gP)2}VXn&E47B?ni$;McHDpFch zQc@DFuaC#eV#%_i(sZKOB{@Hc#tIwcU=)`oOA?L6vfPO7cu{?EG};i4mL}rq2D6IP ztOe5-_|h#FEi7(`C!*4Gzc^JCNhYFY$+FUTw4^AVh!@w#8xv{!yE*gIQ&O{HvTY?L zg^j7=l2kGkDN96(}HYDXRCuHr>ly6njQYraOw4|`OF5_(YLoA(2l@-^=O2ey(L`w_f@o2KXq`tl^8j}xLH>P5dhDfA1+8{?cQCb|c z>zOro(Uj!;S&K_$J+eE|()waarc`~jG0_l<#O2hDH-95l4?lFN3&D$g#Twtm+B!(lora+vGom!;&^Fku_SVR zLJp~JU2#gz+@gB_WnuE@ndxcC)G|$uXkj9nh&04f#f?QJsYt!Nbk$HCFG@)Y#bWVP zx-rK38szNL{VFRgYDkq86_wP-WOcHRhO$&LEi2L^EazNlV86I0*x$wzg{h*_cqGvf zi6vr@M7pRkSyURUk3~}T$w*^KqP{4&b7ouTo8wkoQW%ppq?4s3r6u)p$Qw%15&1!J zVUXWA*V?!T~bmcXQCYK9P3Wa znZMBPcciePJ|)>@QCVZEL9VU_Npbn3EE1CwI$acLw0TP~yKU5W5N)bS&e<3%DvgxY z%MngX7Lh7RMB@#qRJ1fMNs?>F&95`bt_w&Pl|~yIqK);@($aWiOmh6k5G$P$`O5*jBttC>DF*Y>D)6pDzF2BtrdSkk*Q4X$L)5S%y z_Lyu(Su84fv2=EimBw-%aV@-<11=|jI-X8Qej=&dASYX_QLd>5$v9;*lIdKjmR`D$ zA4luUN@Sl?^{IwfOjaxzdqb*NuFLw;(uR0C#}Sj27MB$!>thX#sdTYqD3Wi;$(3k~ zmPI5>lpH%=U!TsrplC**);`U8GatQRZXi4)9SBNvXo@RLn8nEmn03=rGct>&gpmom znKw0EUygKJ!aV*-p`Yi9(n5+^gg8YC4f7ZJ=W@$*GwB|O7wV5Q1(?j@Y^ZkGf`#c> z`fjU~U3~j$V%^Gg?STopCNm*0l)2kinSE?>(SqzTkqI)~(V|&_Df)U~CV6B)_2J3c z4KmPZW>Roabhqrfr8!qwlY4UA(oIHasd5vG+GLb2Zj+I6wwPjFW(Q<~Eh~Cnozw?f zw{GV3QKi9H>sqbbHS>l`Wk&r0i=`gZTB_ZXG+r8+r!wDA;_pCx2Gv?BIa<%r-(SS^ zOZ4};JeH%Cr963v++3CFveZbt*4s4mdT3axzkO7x_G%k;-fo^}+O@lQ=DB0u?w+@U zPVee@AL;M5YvxVTa8J+MPwnM-Q`O!qw?i{e>!CW|3Z1@(=N+OJdEQ#)bMf<;?<3~> zjQPG&i#_i!Pj-x8a?G#nw z&sMuM%f!#rupF#F{O;NK1ixRw@7JnbIZwJ_ckI#3lO!_h(dWXtK5ett{nTeex}PN) zmh-^uhiumk#GCVK5$B`N8jY8*B!$=dV9%4J$-2h#%=U@yye-gpS^gk2=Z~y+9}OQN z#~m+0IR(x1{qcNJx6^FDEN7}tciSoH@_>eA|6fpL|K1aIezP2zUrtSvo(HNj|9n;E z3op;CU#4H9@p3#gopd>xzN)sU)=wuI$fXs;(#>+h7mO>Vk0g@ePW~WhvEsi9(DUQUR&DL$M7@!2|Ya@CB7~8!7@Au55tr2 zT)YBr#i#KNG}ntPU)zCnJ^x_yJR5F}TVoF_#5h*r1We&vT!}~FX?QW-h1w2p(gUBt zm+=$Sd{F1xh;8z1xFdGM7!JbGxDQUlg}558!-w#Bd`jiyZ&9V50>Fjtiu^N z50~IdT!TmA@wgt(#;fsmd<0*__wZ}{16xWHwWi;;*cl749}dUySdVk?61)|k!uPSo zW_CU8aR>EG&+AUOKMq#qvD-MpQ*jQi!gZ=-wx&JOD@GzQi{WUWBXEV?6IT!sp;scqcxIFRMq%{g?2Mm?s&RZclsM zSv}12dK2Cgt8fxd!^OA`Pr-}u3U#gL-A?#%d{$lUdG8SZ27gjlNgKPgN9%TNgB{fs zp4WqL0{2o6^1RW6Cu2%o>Ur}CABx(Jp10UD?dQ7uOPPMPDv#~&BK#D-pw9EW_X&T8 z8=2ll+Ld)VJF7BZSHdOOU!CoFBMI+=({U;B>j5P!gFvHu2UQ2Iv~6OZ^YZxdbzIQr+Rmsch2shw?s@xlv5k3-6R^^_1A>kYF9#zUN zj}zX^lknNLex%d2o}#}iP-VG2R9SD4D%+J%B|QeIvJb;mIc{TBInI)`ne%0;D(9En z0?he1SB-eyQdO>lLsYrGj!*}A-U+H)&!?+$-Jh>YK69BW`OtN$qFRPLdf2T@5{hO+lIjsjw^-R5A?<1!DK<+oD-JntSU*ivu z{a58aSESCA{a0tp{;Tt3|J4Pu|LS7de|0JC3kS*mYgoz=b5$v4ELB&_{;O+c|JB1} z|J9>p|J7q;|JCDV|J9RZ|J74u|5YhR-lv{P{ZEdY98PoG!!+a>#J_% znfkXLH%WSP+$71(ajR10I+r9h$8Dl2`G_W!9=EhA$4!#J95>lzFK>{Xcd9HzcFi2O zb?Q+1QOj|YO*hBwbXAVqxvH$>B2|vt6{;M!>r^>zx2SU5?o#ErJ)p{QGsjsr=2;C- z^}JV9Ic{&Oa@;;t<+y#W%5nQvmE-oaDjWT$D#tBP(@l=s=Bn((mg-{34^%mBJE?Nq zI;(Qrr0K#Ox4!CX&x@&Y+)Vvcj@uv&%W)f~%5fW`%5fX7%Fger%5ke#<+x2(<+w?; z%GAqSsT*Yd>VE?J`>v<1qSPs@x z>h;ooMf|(?v3i5&eW~8)dB3Z&5R>jVbG^wymZlId?^Y=^o`&vx*+BSm zycTc9JMn&e6kU7Ni-cdtckyHV62He^@o&t}v+1-sZi(CBPS_c{V_%G684kos9EsYG zRIi7LI2m1g*L1>ja1k!Y)p$4_iznk5cpkd;u`3B*kGJC8_#i%x&!THLdz0|{_$hvk zKjQD`+SOX*+x^`Fx5f_G3AJEChx>`J&dMz9nI zUcgzs4W&cif1s{dSAZ>~?5B zaowH{*a^E}Puv6J*bmEb7-~OrU0yBjjZ-j1yd>diI13lxGBoYkGXFZlN8^cj8oGAw4TLYpYw>1u?cetkeiWa^7x8s`7eB@? z@q7Fg|Hgc&DClwD9Jj>na3}1H-LWsmunhJ616^Jvj>K^|5hr5`r{f%4g!=x1E^jp+ zj>qE3cm|$_7vq(9J>H6UYt;%RseZotbi@SH@__fDqYkB_33(!!{+{UCmr4omg_Sr8|EJ6U zzpZ`bZ1!UVUV+!6G(nm3*R_j0LilNP?ObmX{s6zjU-2LOpQe{P9{=0v_WyJ{O4y$P zI0Q$cG~t?bbM0DF2~R_5ay9Xba0RZxqwqvL9nZr{(6wVpQ=(bko%jGgj?bZMzj}x8 z$M_Zgh<~7Kw`xVcW7>r!|Jt5#CzLK*X8o?cDoWV22h04XJy;yZbkiOzVb@NzAJbEK zAkIVcd_d-R?NhGb)3L;#f@k4{=-Q>sa{~GOtxUfMA4ct0sO1dT9_9K;{k!wz-^F(# z9skq$!uinu_IdBxQ|Gf?%kU699FIfSj{2YG6K+4-@cV6WN9>F}(Cy#cMSJS?9cQH9D%MKcM{<#*od=mA-eY4LkS;= zC!p)kcrIbrZhIBs8}SajA0I>4Ui%8+xA7zV5?#MX*G{Vs$~3=fiS2MZ+!1H!JI)AgtQmFfRr3)~UguA2b{~IOj+9?MS9)@FZJno0CeeyuU^KdDy!o$$DOS=BUXEFUkyd1AX z*B*Hf;fL`ld=cM3*ADp^;crpLanbzeZ*0D~4ZHTo_JmFUW0|jjaCa<3*Y4P#a0QOQ zaX1NGdt)QvS-23FqwBZq+8Iw^x{m*$+kGxxj8~y+U(|6xbiVuXF?<$v91x9n?TQ}} z{t|z{-%*E#(fM6_Vmrb*K8Q{?{h-AzgnOZDM@$eNh(mES)}d=ZtS9XHOV1^|1P?~n zZg>pglkrTv053z=UU&=PyV3Qpev>S z?1p_&#~so6T>tFBgsX5YPQ?8&jWclp9)zp$2s|E7#dGi?yb^Cf)4yA`>psFdeu-}9 zGx##Tg&*P<_&xrH8*wwKu<3Hz;^coE@J+zTsl6xQNCn8X8c4lc%(==zf% zP52}{15N*O+1^VDUxPQ}UHBkAfzRV>_%42eU!&=dF3bOuu=W+y^w}J@!Vb6#cEvsz z!#%MahhsHPK-Z7Gf$$7;{n?ihJ_HZP<8VEmjT`U^ydH1Ed+`x`8ehUU@dNxEzeCd> zUee_s!Y$g_bZUd!;EvcCd*B{ef&*{}O7Y92yPT%Rt+4~T_LVM#d!lPsaP7?fm|l*< za5UDUYp-+d&1t63zmq9b<(7-6yuC?IE~xlPPiMobpB7<$zA&H!|#)L0M5b1=+bp9 z;iK^+JOj^1m!8)Uz8UYr2k{AX>G&GqckvVa8h^q+(e&5Ue1P=Y3OnE~==$%u_cmip z-xJGmIJ$m&69`Yn2AqMWKc}qU_18Ou>4)QSX!>=^d}kAO{q)>>q1Q9r^qZFX?j`&P zy8e0QJ#2}8lj$Ge=lC7EetGUa(iVC4{L%4MHQ(F@cSP48&%IZ=2h&S%01iRd53h#s z-Z&Mf;cRsM?^Y0AgYG@l6A7P=uHW4ygs;Y%@J@8^sk;7l&oTW~d3HQb*mf;|D{p!XL9*_HB3J*lrpKdAPRd^U4i>ILLM|UCN%hA0r zdn@64(Dk2titvm02ELD*^cWX(RM)=*55{$P47z@9XA-^uFT-o` z7IgjF9wPiCzJRaed+7SLeM9(X{0sAGpJSd6Y8n|WVZ=C5M< zSe%IaqwBvmlkfsO2v_3~==!alO86YS2(LuCY#*FSAr!aLz^*b|G;^-J4}a3#9;r)vrCgRVc?0fgt^VqA%9(e*<+iSQYCK3tEJDcm~eLWq1g>er3lIUXN$v1~l)1%lYg2likMjd+`x`8ec-!kL&}&pW}DLR>@LaqY zb-YP<@4v(!@OSiRpJ<8ga68-?yI?PjU;@p1{<5B- zghyi??u+#}9p~Z_JQ&yEF?cebi5K8y=*9`Sh49_z#tnFq@C*1lzK5Tp8&BY8!hfL~ zSD>|2Y&AW%#vO21?1p`@82jO1tirK45%$E&LF_KsTPjZ-h6Z8`q#M?JwKnPPiNP#3C%ky|5BTVJ(_*5M+Oogb%(T&@%p77bY0k6R8@ix2{AHk>bC43V9hs5$BtNl-LVkk=*H2g zAUp!c;Ut`bjW`S4I2+3eABsof33wWwix;CChvP=Vci{c_7(R=y;M@2Seu+Qe@2H<- z(DZ4E?a+=lF&*01W7Ji6d;P?0&Zp6*Dv+2|px5b@sH|&W;Sc-dL zC62;c+y|3*0M5b1xDwam(RdP`f#>6;cn#i+cj1Hh1U`?i;k)<=evLojpP0A3O`pwi zE9`)~U{~yeG29c&aX41v1e}ZwI0NV7GCTwi$K!B4o{byu3cMa~!+Y@&d>UWEH}M1f z9KXX~@gHm<59suIYlGY1j@TJ{;2v0l18@kA#2VZir{Xl6jf-#vuEC@5L_8hO!%OgL zyb15b2k>!x4qwH0@MHW6f5bnq*$y^+TH%(sJ$Ay~u{TDs3+n{*2Oq|#@I`zB-^b7JTl@w8#^xPuI&FdNu_G2>cPzv>_Qwhw zf#YxzPQgZ;g$r>x9*Rfe33wWwix=Zncq86{_v2&uEWUzo<45=<{(!%u4rpuc|JV+< z!=14U_QD7za3BuF(O8H3Vm(gBxwr%m#&viMo{VSW1$Y@=i?`t2_z*scFW~F=9)617 z;LrFM=F0$t8gq%#QiaiGjRbPgsbrgJRVQQbMPX(5^uoU z@jiSMpTU>$E&LF_!0+)l+=!d)Y}2VNZi_qNZrBrxuoU;gN*sl?xDO`r0Gxx1aV4(B zqwyp>1JB1x@fy4t@4^T1349)3!*}r${2G74KT*e6*Yjv|+zLD3F4z_OU<~)favYA; zH~}YP1J1ztxC{@$!|^y=k7wfsyaKPs+wfj|1fRy2@J;*xKgaLzSNsQC>|)cY4Q_)w zVrT4udteC;z#%viYjAIziqmj5F2WVK29LrM@pL>7FTtzvCcG0Lz{l}9d==lpkMS$~ z5&ytuyV~?=g&X-WbI)9E8Jg435YBFog%=JY0&a@Gv|UPrEg?7x4{zA3wuy@fZ9Xn-|!0+5+2SM=ZeZScq}#j}$H(wldr!D2iyg_Vjqm*o>-2`cJi;v*b_!7Q}AK>Ts9sY{{V2iFco!a0wxFdGP9=HdV-~b$gBe4ee#;G_B zXX7GVfot$6JP}XF^Y9Y98gIfo@d11spTk%29sC%-!XNPuY}U=DPb=IKx5rMnJNCvX zmf;{AhGTF%?uRKn5a;1iT!n|>v3Lreg%{%Gcpct~_u#|$6uyXW;QRO)ev7~0-`Kpn zO{XoeJ$A$b?2d&P$NpG>BXAr}!YSB@vv46U$3yW*JONL`bMa!l3U9_%42eU*k{sC+79G>9aX* zg&lAg?23IbhI?W;4##SofRnKSXW)EXhKJzccpR?BvvC7nf!E`0crQMJPvcAYCVqgQ z<9GNg{(~+0*mP=x+u)Aa8GGO!Sb_s^2#&-W+#9FjG@Ol#a0RZxqwqvL9nZr{@M^pX z@5Bf2aeNM6#dq*y{0e`>Kd@O}n?9{@OWYni;qKTQqgaN6a2Srk@wgwR@Iai0OK}w* zhR5P5cotrWm*aJKE8c?-<5Tz|zJc%KXZS7tf`4Q4LYq!oV0-L{1=t-6F^>JQ0!QFD zoP<-b5oh5-T#kq0k$3{0hUenNcop7=ci{c_7(R=y;M@2Seu+Qe@96De)2Ai2!|iZq z?1H^8f(aamLvb|L;l5ap({U~?!Gm!f9)l<2nRo$ShS%aPcsD+TPvQ&sI=+XW;y3s+ z{)PEPHl14I*0=-iirug;7Gpmgj8!-mC*uB?#+kSP55m=W1Rjs4;yHK`UWqs0?RXzP ziqGK7_!fSMU*Pxn8*aqSA~v1c;_55PIN7+2z2 zJQ`2JGw^)86tBUX@h*H2pTOtwHGCI8!LRWr{1fw{c0V`At*`^`f?cr>#&Az8$KhCw z6L2y%;0&CP%kU699FN2Gcs6dpEAV=}4e!NA@M(Mr-^35_bNmi}#ec9x%%)Qt+y-~V z&e#L@z!DsQLvSS4;NCbDr{Qc|ge!0j9)&03>3AMqf>+~Bcqcx9kK=RrD!zjs<5&12 z{(;SkZThsrEpdD7gu7#JjA9uM!eKZD$K!sO!UJ(0F2z-N7#@qK;8}PfUXIt{t#}VU zj8EZ<_y)d@pW(Oo3;vDG<2IeP!1mY?3$QyDVjTNp1&+XRI0>gC+P1;dZz)cEMg4!2}M(p*R}ra9^y) z={Ogc;K8^KkHM4iOuPUu!)x&tyc-|FC-DV*9pA%G@f-XZ|HAxIn@+89Yuo{M#ctRa zi?JUL#wr|(6LEi(@7|mH;Y?hB2jOZw0*}X2@f^Geuf!YhcDxTC#b@wkd<#FsFYtT( z4L9Ou3A^2Gaa-I8cf+1ogr&F_R^lkE#eFb|2jCoBj4N?19*rmA8F)Tkir3)Hco#m1 zPvG3i;gK!v*!ST2srtmrMh?nDacq`t6593q#BEEs|<7fCS{(^sF z^ZquSw!rq-5eu+87GfOxV+D@DaX1O5U?a}Lg}59K#Ut?qJPpsqi}5PF5%0kJ@iBZB zU%|KWBm5G7z~9juVAH21w!`gkXY7K#FoFpjh(mES*5STbkJE83F2RFw9Ug-xGp$4l`VyczGp2k{Af9$&+E@e}+Sf5Ja8Z;(x& z&2cO2fV*H z1NI0nb#ewe}oaUL$k zRd^U4i>KgOcp+Yn*Ws;r4?c`f;fweNzK@^bxA+VGjm;};I&FdNu_G2>cPzv>_Qwhw zf#YxzPQgZ;g$r>x9*Rfe33wWwix=Zncq86{_v2&uEWUzo<45=<{(!%uH^in-OKgYR z;m+6vdtn38XspA1u^y-6TwH<&<2pPBPsTIx0=x{b#ar-hdh?@C_gt#hq|B?1@EKihE%tj>1~p2a|XJ&cVgF64&C< zcoLq0=i{Y#4c?4*;e+@DK98^AyZ8xyjX&X^m^aL(&*r!lcEDY*EB3({?uq3%9IJ5x zPR0hDf%9=09)gGCakw7O#tnD{UXQooz4!<|jW6Mw_yK;7-{G(L54IR?)2R(^gF9kp z?16h=2@b#^I1+1cZ=8zLa5gT&6}SeE!V~dyJP$9ytMMkh6Cc3G@i}}I-@%XZEBq1v zz-Co8eOlp`xIK2l-LW@Du?z>{FdT#9aX(DqfjAGB;wn50kHu5)EW8je$LsJ`yayk~ zr|?C51K-Eb@LT)^|HkGcY&va$?Xe>kV0SFUIQGX19D(C-5>CNJoP`TN0s;6b<=kHF*cR6GYS!YlCxydCeuNAVea8Q;PW@eBMOf5VNq z*=U7UW(V?&3G3+h)>}2 z_!_>8pWxT{6aI;LV{H0tj$2^|+y%R0AB^FiSdPQ78YkdnY`_^fAD7`FcsL%1>+x*d zfLGx4cpKh}kKohz626Ha;OF=q{)+!#i)x!rZEzdh5j$fK+yhH+01m;CSc7}xRGfyh zaS^V-HFy-Bh^OOucnMyOH{qT506vb-;j8!#evDt?kN5{R8*9_26>f>!V<+4ldt(&K za1ai|F*qLg!xSEf^KdDy!o%=bJO$6f3-NNi4sXSK@L_xkU&J@?ef$i+#b5AmY(CDW z(-znsJ7NKL$3l!_f2_a}I1VS_6l}yv#imGCzy5G%NB>)@B1XV_SA%Zw}%}-p2v;@ z`4pew^L&L{`7S@;A%4m)c#hxmSN_FhEuwu&%S_D9ye!O;yp?ybChukwwq_^xYyQaJ7-=2tPYPbg z8<>;%S(K$&k$18-8?YJMvI~225J&PpKFAq-jElIOtN9#X;_KYbT|B^#d7NMJJb&gN zOwuOWr_{{AY|PC;32Ny+P(g}GROx3COvV^!8+LpEnS zc4Z$9<|vNmWIoI}e4I~m4L9&*zQK36n+N#`Pw*_i<1hS^NjpaSl!h63BlGZPmSA~S zW)0rOd)SH{*@OK#jQ8>ZPU9@j=M!AXb$o%Z@=d1NB+i0r)Ymt@H*bW zoXpRnEX|6%leO7^&DfS**qehmlK1gJ&fsHQ#N}Mg=lBv|=XUPm0e;Nm{F3MSGyh& zia+ooFEe?UXrIzCGjlK>i?9?cunKFjKAW-)JF^!Das#`Ue7Gd#R9yAWq2E_vJM-vIoq)- z`*1KvaXcsUVb0;>e3EOpfiLq7zQf%-$WM5JXZam};h#*}Big4l%*Y#=hc~kX%d;|T z@GjoNR_w?g?9XAmmk)3nXK_BC;7YFJ3w)Jt@;&b5M?A(;{F*=VH%59!`;&s#@doB( zeimhER^*+m%?517w(P>*9K?~lj}LMNALAk}=W0I3m-srja~BWrV;<+1JkOu`2b1)Q z_9-yhjI)ja4KhV9+z+h*K#8_a~pSX4?pBlp5#~j zffsq1$$Llpl#ZF1gZWs5rC5PgSc~=9lx^6Vy*Q8~IF6GzowK=+%eacq@L-kpXPdQ;%j`1?{gmy^E002H~fjeGf}^2e^T;#W??QC;4Lh}+gO!#*pSWHj$PS@ zgE@-hIhhZ04j<=}T*D1~nQ!nN?&d*$!V^5p@AwPnI%}Bm05## z@gBBfNA_TU4&%LifYUgO^Z5i(p^WMH&U zshNSp3RIg|6age$m~8@ZX=xPyE6A&>GTzv2(P z$jeMVDB7oV%*-6j$097n3ar9ftk0%w!_Mr*fgHhcoW$vz&4paXReY8&atq()PVVOs ze$F%emKS)5i3dmflZxq?l{c{aE|3fKEy}4 zfJ^x_*K-qJ<6C^6`*@h2@if2TPyC&UhDQ67lGif}bFlz#VHw`Ws;t9?Y|eJ<%03*- zQ5?_7e3*0iIG^MiZs5y&gYR%R5AqY9;8}jhU-&1J4vY3F4Kwma=HbmO!Sbxk8oZ15 zuoXM92m5mv@8tuW##x-tC%BU9_yS+$n|zOZ`4Nxt6u;(={Ed;}(f*|1b-aN&nV&^j zniY8`YqJ5Hu`Ro>HwSSf@8g43V5`*H|J^L|d@Bb>{{e2UNTdA`D} ze3u{a5I^M?Jjd_(EB|7$(a}DoWhQ24UKVCa-pV^zlXtTTTeA~;asY>OEGP0IKFS4L z%BQ)WoA?^v;``jk!~Be=`3-;K?@Tl%+MkrXo>`cS1$Ya~@HSRu9X4chwqsZJ;b4y9 zcuwZSoWsZYB-d~QU*;Qphr4-@pYR0F@;m;*KbiF2XrIzBBX49L-pmp#&&sU9yLb;< zu_Jr1KZo&NKEP?5#rb@KE4hv@@KwIa_qdlI@fc6>YyQaJ7#SPwPYPbg8<>;%S(K$& zk$18-8?YJMvI~225J&PpKFAq-jElIOtN9#X;_KYbT|B^#d7NMJJb&gNOfoLor_{{A zY|PCtJ zlld^`@NquLHQd0L`3B$NZXV<(Ji)X4j=%6vCVe2sS8<~eUvjoetGHdWI-osYx z$R6y^VZ4_Qa2jWEKA+%9uHy@Qm2dJr?&U{3##8*7Kk_$5CPw>{g4gi|=45^rWocIA zovh6UY{s_i!rmOjk-U!&at0scA};4@KF62%I=6Ed5Ab6i=a)RspZN!qOp5j?H8U_9 zbF&bOvm7h2I_t49Te1VYvmb|Y3@30ZXL25wa0S$54_urqscAV+W;6`$pc+`_lHllysupYsgA zpqeq+)tz~Y zpVBcib1)x^uoNq>3Tv@Go3af%vlj<)1jlg_r*k$Jav4|gS-!|Ee49JDpGWvP&+uDb z;3X!0ING07OwX*mi3M4VWqCWRu`V021>3V5`*H|J^L|d@Bb>{{e2UNTdA`D}e3u{a z5I^M?Jjd_(EB|7$N1}a7%S_D9ye!O;yp?ybChukwwq_^xYyQaJ7pA@`~H!vsjvnWfmBJX5v zHefThWf%75AdcjHe2_Ev7#DFlSMxc(#Mil!_#uz-B){ShyvWN;{#dk6 z>6n>0n2$wRiWOLewOF4`*@m6jivu}=<2Z@aIhzZ)jH~!8U*s0P&7IuOBmA6a_$@E+ z5);pf_9qq7Gb?XmK^9|K-p*>Q%SLR$_Uy*K9KzAOpHuh<=W;Qh;xl}nuW&2htJlld^` z@NquLHQd0L`3B$NZXV<(Ji)X4j=%6vCY>McQyOOEjm*QFS%T$RnKgJ9?_n!;WDoY| zFy6}tIE}M7pHFZl*YO3u$~XBQ_wpki<0*d4ANd<23!?o=!RvSfb22}RvNS95PS$1v zHe*|MVQ&uNNZ!W>IfIXJ5tnl{pW{n>o!hyK2lz3M^GlxR&-{Z)7DoG&ni-glxmk$C zS&o%ho%Pt5E!lzH*^fgxh7&lIGdYh-xPoiBk(;@VJGh4*@+eR8EB?TXyv*c_qJ2uo z%*?@jEW%Q(z$&c8`fSQJ?95&q$PpaJNu18vT*zfy#b@~*^2`?g5x-e(>a?9xs0p$EMMdnzRjK7&m;VtXZS5I@Djt{ z+6XVHn4VdA6AQ8!%kp+sV_i043$|xB_T>v;@`4pew^L&L{`7S@;A%4m) zc#hxmSN_FhPeuEbmYJBHd0Chxc`NT=P2SBWY|T#W$pIYBv7E?<_$U`}DWB$gZsKcv zi|=zE5A!pg<~RI_zcbN_Xn#`jdS+oR7T_%`!`oPub=Z*2*^XV=hl4qa<2jiRa}FQp zlU&0Me3@_X9q#5qe!>$x%kTIL|76mY(LSYNM&8IgyqP6fo|RdHckv#!Vn_C1e-7il ze1Ow9i}U#eS8^R+;H!L-?{P0b;xV4$*Zh&cG4gb@KPh+}Z(vU5XHk}BMc&EUY`|u0 z%P#EAK^)2Z_#kKSF)reAuI6)miLY}zckuu}=5c<>^Zc2AFv+TDpHedevoSXdu{g`I z605Tw8?z-lusi#4D93ODr*bCeaS2y&EjMyAw{Zve@IxNuNq)s2c#)Txe08)>>6n>0 zn2$wRiWOLewOF4`*@m6jivu}=<2Z@aIhzZ)jH~!8U*s0P&7IuOBmA6a_$@E+5)-e9 z_9qq7Gb?XmK^9|K-p*>Q%SLR$_Uy*K9KzAOpHuh<=W;Qh;xl}nuW&2h6MyoF_W8>_Mo8?rguu`By;p2Rg zYq)_g^9{bk-8{%oc!Fp79e?4UOu8=Gr!>sS8<~eUvjoetGHdWI-osYx$R6y^VZ4_Q za2jWEKA+%9uHy@Qm2dJr?&U{3##8*7Kk_$5)<^r3g4gi|=45^rWocIAovh6UY{s_i z!rmOjk-U!&at0scA};4@KF62%I=6Ed5Ab6i=a)RspZN!qJR9v(YGz$hMsDUd?%*DN$fG>TulNHm@-mY@7wuCzW@ZlN zV-c2O1y*4#)@M_;VQ2Q@K#t%zPU3XV=0YyxDn82>xrJ|YC-?IRKj#^K%L}~3#2cdh zNyYTc%9~h_#aNcNvl{EN5nHf5yRk2aa5V4d6h6YaT+FBV44>yK+{$aE|3fKEy}4fJ^x_*K-qJ<6C^6 z`*@h2@if2TPyC&UHb(oClGif}bFlz#VHw`Ws;t9?Y|eJ<%03*-Q5?_7e3*0iIG^Mi zZs5y&gYR%R5AqY9;8}jhU-&1Jz7XwG8fN5;%)^^mg5_D6HFy{AVJmiI5BBFU-pdC# zjk7qPPjDsI@dduhH~Aj-@*^JODSpi#`5PmfqWww1>v#imGCzy5G%NB>)@B1XV_SA% zZw}%}-p2#;FgvID!bABS=bCvYlfavqm(1=n&TH**_za1TG^QJ&;i{DBvFnaN*@_9-1RGY9jr z2ura7tFRX9vnkuKGkb9$M{pb`aXM#nA(wF#pXH0(!ne7T`+0<)^9;Y`1zuv}m!thj z#q`X|n^=&=SeCc58tbwVTd+O5u`h>kH1FpWKEkt&MkNclPCAj^sE_!Qn-m!R|QD&D_d&xQqLFn8$dM=lC6e<|QUd6uqAmOvg;Tk-1rrx3DxT z@DA4CUA%{_*pWThpTl@BAK*03;(R{Am0ZUc_$uGzd)&*9c#Nm`HGkx9j3m}CUdJ1l zllfVcrCE`8vNjvA8QZc8dvg#+@;*Mu8GMY3xSXr`9ADz=+|FG*z>j&HU-CSE<{wOw zB-*Fc%)o5S%|a~Ba;(JatjES|$qww!ejLg%oWQA^$$4DD6FR$(pHXH&LeXZGSij^H>>;&jgDLN4PfKFb%mg>Q2w z_wxup=NW#>3%ta{!45y}{c)yeR^G&dEXK0Doz+;Ejo5=k zU{2;|QI=*!-pSf*z-DaAF6_-g9Lf9mAZPF~F5+^o=5u_BuX8(h@c=*Oaem43{F#3+ zN$O~yQZoayF*ggbILomTtFs;(vn4yQJNt1c$8Z9tawg|-30H6}H*zz#aR>MCLmuTx ze#IYnk(Ze~IFJeV+v%8@Ihc<{Sc(-`g|%3pP1%N>*^2`?g5x-e(>a?9xs0p$EMMdn zzRjK7&m;VtXZS5I@DdZJjrJ!M(=#h?VnG&TS>DcStjk7h!S?LNz8u2Qyq{C}2EXvZX$U9k^4cLrr*@eA1h$DF)ALI-^#zkDt)qIXG@pW$JE*{{=JkBq9oQQE4Y>$xtZIzgM0WP zkMbnH;t#yY%S@gz+NX5P%pAf8}3H7My^OJN{=TW@la&W=Y=4J6MxB^B_Or37+M5{DprqX_jc8(l8@$WFFqk z5-iWktiii@4_mP#d$2!;@m@Z_X`IFRe1a>vjxX?4zRCBvmml#MPw{L1$ln+V-e?LR zXDN6cZ(vU5XHk}BMc&EUY`|u0%P#EAK^)2Z_#kKSF)reAuI6)miLY}zckuu}=5c<> z^Zc2AFiEy(pHedevoSXdu{g`I605Tw8?z-lusi#4D93ODr*bCeaS2y&EjMyAw{Zve z@IxNuNq)s2c#)Tx{KjaX(lIl0FdvJs6f3X_Yq36?vJE@47YA|#$8i#;b2b-p8CUUH zzQ`?nn>)FmNBB9<@LOKsB__@u?N2JEXI9?Cf-J_eyq(opmyOth?b(feIfSEmKd0~! z&gEi0#b@|DU*T51%MW;npYjWybr#n!KA$*qWW# zlLI)MV>yuz@lh_|Qa;V~+{D-T7T@PS9_D8}&2RVhPSaQ z>#!l4vmLv#4+nD;$8$0t<{UoGC%J|j_%h$%JKW8K{DdcXmf!Ig{>h}l2PnerC=E06 zM&{woEWz@u%o@Cl_plW^vIqNf81Ll+oW@z4&nLK&>-Yj+<(qtud-)NM@f5%2kNl01 zo1*IfIXJ5tnl{pW{n>o!hyK2lz3M z^GlxR&-{Z)a!31=ni-glxmk$CS&o%ho%Pt5E!lzH*^fgxh7&lIGdYh-xPoiBk(;@V zJGh4*@+eR8EB?TXyv*czqJ2uo%*?@jEW%Q(z$&c8`fSQJ?95&q$PpaJNu18vT*zfy z#b@~Taj^_QG z!bdoli}@6v;q!cjTlp?O;30m>FL;jM^H=`GWci|fO3O^l&b%zllDw67uqN+j6Sih2 z_T&H#=U7hULwuAAxRg(GJvZ?+zQy;skB9jgPxBl8#NU}Hf3!a-c|Ef*7Ypzfmf>xz z$~tVw=4{8V?8Ctv#qpfXhdGCj^GUAZ2ENQU_zrjTAV1*=p5=G^g?}<>foPx7Fe7hd z9^T9nEYHfU!Mk`5Td^a1us?_KUOvESoW=Qkf-AX>FYr~q$@jRIAMqGZ@oWCb-xw(v z?N16`#~YZF`B{{uS&?_LHXE=R+p-ILa}Y=JK0e49e2j~@oU8d9U*hZB&Rsmfk9nM5 z@;ra$A52mx+Nadaz--LTLM+a5ti731lT*g&= zmM?M(-{wy4=MjF+GyIkpc!`M%NBfhC>6w)`u^@}FEN^Eu)@38MV0(6BUk>4D-p?s~ zgmbx=Pw^Q(&sVsW@A3m4;-~zA=lDH;%fc+lTX_d-@@_U^Yj$E! z4&ZQ(O#-o~n| z!-j0mcI?VN9L!N1&&hn4bND!)7w=&!c4QCs=P=&O2RMzhIG;~&CD-ujXSu9 zAMz+q@+0yzsC2YHDS17!Fc%B(7M9^{tjaoU z$mVRvuI$6X9L4dR%!fILkMl{c;Re3UH~0>B^B_Or37+M5{DprqX_;uB(l8@$WFFqk z5-iWktiii@4_mP#d$2!;@m@Z_X`IFRe1a>vjxX?4zRCBvmml#MPw{L1$ln+#8|_aD zUdJ1lllfVcrCE`8vNjvA8QZc8dvg#+@;*Mu8GMY3xSXr`9ADz=+|FG*z>j&HU-CSE z<{wN_F50Km%)o5S%|a~Ba;(JatjES|$qww!ejLg%oWQA^$$4DD6GVxQfs6MQ-8S+{yhs!q0hz-|_-4F>#V;e^N0$v+^buWHFZI?X1SSY{VA)AAMZ^ zSI<}epE`f|q{rbJZs5y&gR%35yNw^@Cp^Kk{Qt}O!vC*t5C608PsElxt@WLW*_oGx zS(3N%4%Xz|Y{J-i^G?QlasY>OEGP0IKFS4L%BLASPrk|cYkZ6Eb01^p$3HWEn&0pz z{?0`9+bMZHvoIG6@D`TgZLG>VY{=$p$FA(d!5qc$oXm$ghmZ3~uHgp0%s2QBck>`W z;R&AQcl?EaGO7J{8fN5;jBRIW^fd#sG8gmne{_G_(CwPD9lNp*2Xhq1b21<19LCGuxs&^OgrD;azvTs9Vq$$y#q|8AkI~1&|7stz z>gP=?$YLzZ+gXiu*@!LJp554&LpYlEa|$2fTrTEQe1^~S6>jCb{D6n}DZk)3e$QX| z7n6D3NXtyj&b%zllDw67uqN+j6Sih2_T&H#=U7hULwuAAxRg(GJvZ?+zQy;skB9jg zPxBl8#NU}HNp!nQ$?KVgxmbX=unccwRn}ocHfK9_WgiaaD30f3KFm3MoKJEMH}GY? z!FRZu2l)w4@GQUMFZ`29lSccLh8cMy^YCVtV0l(%4c^6j*oqz5gZ(*-_woTw<1EhS z6I{u4e1Wg>O}@vy{D{YRieK|b{>DhK0}uZlgA}}uH!vsjvnWfmBJX5vHefThWfum- z-S2%oN2zp>+xj_$WR`|_XHh0*oV%Ko<_d$2!;@m@Z_Y5d>yy70fc{lx12Ilhgq z-+zv8qkZ^)`}j7G=jGV;_J7-cE%yFF?D%4${oXXrzw7n!|1ImU zpS};}7*60+#@5^a?D@YPa`x~;9_2}X#UFT)mzmuDKOHkO2lKHAOR)m0uommHDci6! zdvPE~a2zLbI%jhsmvI%J<%`_Hx4D!1d4!+y48P?CUSeYVhg3|@th|W@S&U_QJFBrS z8?go3vm5(z2uJgNPT?b*%f)<(&+vJ^!mWIlAMg-Ay=INl@@sT0~P5@{3KA`%%G+A0!xAT&6cw9Pd&i9||<_KQRsh7O2C-Utm2LgM~C z)L^IIGdMAxctj+!HZ(X{{atAABv2|_;Mho{f9Uu~Bdx+al2h+EO*B6UKj+-8L{y5k^;@+1C zrl$<|FSiEw6B>-i?O%iKrM~gTp;d$XF+M7^dL$CJ9}Mc3h2u4Y`!RicXs|tlNf}3CDx& z{ix~3Lxb%;k~}b&o-{Pr{tFn7`#r8vkw{(R^+U%*BK?dH3LP7X%rZVFG9+^uJQVzGlJzaJ}fkNJjH!(H>h6_ zjt7scS4`g$8a%#^8b2NyJkH{NH!7%48SeLj$6KVt(9!*eb?y>4Y)I5zvA>3OA2lpe zqFd)-og*c>3>_LNF{FFH65*94>Q<}Yv1#La9qSF~9aQ{>t7~?TPWZRl215s3`Px|Z ze~4)|r1OBG{jYcrO}cmO-g`v%E8KVNM*n$5$9m1KaC^7A^27w;*DmTV??gOJ9ZhYthEf2B4CH)%R-;Giqaf4wI6 z)a^W=Tfgo@62vtdRbx=UVKqAU>(`}o*S-lRHo4ZsW~2U-$#pyT>v7HS|D+(iga4$Y z){r3shg@am)e|Skqyhhb8Q9aCKa2ye5VZnxM6@wH#*t$Eh~KD^HBw^qNKC zvc?Lp91~Xjmm{uOc$Gzr>sg}#SDD&uRJ5mmZ!CX5_;sksH4Do0>ph_R&?ckmHEq(d zV)cJ}9EZ1$PHuMX$*|#?P^o5 zc$>Ht+eBL2{w7={ao5JL@7BG`@SYue59l#4c#4VpyK|Q=L%NTM&Vg%!CxD*aJ@G`Z z8Zw|~zurTK{o8f@J9ixtq=cJLv?$yU{&rrYE_liFcipaQ)P=9lV|lx;Q5U>q z`Md6eYt$`^SGVUHb?f5Q?Y&0bEAi^~U862|>Gb#f?Y~A{m=Rmv1J|fK8n5o)HR{gB zt2=a!x(o5@KDCUqpnlDy704nSIg@cukQ0})QyT)cl;W4;d#Z_ za-6tE-K=Uedhu2HusUft<C(a3tOk9KOa4 zd4vCllY+y{xFKO(>}EFyQ-ed8|Fo`DP!rxJ{{3c*g#_2f?zdR*cW^o(QZ=}Q!_hZV z#pQ>Oje@}?T)*M{)d?=~^9}?7jf3lALoBaGa7FyQQ}Ob`d5`6_3;vFumoHfGjIpr5 zSl*BXb>VUSmFgZzP**#sn;Hv=mlqsb{@eV06U<+p;JR>mZwW53`CAkG9e@7z1jor` zu8_AfsEfb6X}6||6b`Nn^NI(TSl-*g-|_RpriSN6V?!)@Yj8#UymCQap5VGLuViqE z<%Qc={JdttIiQr`6^5`b98Lt6_<7BOy!63!VP0^W=I^{D!ENK`wF@2`;l3y~#PTi& zSH#cj7UX3Mt_$g41Gu_b=S<#Lt@%oU=P}g}fCB@^Wtb*ZkcPFK=6dyl%lczwo`1*brO4 zTN32e4DzZ5MdAG28C+uP_i%!|R#_vF>cRBb5Zj*5C#Va5@99c)se>DYvlCmtM}xZi zVqt-?yzqNG@z?L9VE$s;bB&-bHh%>YcZdcxzc`ZUV^&WSE+kBLEVb0)P>&*ia&oZU8OGk zUQqnH_pVYGem^LF-6vP6tB|1Xo1iZE@9!bFySO3z99;aovN^N@O`QHd57ZVHI0|IB0*lSoRLWQ92Fa4 z%eyQ=-i3I1&4c3D{Dtpd#qUe_yEwsre-E*|@bi1|=P&b{|9U=e887ea1bN}_=v*o9 z%LI8jHo1P$V>P?ZzwlKgDo4+Xu^6Ce9vFG2eL2WEA{QP44`Ky~d zc)pB<1;+ALC&=p-Z+W}N%iEP8Z(Wer=?Zx}66E!Zm)A31-d73o(&o8x-kAh>!{X)j zj+d7@*}pGuzaTGo+vV>ew!F!My7=p3Y`na_L3MCc50mf0=^?jlaB&3tsv4Q2L-Q{`OMf zt$+1zT)eyz3G(&@dE0~Ou^~2pMHA%J4D!PLWH^80gG+4w!uJE?&)=Lv!McovsS8JI zCdlg-1C&>GzTJRZ#E97lXkXPY%_7i~c)L-Ijx?BAtR`voP=B;1XNjzvoX~mxjT18w&~Q zVt*#g%lSoc{1HqH^Mbd1ubS7lQSg>-Fg-S0EwA0le;sc<8Wdk`{uTy#`C?&#SIe6d zA#sTHd5n z!TJq~!n}pS*};@@wQ3 z2=e|b+ux}mFSh+Xb&b5*LEh`Z^w@B<`Ad5)RowGdxV$Ta%hi@QNpNsdFL<2ChO6aW z2=W>SFL=YeRl((IdG)(SBDrHBL0#<6gzKZ`@2TQGn-u1)xkg^!Zjs3HmxBVs)$%r7 zN)KRSPFgW9XjU)tbARrq=?He4-l#s{e*qk^Jv{?-SVtL2Rj@=lbCrCoh_lkQ0! zSsgqlg?Z0iBd^Upi6XONGZoau{!G}vb*a-t-U}v%dCy-X@2e(>BH{5^Y`9w9u(W9+ zgMy+k?}gxUwdJi9e4x0(e_?w$7377VEe!Ksyhh&G-~-8RlLQ5ZtIc2iTxlZVXSl+= zaC5lY{2dNX2!_wAu_5+n!u}P=noxLL2VZo( zAr=zU#s2&c{VS3tQa6|wF7KPy$a_6_1F2`SpuljoynaQ~L@EZaX~Mj>gUi*Hw?Oa( z+;g#zpf2`j!ueYf{DW^*E$=(m$V(S|Ffv~-JvLk|?^KyIfA61n1jSdIzmh>-_!;!r zaJ9U&WrN3?`FsBwdCh_k<`0U61a+}L6E5%A@@f8leY)!!dD}-Oip&mY-f*?N$`yk3 z8?3i*eS8pHV#~WH!Ryl&V-rQP$2&n3%iEdY_35O_Y5sn_yEk6mC-O>}pFs-}MY3E@ zVJy15Vdm)sb(80(`nTiSuqM3xm|*^P2X%$R0~JGT(a$HCzsgmD^VFsO|!@8zH_ zxH{Z5#tj#iriyz%C^jBj-q3ifJyKvp`mMDXF@`tbE}m>290#{m9ST>cwy zY;k!U;P~S51i*>KGo#~uL>{MpNj z$GCXS?BndI6B>m%shM9RO*8-fDc0!7G-A&-WqC$ZLkkN5HR-t)f3=Uy8VAwZxPJB8 z)hpL*!mynAv6(9;3Uz8#uU)53V^41_(Va&(cW6GNxr4pO zEDw8!-ZOhUI1C6F;K0~>*fWJMPQEB)>?=_z^F^Uco2G)XN_D^LRlEXtUc{ra=WiY_ zJbnvk?%*Iv4i3!&?3@Ff?FJ5H1`ZVD05*X6bKde%gXp&`zA%27q@AUe%#O1h&5~4u zG-^mvc{6_c^7zlit+|_vU~Fy_iUL%-kjRLPT>$>8R3o5GS_F786WX?I>+9s*wqpZ( zJ8OWsYO7YQns~Hp+qRy!lSLLAf!oNpZQJVQ8O9Dlc+nt|?3}&r=m$r3l7{Uo3(dXz z_w6*pYO&4;AdTkU-rmjucr+)}J3y9Y7PPJt0}w?3;~n75IC^<|vH@f&zze?sje{m2 z0BsRKy3I)gM!Px<2#`xx_pJge^*J_xZBpP62W&#M^|V6Nta=0r2ifRAZ2h)cR|1@@IH+0)+wqDgIFrIJ?b=~KzW z%gb?w1LAY=@N)6;@Tmq19U>zmXZQ^3(ZPq28sYV*BhR~$#87w|k17?bc$8naZm_i} zbf+Vro_(Eq_Vn|1Mz}4UdLm}W9zFfM^yRxvur}%0vuEEX@Yc6U&mKK6^R$}b&1hQ9 zY{9UtW_ZoS3z(T*t#Y;O89jQoqWaG0F+-69+SaG`Yl^^|)^FFQjZ0H+Z>Q-^TX;E6 zW7fpQ&1}}9MT=(5&`QlbDiv0$)Mi%OmVef)TTr)VptUw@aHg z?drREc{xvKrYp*XnTFE!W>%?Qy>2x;s#kGo)6vV(P3>%WxYaeE-IiR}T+Q{nI;}`{ zHSC<7@sJWRlO`ti#D8dxLIxeakU@u{QXx}lHfNi&ffj)F6>R(|w6n|A7TDR9GFLF; zPX%x*kXknM8IXubsG00hN&OY7C^{|-kXR{(DbVJUl~QCcml$7Rihf_!QYpJ%=5tX( z7^GH#d{Fl0h3P^Q{m@_Bd~C)N)4n|lR5ich_shgTioZzzCFtnV+|wj#@#9Su zn!7nNj3<6B>Q5~f6`g`HECQTal_H1@>_5WAN|1OaeP4@QXN;ha+ z%2q~i650Qv^#Tq3(5jd)kD+%n%rO_N4#hvoo<}*wNx$`VCTLc`rOP!B5B7WssDHe?hD?T3TFP2qpjJj(n_cQ#_1HpqX(Zw}K3m7SJ9vB9HXWqV(W^B0yfF~vV7iOUY; zQi4+ax$FQgWuovuWK;ZqE1x`(shN|WGLNZgy!tQQppSOFk@6oB?!{QGB8j7V_=`MD?XKBbzCE>DIrUk#xZQt6XwE775S>jERCxe=*&13#ai_Ci{CxH2Yu0dq<2Zbz$hhP08a^IZ)d>?^$ABf8zak;B;4N&9icl&#of0)fD zuqJmuKkVekK+ZofIm{iDI8ahRiQ`EASL}C_C_M-v z8dh3u%f7H1lSEN0Nz&wVIscaYPbz6ek(^7k`dp3o!Yr+*+GzZ!X}Eh>bc+W6caPyk z9v%Pxdkp{O(cizHv7_u{dUGLd?k z|HOay#iIWA@Ba9!|CLbtn_Y2#qdrq6%*g%kbh-H(rbgf~0B=A%5nWIvm4SvICjCi+U}cGrJ*ACLYp-u{uh zU(q`^T+R2xTlT|PXQGq*0qI>&FMikVe*Gl(@&0~n1AjclnosYfpqw%u&ze{7bk3dD z(mzo1zj$)}FM8t0lUg(F|Kh34f6)^UPx+`{{`h>qY3LRGchYL|&$V?U(k(p0YH4mQ zqudgha>_T3iEw2YJ(2$LlUTu}j>z!WCSj9N)4my45-V-RPD8JjHTl3vBQTmK zrGF>3M)YebGLn{W_&XFQFX9+Y=hBqTkhJ29`5NqhdCfZrNMfLyz?9YUBmbU6yaveh z@I7jC3}LlL%i~5gE?KZWIwx@F-!{{^YUkkXyDyDu_J; z5~IDkLS$IAtkqs?ufZ{n=#qB93s_Ujdd6}A$0aR$5sZ?Oz}6!hZM%0v{fcZ<%hNJ) zkqyRTFfok6njurNRuA?tpmuFtf$3E&o8ZAQy^CbEs}^dQK5ALg&K=A%ebusFZtK&H z`AsdG<<2PgQ_FT*-ASJLT`k*dH9bV8zgl*Xy?whe1K3M&3XjOv zB`C0riK4Ms4-3p7)&s?ol}c#3U?(WI>{gE{rBN$`a(%{LEo)`ev9wy0WQ0*hE$X$l zG=?dwmd)Cbu`J`DmhH4rfm)`VTDI3dTcu^nt7Qjm!}kJHK`lEnmg5r3IBM?0yM%nn zM4qux@8GM>MI4$XAv~TPMrj#Vlh>Ixt6eJ#49DQ5@e%&gVsNqM10o}gElXvFz3>W_$CsuWXxW4S z1Uj)a)z^_d+LC32$>n>2pdzkpCvO-CDoyX*jr}qK;f0iOgaHrs&TQz+DNXI>#fUU$9JKZ&!7|W; z5&IzkQHP>PgMm*gfb&odQA^Yk>zo5aZ8`B*)6;tp8>lU(WlP~bh>cW4VizvfFk%xG z(X%fDAm*VW=5n37cV|RT6|rM)IJ1n{Qbp|9zE`!3*j7ax*e`pLMC+g;j%Q!pNW3O z8q1Ug(@454QBY@{ri{J;%69FKGfZ?zBJ=1a#Zn`GN$DAVUy>TrjAzc4B=SF`B7RBL zVD#u9j9nmX-7QJvVksXO+z+%g&2!(ijD7=&Ejz|B9~_AO53&2d#I9grx(KAgHWS`` z4qJjaMS_lZ7jlfWle3dV)LorCoaTSUi%HVhXr96{#~9QHy-owY#v&<^>aWCM9{i|Q zas&nkyLu7Cg^^4Sr%;1x7EcvM0Z|t%&EhG-XduQS&Sdj=XykC_B6O13wX4A7ays&$ zSv-MJ9;a)VWYzR8kl59nguXfrq;f?fe{z06suv-{xDh}a79m4)WGk8TEtBY2h{WS3qOYM4`W$=x?=ELVq>VUyPD=t|oEnXhE|wN=7}NaaDzKRiV1F+E%Wd!@t9J<*NM(dn$xoi;y8`I9JZA z2pOarcI7%0p$s)#BTiS`I@EBDI8zb!H>0fEf*znc#R7mAG{49x^XmoujTglHdO>4U z)6B0|G>S}Xewm(1rZvAzPhp(fOu$YhO#}N3vrILv%tYtjiVn#z<5a>M)td`w4#n|t zeuPykj*pvG514Ba_7~?zm{$=thEX;g=b3q`wMf;Phk{le^pFM7i8{Jw@fh<4M$0VF z6!+b!=7MiL(9%UFrU-vcWWqK2qK2BpDBZ^k%t+OshiY&z8Qigz1F?Kj2bsz!DVQJI z{X=Lj358&;ZKrYiB~&q{w!pBBit1iTwWZo=^lv*1YhXBIQ=Pl6iLR~9O^0x+f#84w z$1|MN)QNTHiKRgfRjbN6X+d$a6iM?X|DlfY>iR!*L=&TP(zdl><5G#y>6+^}BX&+O z1k?XCq|{+OOCu81pOa9vw1u?_UiLFevryF`lwwwKDEcZ4*);GfFtTi08wr{ks<;_p z{HMG{jkCxjN19eANY+I)ZCbXulc;lo1+^KRSTbby%Yxc2RQVD%R;MeHkV&GXiWgZ_ z38ic-XZ$5%CK3A*Y*jV>(yBA`g)$blveAY%C~NFl%EFpU`5_%&wzy$18XeGDh^d^~ zKL2dSz81ML{_IC$X)qi0oX4QQNy%_E&2& zOvV3{|2Kod358L696Ix_AN4BwQBS4cFGxdyel)=7Mi?3 z0fv@RBvyqccywZOP_ThRBFPy-pm6ObT$(F5Q%fX_`7ikqgIfJ!`$Qg@*ET;2@x{EZ7 zmh-gzLx-Da$Cr8NjqqGb6p@P~_-ZIwg!AW&B7)U&k!&fxf-|c5PjB2R4RYLEdHZ6Q z6-xiZc(JKOW0_*p+#$BCTI5#XHkn!jx`$bzsK^~>%N3XIu;q*7E^8_jldfnSdAnv# z0;%M&PDSikuIP1uHb)~COK#9qEGqH)H5ac!p$OA*)=I_n5)FFbjg_2NM$7PJR`$al zv#i?%JRQckp@)=LdVyP^lm&+d$M{>=b2>>`cvkA2%Hve)(G*(Mn7>f2K4mlLHO77d zrRFT0()rpRc{pU(2}#1UuJJ6ME`xi)a{aO=V7bAUHn8b>o`d~{<7$D@C_WSx8o$kf zHMd2WtobIVJwbP$I0;%FS8)>In^ngli1!>l1d?9aqrvq)H45bx6Tjfua_u@iTh&0z z@V2){T8xNI)G#@+#t&3 znp7^)fu2d%h_WgcfiuZ%Npki;vOIVyc}zV{EuJL{Ag;n0O=8NvoP4ajSPBN|i%oq1*_fABiQ3c!4O_u~FffXq9qfH(5T8 zV;ky%Z8^`x4kDRF-|0CYLzQQ$z9cVWsuRVmzON(CsJ^|hpXZqlGu3#oGeHYfBzoeX zq*ZbOX+3yB+=FUsyALF8i|a)HU{>SFA}zn26hqKbvUWC;=%edW`M3EbsgEHG9xn83 z-h$}EGsup11C>wYk%eoch*D!L>8^S~TCZ?C=b121vfK%29G>}mJV_c`6a8BYl1Xbq zaTWxSo%1w#Fdfuq<-oG6Q;&n!bsBin7nkqMD*Ib zi4yvRo>#7u#}dDho%a=pJMjo<&09{-UV%iviWQG%o~YxuYZTeBLvjec=ooR&S}3-s z>dZ3--}Rs;{7sbRJxQzLAbOUXM^W`XO7ah^q}zoiX=ZLXNlqR~&oM|VfO3Xp;%KU7 z6!mRZzeMF1YJGpIqr+(%#n4iXvu!e2j!@s!!9Ph?Xii*>IhZ3T3k@aY2|(-KXe#9v)>Xuyc*Sd z+9#r<9VZKCe-M2_1F~~koqKowB<|mniEEGD7|&SC(DQRw@)F#aTHsxr+8Qm1z6ogs zo~dw`xcS(`ppG4=+;~x_DRz>prL!GPd(h|ftA_<3K;AYa){h|*CVn|8jWTNjxqo*DUw=x;K~&iU(9?mLdk<(m*Uzn|JZw5&0r zTBDDV@FaiW!UM_Va|m0PLoM2jk@UQxuDrL^x6EE8-4L9;&`VpA_OqwDvi~Es5+B&ouc#&yMQKbq~97_?<_R^&e8XtsQY48dHsqB0Y%6k5joLHjbEw zw-BY(DJt()=jSrCd0~dCeaX**BD|$q7(SgOzdk0vUCkt4Z330&+@WWg-9)MBPS1zx z8|nKu)iLe~#gILa=u<|Mg_~cAQZ4vm6V%~#9 zB-1{dyjZ#t{lHO-XJ$fadh$={IiMBM&-FnPo0*3mB`|kSk=BnaDu4Kcd|ku*ATWz6 z5ZyT#r(MQ7j>v@KJSun2(%*`=W zZZVbUYd?^E-DdKo=|Xi`-G}V#szG-8tfIQVy+@MmW>8dD)E;|tH&HykQtd)xNHYIB z*}41^NpI##Q}SEkG(}ZmFwsBPCyKP0ER5+z<*y}4G5~9qz&IMHylO02t9_ngONyiz zMh6o`j3@5PQdB;m&hSy*#O;S(DlirIP$Yq`sJ@Rq$l9d{qPGelF9ysE0^@+0R$%

6C0hcgV15U9R9Q4s~n_**2er;wo$X2qTHtGI~)~B)d*D}a#7O>Njm<4W=Ngl z8kzFOgHYxOy<{he4kmSX^oQwYSM;EFFS!ErzsAi*Ih>ul4wg2uQAm06scf?pV3*lA zY*vI^R#Tf^9sVfZm7!w(i18)VJQ{#8QtKy9A42Uu=#4_1{SCB?rY_x{3NAt?^yhkk z=p91+4vi3AgE9?Z!8HemaK7Ovj4!^?QrgKhenlhNE&T{6P5j(IY3gSLrRA#Y@YU|s zaFn~9!>t70UyEB6enkFe$c(>VAJ1v|A>anFW2lFPv1Rta#!|N2KGbL>n{gb(c-Acw z*mgF)4!rMYJBJ{kgRC0+Ayy4OnN_1tVb$z4W^+)S@;f4w%9HnlQq`|FLa$xe3gOl}P#%g6j4dGF#25rhGiR!R=Yh+R z@kysGMcZn$%y;TX8~yIDaI{lBmHJ8topKJ(z^mwU6_u$T&>PkpdPYLPv!fsM+wQ^y z%y%E~6y-p63yr=Yc6|UqFx#6t%qli}EUZMaBQXx;elq?R|NP(Gw@GXd9FD~Yw8=# zq9wq-X#7e81aiVAsL$bgoP>vP?!*;f3%Q(BfK}Z1AgD)iZZuOSaHU$I%{FkyX9C;J zeVqo8B+jogz;P~}2G|MCu2S*j z0fG1igWtsVp*_bIc84zvC9<1x5cziYE%neHteY$9zLPzC9-i;B7jPBJKVU=JK;aQ< zqCNj(_D&$Mr)(BY($Cm7R9VdHvpS8REFy}`d`yU?1G&-OS7P{78225*H% z`i$UKYPQ~iLX_rt7>LoDBn!Z5P0fb@YcvMh4z1O&xHaeFG!+?uc+E`eD(f}B-2!ie z=C3Y@bE76=BTR4BOmKtEEgGIW)mF_OI{R$XJy}>C>uS>w5YX+4Ec%f-F9gZToPR+qv%)O&j%2Mv+dbnN2eGWxqt>EnYLu4g) zQUNiFyWt2dnrra{U^VxaPIGIx-)MS`_tLN4Q(yNgX+ z2L7cFzlGCNNQqq95MbN5Jqmc+xemCH=XY|wr@_%K?m|0=ByoMbLEOXn(S~OqHy0lb z@cX%j+khS9Tyvp!i2I$=Iw@Sr1YoJ$#jCJ+jB{TN$>UsCN@bnoPCo&b#+6tP-UV)k zKO`@5AF9E_WiFN$#4FsUMG#5nUQ%Y`8utp9*Zd96lg@t`Tmu8F+~TIu8Rj;(=1=&$ z%bjQmE1BFe%5C1~{ulu8fJ^WI@iFI0XSpX_E1G|waVbOLHj5kM1>Os8avNYTxm-F{ zzv1jCuk@DdZ4)|)FVHTf_FSkPL>Yxe+Ul_|9jTS;LUOUT5lvT1wGHXCwM_e-Qd%ppa3kE6 z+MlOkB}%*O3Phr{xs;e$t&PX`DEu02v!(F2R=eE`AWmzC%X2s%3f>$Q`!fo;(4 z-U+>p+CVL^E!xi&VLDO!i4HQ`w4=5li0#_`G@I|#KG=cCc4@boAhJhWkEVmY+Dq-h z+pm377B&xPI|PGxNc(|y%gNgBl&VP8`qhBmVQsWCh)1>EX{A4=-P8^qPHNvP5J}TM z4TY7{+Q3NwXSCxejc`tTjt1pa8gs9)8do(AGI?Fc&i zUDtN44%0Wa;nYKJX`|yHc}E*~0FrmL8|bCp(|S^-@4mJTMfOnZI|Pm%X*W~Xc%n^N z551?_dtCssw7!%%eXiv;A*5H@yaB*oYwKG8-fE5Zu<}mZ$Q!&5+6%sLo2|8;1jx}k z;X;$o)$VT(?29(18H|0^UZDjhPn&ib*mrFm8h8cTZXY4}LmNX!@j`8rX%GqI_vry* z_)fh+T+R2Ty*ZKKu;QZ6Jn z2&L}!!rI3G z2ZU;r1wANqxeSmZJe&l{R3Z2^^o|HG-oV3AVN5i5$A!lm08R*5qhR`-P%j=L?*$I9APs})VV^?7GPh5i?q0X738ZR<_TG}fBG&|7ht78C`&u7A418_ zuu>>AafV2s_{T_y1d9c6@E0N~G@Ry$1MeV~xuQcAG*6gVY8`m<#Nf&R3&i?^VI^E_ zm<+H;JTe5vBE&tooZ=UY&8XWf5g*c-W|~H3y~P{ z&;np<#ElUUi4~Xj12Im_qQlTSF_==r3F2RV2x)^@WiDdbES{njVT<@C3vRcG`S{+3 z-!A^y0kP~7zugA5TPzU-^}XWOFEG7NjIjsrpxAu|JRA}$;~tAo70c5-#$mA(U6&jc zE8sB29}|BdA;F&zTT|}kq&T(_h^NF|DIlH}J4+y*74;L~{hV0s3G^$d>!i;#EaIgWT_BPm)u|8S2I-X-OmC7BsOdIK z*C@@DC`||hZ>uzuqTVjeroH73ssDD^+$Fsl4Tas3O#yL_)cqoi?Ull5f^s<5*-1uq^|fU!TfW{BLI=Tlo~97 zzgN=M0l?l!GhYCEEA^)1+Jjg{?kPZwajWcM!syX7)B;C7F^oHlfO<)&3jA6dYT$Pd2(J0^c_429!zZ;IulJR}HuY4VT;FnwBXOjGO` z`8M_PbMob%&^s@8UIK7Y{vm*PN&Zd?!xh_)FDM{afuBA?~Hg8{zCkHP@H$(I*`mnUzh%jSIfG!66u z`DYLCe#(s|BZxwIJk6#-ibyHuU}e!{h|E@k4*<+j{3(+ds;nsqUYIhR(iiiU0iOXD zDBF10T&R4ZDRz-kh+A(yQn{B6$;C=1$_y=2oJOE3%a!9*KwPQB(rUO$38#E+jIw~P z<5nxv{)AqvGKx~?Yn5XjAg)vF(}Be+14_blf>Mi;#2b|Pg}^o`!T9)!->h_{nJ7`& zMmwvmN~#IG?aBwL?GEJ#@pdV_Y4q<_S~@^|j}mwSdV7`6Ncr&lmBNa^4k*`Y^dC|t zH$rWbl@ARdnW~JS(Rf(d7YO1}=v-EN&?O7-<6=-@RzSNm<=njy80y`vR2m8A2lO`RSlaV#)H#I#+oan(3|2Pldgno5i*8a2cu3MU?+R>> zZeee@-LHEv5FlCScLcl?o%1c&Ow~2PZG(CWb{t5XK<6$rgend~7MibAa1u>1{N`vh`Vc*pq|3rXq*o1Ba8!degO5+M^!F976hjNpQr6@OjJ03Fbzi-6T zY7u#yE;C_#E&JC}SWI98HbZ<1dyx`OJJ@#a0%Y(fgzsYqYqR;N z_mG~$YkR@ZTt3Ygyind@7Iee-S2T;w<10^q?tFey8(<4~DGz$#{Q4=t7V-{@AQ{O= zz5sDCKY=nkOZd9yfGy|GBeTx0;1`X9`bvJ(MVMa2SD-7|C_W0wHa?nvuYpJmkAKTd zyVXkcp~4!zt0xp<`B2J1uH}Ew3=qe6y9R6>Kga@+czy>p@_N2UHf$#FM`^dSfp??( zmyNtQ0LHfPyN?4)>&Syt~?L%r^mxsGQa5>cqx43DX6FNi|BIfD1R&wykq=*d^f@$ z=dEX_D+e9HgKDC!U+}$j zAim^p(+TDkZ|4uKq zLaP(-7bF;IJO>Ngx}qu}!bTrpa|97NBtBGV*AE~}coP8LJYnx6D9jf|)7E~0Fpq^~ zxUhnbH4BAN7a+1oFx)|$5yGf&cvvh1#X)3=5aJ5GWkSbi;H?mbMnQe0Fn=sWRtbma zffprgS`A{faGPe87~x(Pu+_pyS|-;BJLyx0SmARju(iU79sqGdu6ha+p3>1JUPz>K z`g*}k4VfUcO@R6aAvOtMqtL!N0^B4VJ_qlch4-T%vPFo=1u;>W765-+g$&vVZxb3E zgUEKFXloYE)1Uua7~C}VEVcc z^9*`7h3D&G`j+556hYh;4wwP%2zE4N?g|2BEHZ`YJ+OICsI&ok_XUB@+Yf}s`1Xx| zD0tIdF*#d9H_LV6*zXFz-@9HFa? zSAzR4sJ|Ba;9`M)BfJ;`;#;9hE)?Dg9clmeUg$>Wk`F?q+Q71fRh0A25q8m$HCM=} z24i1^bozSfn=rK=+AL4__#Kkp1a@n z4~Yic67$Jo1bt|6ShS;q=n-*X5=4%Q33b!1A0%zvQ}WvMB7S4oh8nu z1MG9L1|`E^h^sYl^h)f147}IkC>!E@BVJE{$UAZObeMiGuB2_k2N8QZ^m*|niF_32 zj05qL7(=;+9C2)WfY0Jh8h>BJVUJ+*t2lT(uy5k@WdM1ivc2M z*g7em^1th)xlf>wAepF3ZIC9+hR8;#NeS>aNnH-Z%4Vt3Ef5o>6?FTyRT?Pb9c`1g zL;!4;-qLl<4ykn_JnWPPo`&9TsXw+)e3I0@DzH70Qxd>lX=x)6_eo!(ptoNdv>JK` zrFDM+9FmqzfJm~Ga{`g2NT$~SsnQtwl;g0pYa=2%DrM2;?3gsU0<7R)CtiZy3CVID z*hwjCK0un}KsPmKr0KLao|VpYg5Ei4$zAw6FS&gIc0pS~eF71yUm~ zfFIKBl^_;MYv_hMP~Lt9AV_W<3lJ8kp|@DBJO|hkc`qH_m&!jWGre5i zI1gZjd}kSWE9F^E0ITF-eh`V0N77OkEkC83>eX@|N*%0`%as5zR_;z01#9IVG;74k zGk$`%PWGXRWxeb|OF@D>ITDf^WJL=P8|87gP@_%qu7(J3vm7%B#6HW*D#(`I;LPQsqZ9(;k*jo(A!#%nXCxF}deVV8`V@@4~|gc|4^U zPs-u5pq?gI=#5xT%jb9y&&bJiHFs7X*cKt3lgCp2{=EE=j&2v^mE++3lDs|;BA4X_ z<6-)WypopWtMZ?lAd)U;mw=UPax5)%8FH_k(-LwT|Q-Xoc%h4!(0s1ih;$;&94m?bwJ2Jl>dp8=b%))$4aggL49x}a z%!We4(xFI;GnoVDZX$$_B4jCj0@t1f}*N=xtE;WP-O*Nv8#K zlhU*gL^dnYl*CL_PM!g8tCB*?{5IuNGw`-6zH~s{q1>f=hMh_?N?7eu_WcC5TUlQV z-uEak3P9Ye+^1C2KIQQf_}i}}PzxSV!YL(oP}yQaOB_<-H-ML{^rK`}sMDS9ipyURIj`i6P2N~qa*Nb<=sV8?2cmJ1TAq_x%NA-Ol6lluzSjwNicR_Syl*z2g;_S zaP&}Vb|1vY$_E+7o+$5VVtK0UrOop*)CeF;8Acc7&y_=zDSn}hrEdCCc}U-Ay;g>O zhTAuak;cPYWfdI&-YJXeO6a}Pmt5 z-RXOnFG{l&0AH08bX5PQxRwHzr#veON8gn+T5k)KZ^wcCP|7<2{8UCzLZ(nzK&PcZ z-8q`5gLF5VgBPqzbVm>&I^3*cJm@y;0dcNwb1Xop?(Yx~!*tvKgu*;sFG`Qk*WLOF zY=N#u8nAHP2fBud(5;{yM5NB`6R^d)5=WuFM0emGh)Z<_FJQ}beZ#?9u4^v>TcO)l z3SgD)veBwbCRHIMRVi^T}j$wZq!vO1KuW`8|95R>s;vAlBnxP`?IY&0pCyZ+jM2! zAhKOIO$)spI$yd)-Kjf!4%jYT4@&gx)-_oL$vryVTuAQKjR}OKeYy<#;%>jL8LbZo zbh9bHk<&W2b|9Y7c|8RfnC$(HUoBD_f!k)hAyKcjAiJ~roz}w-DdJ|Th}KB z>UVVSY0kQ@?&>to>ktuFBg)ZgijZUphY zZVY`H^+ETPCZuegs0a2@m+ArOT1oB$(8l`i&G()pl?_eA{+Gk*8ptP zSLq7VTl7;XvP8Y^H|TBEOSIM8q3^d3*iQYuivYXy-j4wG=s#3~mA!hCD-`zWgC0Zu zp#CsT)Q9vh;{lTO54R!s!}`)4;o*pWFQqV!>Zi~$ctW4?2e6a+C*&_pe}{H}r}Td% zp<<`?VqbtW`r%_iJg4v53JT}-nxZG z`uo&1uIuw=!paSOz5_spej07MZ|W=QVC9y6A6;GD)_*Xges}Z>XuEY+-#Ql}nfi@M zAl}m-qsimGz7ox?5A>b2(0izFMhoU6{hu7bV|_Q;!9US!I{GzZVPfGvi z=sU#0ZGnC^^|K%PP|6ql)R*}Syh43gDii_@OAkUJ$gt1?$zVex+Tw&57A}J1Y{RxQ zAkHyJboDsb5by`EP(%7V@WKqy^ls-Fq-+r98!FIVc!7bP44VrL-WNbzWJs+HVuWEH z-9aoiNX=n-iJ^K;5SJQyBp`@ohMz_lTW*-wA7F){3)OF>p%mpRR~hEi1Bf#0Tn=N= zhT-_un~yQnrP8*)WY>>J~#)x*19|)QEt>Rzr|Cc-su6e*oKVh@A}6I}FM|i0m}1?hD>-L!~1i zCK+C4!`~jmJvR{d8Y0^O+h^E%AA0)@FQ3Eo0mHfdkUVG@qfXR@z#fo1ZfH#>+7pHk zV*pMXq*c&MGc=}s@+pH4eV%dJFqbx8XAFbA0L~iBCjrhGri4KKyy40V=v^?xQkz{g zRCxn`mkgnC(7S9H76|N$;T&b2uNnd#0i+uYsgS&8VCiF`>xQWX05=RL=_r(8NTiA7 zrr{fHo^KhvXjt4f%zq1T$KV_Qy}Jg@aI|2i;Zp*P-7_q11#sVBDG7xKhFTk8?4hAD z={+*^qHXjiYd17c!d-kV>`}AqiGsC5-AZ8iT&O`6HVSx^AUl?-7z{5+!DSSuI zzcQ4ie;W4M@R^c1Zwzg|0()!l@q&kUhS_vldT+Qu_YWToD}Dnp+pyn;I(#%(X_^0I zsJILwIfksEAm$p3hamFVu#*;sFNTH{VeG46BHa#rGn}BTSe{`|DtO-wnKXOn8@@FG zR$w@D1K@`t=mm&B4QEP2q0lhM5dj7oTMY&lWb8&mG}!1e234734EhL#xyGtLfrT3X zPDK!5#&tBt<{AGU0xR>4n`us7U|dW8dN$m+lQxM9jrY5uDvONqw6sPT8##j*Y3yGU zB8!b~S|}_rwwMajON|}qgtEezPC4q8#;cSZTV;I6gBNA&`8O1zjW-JbVvN=Pgt67e zuEzn^82$c&WGwz40x-SS_%j|@oN;+Hz&hjal&w!RZm10_Ta9BW>%PtS$88XI8nfy^ zWS6lNeRsLrm@*jHUgOytu(Hp1x-+o-#xj|R<*4ylUtq_KUqYdG-1wsfzzL&~-pWbi z>z1&YW_&vd;FNL65AaSKd0K(a7Kb)B}iQ8XMB$cF%Y$3*H|XEj0H$Gw0OE6_^Ggt47#kJ>yfoIfBHUNTT?>J|HhK;L_Qp7jF0tMkr#^*;_r_eh zhyGw3PF2Y^)~^ci(YQSx;FGZt)M(u_A593W5(?5+p={Q$t98DJ;fu^_g-B6Ip;W6|=Ojb%0&NgkP)5ILp zGCEJsH4UNEN2tkb1h6pE`8&{?Z(6Vkk_$|qMG(VH+v$>Sp{Z6)V2ey6+e0D3bfY@3 zC8n56xLs;$)EFYmO!a7Qv(nUoF6LL6GUy;3Wr}YKY_+K#&E9KFM^3;)tZ7F+crMS>!Q5!tkp$D5OpRz7-E7KU2W+dUj0bqzOg)~#`*xFl9@KZ4nm9sl zx9LK8NG6$v1jEA~lQ%x0SUMS4!GXYTnvPC|$SqUW zM<_fp8AbwoY`R8M-V@X8L6CfA`bjf%mZ<`Lllk0q;0TB>OrNt*v6rSSN+G^7&FKb( z*QV06BYR`IM}zsTX#^br-kI<*Fgl-U>prM|FfFDGPqt|*okBjETqNjyGKI{7UXICg z1wgLJaSZf6n_5%K>HKUE^57W*s06$GJbP_H! z9ihoF(7g5m+yfSuy6keDGGAXVizyHRdIh*N8Rm`3T}#bDAfJ zac1*=VC&2~=^w(!n+;vzXubJVf5e$!o__UNk*(9tr<+v_ zINf~nCX8J(_m~ary18vtSh-=o`U46XW*r?nZ<=#x*0^PMq|DcC^X{%txMS`y6xdyJ z3mvdbbNY5D+%umIfrtBM4@#mxFgKu6)(w=V*GVa}kO>PxdH?b%h z>Gx)N1&ANa$G!n%n@{Zn_-LLKkKjL<>(Wr+Mcbh!mQeeghV0$@l;d zL6)??K@7G$zXa1EmWLl;Y_`Q?0IbZhRA4}yYsr}akx<*+k#I|0x`kS3nNR2NMV2y)AQEBu`34};67mzg#TLJlkX&M!IRwU*T5eKi zZl%nt-F#&VDj9IGwgXtG*kS#}+gu@)f{HrHC- zzJo}drSD$ot+U*)1Bkawe-6p@mJ~YKBv`C905(|4^aR*wDWI>>H(7dJgXCt*Qd&i~ zSVm3*mS`FM9genIjuZfFvvi#R58Ew4Zt$?fa{U`5cUl;_bK7M(L)p;Xmd^C5k}Lsf zklbV0vliH1OCH(WXK6xdpZ%6+dSC}E5z~Mjw9KN*p+lC1WF^_s;1xiMWpE4dQZ0%A z^}`lzIS`Ln&YgqgQA^$_I67u2^&5gXZeeI6f5Nh~HWW@;N=<_4G>bhA^i!6+;UJ#2 zluL%*8H?vjNS?KL)8_J=#pM~W^Oj)B>0GchYzX2-%WOJST(WeEh5BX7cprc(mKNPX zylR<5^I*E=bs&h>EKU3Xu3J7+{cc#&8^J?{MYsU$rlrLf*t}&KZ~(;Hmg$uKzGF!{ z2XNQ&f(|N~7GoYH?^*VH!SsEL59RqDSe8%%?4jj!OE`LDSx6)GvBgSX_&u>qpe5v~ zWeQ#NKeG&+0g)_=9i3sHTUG}{X#Nbbde9MLwsnIHFvpr`2jX077uu19Ss$jt$~^0syYMjI8dC=%3#?JA5k$Dv zgQk*2);Zx&h_J>w1BU0Q>Hd-?% z4YS2sVFrkaRzrIzY_)bQ1>z1X6OYJtTK{+p-Y)A-+Ar;~E~6UlwFW4V+-F_13sw$V zo#9bbTSE!$}#?wyjqV+CS<&yOb4d2VwpR~12x4x%s+BK`GF2HpwM`_-h)*w0!-m+fr z50Tr}A2jUmS?h4X?pr@n4)=lePs$-Zwoawp;S*~L&GS#K>m`8aR!`cky|DiF3~paq zf1||9TdPwc6y8~R+Nr*`R;TmyN9$2nNPe<*rI|0sx{-$A7weKKko;;b(4v*TS(|Q! zm3(VDeM(SZ-9+Df{jj>f1r}%lY>Bo` z5m4W1>qZOaHrpUN9BjAk7zXbl##Z3SIL z@3lRk`-gqD6uQXSZ*$6k`T^S?3=|I96uMwOWE)6lpk!Mxr7TlyU8$8)ZEI=6df3*F zz6>~Gt49<3QQIauj2yEKISO#xR@xN`Cu~*k!1PJm-s(_Dvo)uL{wdoTI%S=^%fQHVDWRe80!P z&gYEpInVFj-+i7l9uy`u4zV;AsCC#)eZD$}#&vL3?+_9NFAWZk^szQN6#js)O%CU15Eg-E9<2Qk8b8w?-_qM~cw6U~1R8!Zl!{PmfAa@+DXh6Ch z`t1nR;}A_LW3NNjOR(&7_=mbb{SJGmX))k%hZ3bhhZ#A9cO4!H1#ZaUz3bqH9gLJb zk2tIyfXO|FyBv^Fhw~OJY0N=L-_f|k^XmbaaA=?tZ_?onKj5Yuw$Oa#zC+Qw08Bd! z&~`E7aP|{eK5#hW1DqqHkgkO}GiK+*(uMI7t;LnGt^n)Y%W&HbfE(khS0Hp}yz2;) z1B_W)06)k$bRI$v#&>n_a)=R2S(hgx zK|EhZ@1r0`8QW=i;>Xzc2mt;J5p5917^#$p9A``)gX;i>_ZWnMj16>TonS;!mL9|i z-Va?c<4GAJgfMR9K^V$-brzh3F{G59pJa?D;NuBrEcpY%2*#t7QbjTpuRs{ZIJ*qa zPBBJDfQx2)#)7jL#&v3Won|bmgzgNZkIK2TjF-Y-a*pwGIlRO&gjD>TXGnw~ag0Ap z;p_s#MstgcjCV)C#WN;pk4#`ZDgq#pF~o-O5~Cp%K9d-JRMaOk@~G#L!r;&*ewnf8 z9(1XUi<`h*VTdU`NMjt?36pe2Dy3-|j1({U%w#MOAW#;gg(k$=jI!@Qt}?!90m)(1 zQu><9*hn3MYm9+b0IoAGTm#8td`Ruue8ws&UJDpM(>7Dc==~m~i1DWx@roH)bHUwU zgnbDwC5%d{dde6^`ohZ@sdNxkFg~WotYloEx}%D5`~{d)Gxk&EUBf7%ufLY@G@apf zj4eV4>lvf|h~B_Rpjx|;@mnt7O^l%y=$aXERE4xK3{PNXw-|@Q;H;JL{9AyxG1h;L zc()m@p77bu*h-af2g6eg%R7uc{UDu;N9b4F#mFlL*ULz!v%im_rmwM|aqH%EeWq5p#cteZ=`dJJ!?oGgCgz?-YboUs$`M`}bV*3zij4>GwZk#bm_1^>| zqzQmY##(w`rWl1P0PZvV3PGkB^7}BEVF-M{Jz$6_KXYUrqk_YU`Q?*XnKRRv3KJLR zlgpuVWfsvx?`6JKgyrsIW>5jJpLu}NP&a14ad7U;VoIv% z5YtY#20WSg*F^CfV+OteFWyYfK?FL?j5!S95oQ4G&_2w{csTQA&Y~>nDATzZ#E0R3_Tna3!g}ErmqQHB=ZRM8KRhvJ^^xyIYOCZH1k!;dt#WjPq2v7 z%qz12Kf`QELWHwSE8P`4$4sGfI+po#I=q}`8fZU@W3IRjzy;V#J%nb)%Qp`*q0pKR{uoaf2%-M8Ilrft-K+2i1rva#7vR7k) zl}r!XldG7=COMr0Tkb`6xB6Z!rgGe`#gzodaDPQ^bIm+suWB5VoCp#|6R;=7*yI++n^#w~IQN zS0*9sVqR`Wgl^^oT4xWFy$xJ1(~G``KBmM6Tt9ObU2Pj+a=X9{GDG%&++_wG02yM+ zir{6Kx$Gw3Bg_%X67Dfy_z=2L=6tH{$C$By0Y1+Bi29fl%pav7lg#ep08BCYlndWy z{%{=2oo2q31>FpDC?3KG%*BtvnInry18pbPKL!wI)?+t8Tv!P_=v-NzXTj}djSK_6 zkCjCe)cq{+%h0*83TTUUXLZvBj{~fEZ^QB+>w`*|c(6R*!RK;_wT14tda{=5LA+So zcLCtd+V>Ak4zu<@{Ee|*asubW>bVEv%leMW|D&uSDv149SGI%rvzF`wJb)#vfG&`= zVFug@Rt66wh}A|_K`={3UE2`WH?(7hvY7t@7smP}7(P$3_Rww<&MKuoSOn`S`Xjzb zR;eQ_qgY?AgO^jR^ct8%vtp@EjbZJf2GMC&+4uP5&#+#n?#NkI@@62Jd%j+II&{{>cXGrT0QUZ&4Fk>$byxy0H{4bvpnm-FBynUzi3MG9*p^(QW~ zCTByJ%DPH#!4+2O3lOHU>S#AjXZ^GhB!ji>1H{W@+4ew}#j?`9r)<{eR3ctwy)*=2 z4ogyju(>QH?QYjtzfq}voz+eE2lH4TQ`0`5HNOMG0@i-|stQ>ll=l>|c2UQ=n6>If zEa?VIOyzM2E42!Mo2;F5mAsU-=QYGDW976$SI#;^LvC@N$>s9S3fRrKeY8m?eH2D;r_0 zjRAL$l}efMD65&;Z)2=C=olPlMgN3VPq4Omf=se*$3i&8ig_CgoMHXF0e}ars2qfK zWRFpA&56Au6GCV9uoeIp_Ro!&q>`Ujt1+ly73kYT}pyV=y z?br{Wq3mBMV+mvDWk7h6?M+JxXWyg?WD)F?MQ|3$UhDvqD0UVd(5Kh|)ccKQ7fWCn z!!DpU#c6hd4cr;_H@)~=&az*mTakp5 zFDimb8arkhx^#BQEO^OaxA(zICR;(}M;1Hu0-R;DCu9&_WzV9|EQei1`))4#_G;>?t<5diLBY02Tk?b~v2fV?RwDmr-_n5y%*OlPfI8*{nL~ zCfHFQKQZk%0oNV#)V1Bh^d<2V<9gPfE{AoSoQtpIn3WnAw0s_atoXf$M8Ssd^u}Yf*j>&Y9Ktu@iKus&N+4lmI0hs zhVZ!ra#Weno#6aQ4;I9Ei&F4lPEQ!P5Y9v=0HK`ibp1Yz(@1&wNzTI9B(Ke$AW_gvsEamrqS&m>O3 zd{`!P!e_xGh0}i?!podru7ad;cK;6~opa3#fDFz8YSU+O?o%Rhm2-s(l^jme=YZ#O zGU+Nv9_QyqkbKVDS7BMeaXpT87IW7Ah_E*}!f~vugwwYax-!m0CUoVTd3)ikf>TW! zbtPvNjk~Hix)zvJb5ztQui^Or0bMPpE*)O#IFh%3tLGT#3~1o&*aWVT6GZ89GlwaK zNeica5rnrmO{+m#IX_UZq>VGX5zD>JIkg{LJI8~z-ww_K+Me!k!?|%DfqFSVZiMSTPCyryJILvxdH-F`_n(3caWd)mKFrzG4a*VE=KHX` z$JtEv!zky`EpR=?S+fshoFglM$pq)pZ@^7*mQlGn#kqGB4NFJv=4}uZ%_6WD@eFy`%$!Z7# zxqr}FPH?xC!%Gl%4z(VGxw=7+P;PrAbYa{dw!`uy_p_Z?QaCq_e(w?7TIz;IaTE7~ zoZ@DD06;X?EQRi|k5;(iYt^Ey4y3U<^1eST+^S3|> zxF=d*S;$>c1fNCR|0qi+=C1z_mN&S+?FYHZop={ZD&_W58>Wm~d<9%N_m|gTS;1XP zc~2F0a|%c`_n#E3rG|T9FLbrs!D0yOxPg?hG;r(B0N%(w77vpqu8Mw*&D;rZIBVfP z{tk4l+_EPjY~y~K0h8O@wr8=jcJAkt>~(N=((Q&$ZthPYU0gnOhPt_r--hcR?(44u z-pdX97?%Cq4YY^>Zfp+7Aa_n8$X#xz8!U&o`Yb&32>0Mq@N$p)L>hFX+_I+-c8u%Z z3T~VmLMQqZS4)S@eeTsMxSr;A(QY%t9sd^O0oS_)#F6(aUH)+5U7}*ynK$PPa4x(` zYT~)_a*yF7*vnfK0Np;`D7B9F^IrKACT=_l7o0oqZTeCV@K|)w^bl_zJ%cCjsSknk z;u+}$^XAPP0C$*oh%y}?-j~%_k}vNa8bu%F`M1KvkN1Ge0e_xr8k`;H&7m(mfERrP zxImu!KM_1`=VZ0^*bSHV5699zsV(A$oc}vS7jN;8T z0Dg-11|1X8ysZoXVt6ZQ26l$`+)Reu6Fq~cE&E9}jU*~1hxsuOwptq-h zx8rMA7V`Y*Y%Jp4rF5&9*FYWC65h9Kz}@5}?1$@8UJF$rWxTEQft2&=d$FWSUQ{~b zRq>X_fUD+3(1fFgS5F^#EpMq7Ug~)cd_-vAJxddnMqViWM4NcYR6jKHmRnQ=b%`4di($34e3omzgD=8`M=n0Asx5Xz0dy z8Z!VByzNOKlf3T&u!t$%>e+C8pLaY6fN5Uy5QH&@4X!}VeQA|qTM;Wtu3?!!OT452T7JGIJ= z^6L-7wI82JJG4LloF9B1f5I>)KoWcC> z-v$ZcPbR`Ll>gr6a2CdYP7c6H{*$l5SvY^wAcPV8=c%O-$^T&+08xBy5rn7s0kr)_ z^8;4^9>cGvm*F)3%a@=#!$18g0B8AoS0d~={+c}KV)>6dV`b<0qEpbt@pI`fK`!va zZ-KkW-|+@;@%(L+#w74B6CjZvu@Znw{7-0aP2vwzrJu|n+6rL`|I@V)Ugj^QmTW5j zYZ_);;g`}>HjVE{Pn*eqz7-41;%}iWFPm@P3iwt2_TNEr_^X;>d5telgUNM%^xs%Z z9{*!X1oQbX8X+v;r`SP?_iSj_*2vXUG8`l|?A!qVEnXny{DN5s zTft}l52TX+gEQb&`~=!YYxtj1xl_x3ntl&;d=DO?*YlgHOlsiAzXsC8&rrZ;Gyln8 zShnz`mtlE}?^6%b%1@*}2EEN6;$ZRZ{QNIq*}*qaQhJ9kKMY|fUwa&+n;$^4$R7Tq zPs3*~|C$gceSG(IApQIdYV-{97nFe9<^M{*#v%R(Z0LshmdEf6Bm5gwVvO=rsRuE} zzu*JmIR9)lgcE#EI#(w7f6x(fpTA-WB24qMtKnsa|5+EjJm4>&p{}Fg-x(~zSuj9j zY8S!lZ4kN&7A*o`ui!PB&F>QoeFUMKU?Y{C?t+W;;0_3I0O8jmi2n;h55eETi0&zf z{0IOqK^C<)yak>)5FQqEQO#x z!MFmr0Kx8V2m=M*(3R;Ef(w6v3liL-7I&yXNwr#-pnDPGofLRQ!X#Yq+Pg4`5Zp6^ zixg~n3MNs4{nY0>B}k`9Z?qt)7Qz@ovK0|d3+}nW@{Ayh4!*O31;0XfP7rz@Bv#Nx z4e0ZNPwAV!D40hht$4u+nwBL90_lEMqTrb-kV}F$s7;Y1uu>A7Ea;|kCq>Zo6}ZcS z#VX)Z1z|KtxFXoN3tXDuJoSFl1q-P|mmye1RZphiizEQD1Txysas(%I@R=+4=OA#` z1n=KP*z1BG`sDKj&n<;XzCidnyc7stSO#IC;6NF?6bWMK_EfRJq742uv}EcT4c{16Z~SI9K4M zP0&p_dxzjSUH!TvSV|>Er{GEIv~>w=^waJZynPkI9)U+V;Jt#x`w;dC=FpqfFZh)S zZa^@LnpJ}WQ#OQm1$^3DhXlQY5Dp7&y@hxqf@(?&?+JF(Rrygte+q|Ty|PQq^5QJjUL zRDHS#pCF;D@Nx`D|DIWfbgGN2zyW%GY%6E z;WYL94+%S%5PAyRV-ej;D6IzZ7UnL2$zdUfdVoiSGs9S?kFaASIA7sNe#!#e zPq^QLK>osel!_e_>c4<-$>!$lOR#TnFzp738ygGd@NdMrFmnFa8DJYpB7Ggz~qcD z{3N)u!n2gHo)ap5fwNd);25~`!XG~dJWe?I7)&k*AEidtMd2Gx;1Y#3Hke!zzWpM& zB;oFNV3{mzeFY{d!htHpyDYTPebZFoA|WiV2&+60Jx%y4k!o=sXh)m%- z{{tXP*t-gr*}_GXoLm)d8pqS-2x}am%M~tYg0pKvUIcX4g=rT-@`M&4qUQ@6=x+cD zge8B%S)q`X2tbkWJ~ybAgrh54hlb^6aB8R zfqDW%!tzrP4hwyZSlNis^bv&jgc-DrjtVL@xp0iBcRyD9{77CFZQ?jl-#9Gt7j&ji3; z5xz|PIz-QGgynwGTQnVT6CGL#OLx(Z0604!`Y#`VgQ9yh0q_tljl;?giPXP?c#2-4 z)|Hp&jZcB|7M-VE%187wWz@c+mATLz6@B{@T>FVwG`sc}{WJ=bW1`P!&pIw@T>_H; z(PH|Wtw0e*k@#7NQhxlYcCX&(Se^N9N3!mYl%q8#=A=0h{ zi4?W!VHqWgr~KuV==oN_qeZ`p!NrKYX>Na7B5n0m!PZKSpcQ9S_nqWU^`$rLrvmX{^ENMAs<$ZI#qRnZ(eMRP>fR9NPU z6x1ELCfZ8-*>%wq4)B>L64FdRU-Snx;|fHECPXh3y+G$}k?8j@2#ZCVM?r3g{^LP- zQ?%_f#48oexeLoOQ7#RUD@7kuVOu47@E*8o5rby)H6qo!u&fmc>JXt$RJ;bdMp0`3 zyfld}`hhfyp7<6fts*g%fo-B2?_g!OMd#@qY!{hmgxw)xwBS+hh@MIZ*D2bP23?n^ zW)fVtNX~=n9+7DQT=$A5s8!u33ZX5wU&Ny$Ye3{cKlDM-+!#FVUD2~Upc@ipuZM70 zbmT{HBci2r{@oMt4?;L9+CW*}m}qkY$hasZ7l9^3kJGbHin@2A>9=oucD< zTJ&)q$c*UL4(J|;4txyGQM{EdN;!!~zl6|PTp9{5F5(d$bgtsV)X3T^_BezG+b2Fu zHTr&WC{;FY;-{#Y<1UV(3haP*ycL!Q#Xn?&c#4lw*TG91M0JO^xH$*7!{U7u{fPMe zdB~%eGMVYmpTtItBrdUdS{j1{EU!ltpe^QSKxnd!uw%5c37Le=W z)v*BNiOn*QLUAzV^F`uD+Ovwq%cB9mDdx3A_>Sl4|D4R_A|hPC1+C+C`4jZgM>=VlQ0RBNT_HE zm+YnAbcEz*+D0QK1}jBSR`Nal z)Xqz0Ed&=Q>0gL=7bF9#A-pKD%!XyWq=oj#1j*muL6<0*IS$K9l0Zk0B#D^%^U0DI z)&r0t`DYsBvLr?YVXCAz1n?`8FQ|;jkbJNW3(Sme(a2RR85kf~cX9FPWx>aH%BnFkDwiTAV;CCA;2+>ne$it`t{GIMiXSk^JWh zU9DuvR&aF^r{!>6FX??9VH+gR=pk&Bbj5;elB}TSQM06nN|P4Jt90Y~mPEb^q*XF+ zFXG*noQZ<7c1hTyARUsd4FKGceDgI(r{ps&gk2JbHvqkoIS0Y@N#_5I52RnxOv&DW z*zZcTeb5a_c2LeREP0zs%X^Yu7Rac?ohqp@2~!C&E{UKQY(nBkXYr)u zIL(WvB;9Y~!@7@e6Wp|9gsu@jkoda3}#TiUx4 zG(_MQEGck`u8H>j!Uy>uM3dY zQyy|csxATvlJ?DoWw7*zC5Rp(eQX6RL#4|pBMXy?sHiw8t#t(#Eb&FG{Ve;U!*LdJ>;mf^_^6OcJHzbWUHATE4-fBui(VhDnO__dal!rB|pM zlPX;q2JVW~F9u%Hq!-U3LWcCKeBd&ro^cRnNsmUrS+?}I3(#Ga&Y6Sf%aOiJUB+DL zbvoFuNq5ola$TDKC2;xDV+1ddR#FeCQ0l{lWs%gMehmBvv?S}uKph9DKv84XCKw1rk(B`u?FeYNz{xv;F0zC4O0)k{170BMkNmcmP; zbTbuOP0}Yrfoqojm;-W4+DOG@tMnLs5^d6TLI`h5dt`WqcIhDf%}Qb5y#WdZS~~9!iZSr5?{gI3=C>7?$^?NkVYb(f~Jjc_7{LB7}~z zT?+wllD!}Vah9DFL+2t(e+lq?GH=R$_sbsTfpe3c{1ZBN*{69}=RsKvm82fBXQ*_> ze@03Z2T$3PRC#;JUJZcITlP*T;vJSvQH#x2Hu(wwM`g3=_KlzHxqlGPU-rrfERV_l zp+e=jZ0(QW0%T9_gh`<6Gq zh<-!%hC4`!%<&e&-jsFz2Ch`5-VBp6*`_=2QZ7685du}n_>>S-$~gTXHL{CR2y11* zpMtBCmC}8%dfB4SK^kPn=RjIy-;}}RmTdetL~oV(JOI}wbD%QfwrnsPT)QlZwxAB# zzm&+|k!}7Jq*M0FbpX0#x9VZiE7N_32z|1%S76yM^QNybQ_~QlWBJ=Km{} zJ0eT)hVGus`x>}WS&;!`O!n3rFd3J1@Zn`b_No)er0hG|>!xJO=?u6p%gX_7T9!>k z%#6%^7q|zqh}+OP%Ad7@bCTbpgUDIFn%es=^4TxIr>neD2WNZbkGz1D?UPpyf!i;i z(1CN4e@}Btclk=1%N&%?r8_kq@|#ED<&b=U+U=h5N=hfa>%p;nPoENmqybOvSUVef$xj4C$`hyqbwmr~YlpnqTVZ7XH1n>m;=YK<( zC|?`|z$JOq!?uXLa2O`Z@^2CmJw?8SGP%q0qbuPhRen?i-4*#YDuL7F(Jug(F5gUN zK!)5vBhXCwXA~$~{`6+(uFAiptuja6MMJt=`D&^=uF0#{!ScG?M+GiVE)YSNFW*Vu zdx88;B}k$C^#u?X$)^{?vRM9d4c2l)E^UIYM81{ghBxK8H1a8x&lH0zllRBtiOS_R zN@gqMjQY8z`s?J^P5@pnAE6sd4RYZPm^8{OLLh9C zJ6*xzo8{Gd09xc;l)v1PZ=r&*RemWKT$}tYKFDo(Q3C?C%N75^ONX3C$IBgg{1R}T z@~0X>y5vm`z;(;_(5v4g7l-1(dgWPZ;QHiWew>Z9 zjL6F$f$pBX>rJ>Gl@Cx4Voa`|fyuahFdAe+zLIj&NqJm7bW`%zZb5io-bLBPv^=67 z+>CtnqX_#z{!%AQ92HL)pmS10>;`dGjCdk~i$X_DUsr|K_XxXJvELbM*{4|lJplU^ ze}_WorchwhddyuhNoU*vMcyYM2NmZYAi9Sl@(xT6Dfauoi>D&E8)3Z^{cpjkXLb@0x5sH7?u%t+ZU>V?1 ziZc2`-&2ZAnyW=CBuqSejAE??xYLSLA>hs^8mIt2t9U^7($6ct{U5kEg@&$=UQo=N z4KEiJzwd)EUhy-1#R-b^e!vqI+#rxkiod=GE=lnVwcC>wpF9eZqImfx7I9e-aSbM^ zit8o_uPDT8LDCe@QHh_fSV2W^hC;UPie^daTr--C>X1?M)6@CSZ&piMyR0tChp-A!FR=|rD&(f}VL-9LR z&?Sn^Mp)id6yF6YRg}L6VVPow01?U+8#lqSLQ%y7yi)PlI_Rnt^^_o2D}FlxK#gK` z3D#Mwc>Fqab&7x6VOg(OPbYJO!v8;5HY(oP3TI7qL<9e_1S(^3iQ_jnQ$$q8W0G*riycyBmm0Fto98jhnz^Xlz zzkdXiL&|N_;5?PZ)C}-aK7SVgZ{>Hs5FS>BE5Z3Hd)H$TN0p&v@ZzVOw*okSWikyO zjw$ETV;)yJzJjm;%2Ill0+sqen4D1hJ^bqg<;Egd1}pohvk;;@{xqD0Di=^)9HyM1 zT(uSl~b>Ri%`C528mRvLSPc545#}`r<9M-rSoXzMK?G*qcj`_;H+{-5lqf0 z-`xdata4Nia$b3PEp%~8$1BiXQ0AorcTw3v?@PS0TLRY!%GWkPm#93T2f3u|rFSq% zIiLWStemwJ&yb>2&@GzF$_LKiQkAE_!XmCHS3U!HnzAqhBwcxcik}Q+;xFJbl~eQ< zWGT1O(UYx=W&nOwS$!32$x&A9hGnkuk1(v|nlir&!t2WO)KAV+ZjA*lUn%++x&o#7 z1CT=HlT@J;DP4DiD^|X}1BBf?GPYxH84Dof}yD^q@a9bU?nlaugS zq3no8yh`O#H^8fuzViXERz}chzef2IW&X9wF)mE%l-V>~s8>ps0N0@8*1}n%a`A_- zY*L;(3(~B-Mk#8Gvgb6s+)}>!FSu4^QY>_B%HJcv-Bya|j|tnA5)Mo{l>bpvtxGwR z0n)APr;@uzd6xE20xN<}SGNGLF79vb4FH_|`rMyHF>HErGDxjNI zw*3QcMp^wF;yqCAng=hAs?R@#&Pg?W1g@P`iyA>(R6Vqtx~hJrVq~xC&6^+oPkBGxI{PoGRxgJxUR6rd zhy>LEZ4_5Annd0AC)3+qf(t-A|yMYUFhXHQd^ zmjRxxvV8?%hAJc;J~LIRg@9+NZhQrJwu<>JbXQeB&?q`bRYkq0T$Lac+%=WUpYU>B z74SB=JkzDN8qzSwf$wRvruL1h0h|@UlhGq6_W&VL)CBtCMBxnx3RLDs_X~w zQmWd$1Efqf@fxC+tA^FEtWYuRa9ydYqn~z_%KUH!rV_-1t5F@IsdKF=n#!^|)&4I5 zs8=}!1KyzO+6G;tic>_W2$L4oQo0v=OLdycmR8kQr66spS5^aeTb1Gm zu3cqW2+I!DHW?P*rK;3I*sapjOWULRonEkBl^0zT=~JDfDx_c4{R+sSY89Q@cU7)b z8xE-y{eTavR-DAsj;OA*Lw8U0!vM&rY994)$5f*M;Ko&d&=XCn6kh-^rTURZwf9x| zy@)rhTJ#y5&8RwRz&%jCzY91gbqnpu&T1_kHZJNm8t%EO%M(EMs(DXg@ows;x?t(9 zewXh498k}=z{^2(&0^?0)TMtR-XV46>xk~D_8^~L>L33G@mBBJ1k1zfuDP)EQTyCS z1Yh+)D=d$y8|f;DpPCZ@OMi7J6#&Q7yC?++P;==jPoR2~8iOa)zfxy5Nc~YE;KAx3 z4+ull!PMReRS&%g5~ePtjO?U(fLhMsYNy+xxxBwFumK^$FS|S|emW2ETDAFIaCPc) zpF>x#e&$<5Xi%@EbgNOF`3+n*ssAj7Nwd0)ve6cG3l&DU)VXOOt?CXwaBb@2m*MQT zI($2X?dr%`SZ;@U@lKFC>Te@KI@R1XEU-)c+)nuHR?ne6W{-L^WdgnGi}xTLP*?p3 z_@LU2nud4P?{~puNL_IS!eMpk3UDLpON9X3Q$J7X!Kiv54$;TdV|28Rs~wksOsFRw zo*nAMVQ^Dwmjkf8ul}qX(*F!T{3*jNn z-8?w+)J*;WotI`MrDEQiSC+%)Va==FFgc>(YQgzv+|xjOHOuLUJgRX&jp%-wHajBt zYa9xpJErmDKp3dmumfIBXfDxDElBgIFbUPnTL>;p^CtC>PHK!= zaN(Ma|DcP|#L~_Xsrf7sfub~LQt(8lG_llxj@JCN7?v@bi(KeVYf7k3dq(3)cZttx zN~m-`rD5ToY7d4Lie~4-az``#B!sCN#VH7{Xew@iq-mxjAWYY!)4rRbncfR7 zQ^Rh9>nzRlbR{5LbB%g(S2c-_0OV+jlR72bk{YOZs77XRSEEtukqgt zU4iBbYN5vpHP`4RD$*QV0$s7j=m7W)4d*rBN;E&Ogz%fgUNh_g(xCY^8W9>b zZ*sAgCd~rMRBvf!^FUfPbEu|l)99apWrybd7MR@8tfPddQxo$noONl~bozE{lE1lAner?{(zPBX}+bIM!#n5GH?SLzgn0KYCfY)?yhE}7-UHE-UR@LH8Ei@8PVkR zgS)3$MH}a+<{5f1$21-p;Knuo)&oAFc~cHDsaYyP*eT6gN+9oRo|uAgTC?IDRyLz4 z8G*A0nzYT}9JSZ)LFc5k?uXD>`xrF}T(qm&z`1JUYT$aWc4QO0?9+ZCLcIOj=pt}# z+JEXn+_hpGOb%!}40x1-+UV0D9$MCM=niS$rc%~Z>vI5{mv-!5aNgQ#di4)$xBY-X zN3`{8q4Uw6rh5Xu+6pQ$j%s&50iS-_zK7YG_QE>oj%j=TgfLL+O8M>y?MLh2EJ*tn zRawDWQv||>X!~ZtXQ=k4=OGN&-lozyLK}SwJ|nfIXP}GL-lnE+jP@Hkflg~X(&6Qd zc9}muth3qy>Xe?-hEu0BPAl95?t(V{YnWWr9<2l*UhDW7d?sjL`~!eQZTsgCUedlZ z24Rx6_J6QU*6w{4@D%M=3!%HLy+Dn+RBa74Ev{%kq3R_~yXFc=x;BkEx*6IZBLUCU zc2nasOPfadM7H+vJK(Nr-NK>E(N@Y}nXBDW4lmcVh6muTYq>P&$kQH~2Fcg9{s^B1 z+DH083bpQmuq@K9T?(#P`!$VqZfFfIa9yG`JdGvY)QYH~QL24|Ca7iFnKdBg+K6Ki zR%l)6)UMRl&~=?EEq6Wu)!KcOiPvcFbt8JM_SIKG>a;-@fveXx)78=j?b$^THfnEX zLD;0dWP-3+`{FX-TD0#`I&w>Us01Hft2X;QxHfGdJ<)CLAlrJvb?An*v+hDTs=Y%c{+PCjGP!Z>?L#0F+R(FzKB>JE4ZxH({}%+hukELD zbz0ln18zq9G8OI*w6%>Oj=G6&A#~F9ECt+ICq4tXi!PLYajrTI4Pf``GFi~=(;cC@ zf4}bgWUSgv7ePn4yUx5FmIrj1&JZ5d&7oq_L-!wDFFB-pUILw`u8B@xFI^Q~!SmMD zHiI1272W{gh|aMLoR4muCy1|ZnhK+%I*i2d%hAsHpm zBtlnB|ExfyE|h*wQM!b5n4Hp$i@-(ePSZISqdPGNi#i+SVDUP=BXkKmw{CEWI?WaUF6q`U1UyOS zLw(_7oqaw?imqxigjaMWRAr^x!rgm!(_xF}Q5qkMG0vRUMmt57%_AbPMXb zZe$z6=IQEJ!ZKg?dLWz?=oplh6zWnQ2f3j;;Q>;jlRWGK=-j*jDAjGOf@PWRzZr1l zx(aHCRp=Z#u)s>)mWP>~F60>qt94&e&R(PI9fz(~S4S=9I^73@AoaTc{s&!yPDq2l zM%@EvETTylQjK`cIxV%aTXgkxFuA1@?*_b8r_F+}O&3b{@^0(SeGNdnZt*t&bm*R; zPw9^Cf*P(nb^kVibm<0;K-aB1DTJ3E-R`Gh(yJTX4$`OlDh$GY-6?vn2XrCxAsp0A zUq*zxy2n)@L%QlmARN|pj3VBME{P8PdpZX?14eb*C^?zX)lnCGQg^)ox+$H7^6UG$ zMZZ8dtqTmmB4%{X?<3Fyoz@X1j{04{!mzpn?xIhASkmZ?k3qOse}pdR z?9&Tqw7*|}fyzKP{ZCBj-1Q&TL3lu~r|1Xu`{|mNhkg$^JEZ6Og7eh>_9=*${?l9V z;;j$9j!T9L+RKvtqzoHGU{q>)F0)9;YiU_*n`nRK@JE8yQd2m7c zk7(Bq*3bD1@DTl1bSQ@EQ+&aN>9aNfcT)fNm*B$nN%s*iLhnx<$VmOu?}J3?IW&Jb zrLUwTD_YN?W`B%cwH2SzX?++~>}T}VbXno7e$Urf%Q^l0aXeqFzWW-u^ZMWK0~e=X z;t4PDdMgd$67=JZ5GLxsYsFeF>0PhEOOpPt7lBLGpJKyVivFb(kjwi2=uuMj3w8l; zMIS<&c$)r=3lOI3uWkg%(8p4~l&NR8!z4?8`fG66`pEA{ zIMfFcV(|0;2{n98KEn;hHbjUpj8SSEX^17C(S}|0L@|cn=ny__P?67bhVc{7#Tvem z1AgA{AB|Zq8ajRO(Zw4+u)!q3;P)nkNroRh;X2t+Oq1ReLu4hqTrq6(1W7Y=Qjwi* zh?xSHWr(AZYqlZ(Q;@5M3sl=*GrUQ;)OEuON@Ma2LrD-88kYYKuE>x>hkmi)b$&`xa)*}&!_Jo>Y&Ps+ z!?MM&ekpXf42x*LzHO*@9A4TD`CowRFoeAc(q&jh4Tf%mc>@4FhEFNY?l%-u_h-QH z(k75WgJKLO!-f%Rj*S>L)5XtwhI7;~9XE8{05@T9cZ0J@gZBjprwy~|r#)jhxEDSj z7&=2CbT$sr4(4KX_k&MYql|XG{lHhnyv#$Tun zbJ&>nF!wgD-ww{l_&epTe#SN1K>Ur{w_s(*jGl|Y1sWGi@$p0%Ju)DSF*2kOo;Lda z0&>Rq7u}^gYuxiI7I@Bhm40fmMlrcQZ=5;;U7S&?1-W2cPIYm-@y2!F5{y65yg$+S z-764YGHMtQCK(q^fJ-)JwZ&8ziIq)HMmlvuNO#}v85BZa^s2_ z=qikk1&B~-G|{$QWh}~tuG*M!0$%Ej9jzliEn~?zgssLiLO5$Px;+W*wlOmTf!d8NnIIj;*>?cAV=R6YUOJ5?Djd3u z*UO>nHa_7FU5}A10oQAcqTWoO@!e>+?l&@MICR(eF|~b$j4b*dhK<@@2uFjj?KQdo4&gqNBnjMp)A14nax?L1 zzjim7X~#TZ`s8^;IB0ro3^-5I6uqrpCe2X<@;2?GJ;cZK=n8o8HGR1Qx}yjSz%f&X zE8xdXpC*9|FzunHVUXz~YH|gedM-m4V)9)I;YriNH6Y=pANE5SVY)}%>?o6zQpQuJ zQpzWyP49*vdW@+d5`j*e;;3_Z)};Llmgh_?8UV$b^alWlGg;|RcrKWVcf#_bY3_Uo z<4wWTC`d5fS^{U6Oe2qjOEP8A96j0emJTMDO;7EEFx6Ce2(GV~X49*YW_nDA2HbdWicAaNftO-a%Q(mlQ~zVom6&|#>g7#SOeeS+lV~+u*P6bo1)$Evqo=Jmg@z(R zgXzX$xNbC6z6Y+!bf1Q-%_d@j&y!Lrx1gg&f3lbBwjev_{&$X!zty>&yT^?LvqHce8A zKVq8qD!6;5sWX6&nqJ!oZp<{9kFevWO>^L7!X%;=_oV63c&u#7^rs45?wjKCAapW6 zUk=XMJeU5I*u|V=gHKoUe!Bj&*K8~We4jaY1;~E$Z|}pz&3rxvxI^Yos1NOFE}w$V z%lsO3#k|dr(0+Ez2$CXhgLeGz<~FyHzO zCPC)75|Ci?j<=u-F>8w9I@DZu4!B73a=LyIWnNEzK7Y!LQ61h$b5$rvj5)dRgHR4?~chDV|c=M+xflDyYr&=`8{KW>4 zOJ*7E>`CTVx&Ti$Z}}AQQq0x<0Hm82Q<9irE~K|L(>%HjKC{ekWJ8y2zQ6_is(G~$ z@Er5pR+!|QH~C{N1?J_HAr+d#KLfnTJoPek#pYSB!u1XFZ!(Y)bA=SnD$IgJz$?u^ zP|jCn&e#Z2ZFbEBsWC5p43@QK6}=2~=A%_0&E`@Ta4qJI)S10yUPZsuRoT>+bk@FWsmt+4TQaB9JhGu%&Bx1_nRMo3O)zS z3yxv&gXRzE2)S#1kG7{F^L%O@51aP{0Wfa+((?Jwh#qcdKw2%|(L3K}8KCQxw=Hj6f=Roj?H%YkECp`B z-LcG~xkaaCD?NL+B`^Tddn|)g-1Sh?HvhpcgQLC4eD@-%Q>)w{D?1-Z87kIjr-zbv{jq1FV7`kU;BNZ@^DjzoElB$U29bRl(LM z`jkSfUS|LZwQkq|XJJ;mD*z|0QH^jGZgr;SN`!SM2bPi6UYuZ$MOiyX@nEN{&(a|r zZT*?@o*3)h4&Y8(4=e+B#+vjSp7yNuUlVZWtcjFC#9A|)LC#wnCGZ(%-Ae1cU~S$E zz(woh^WZGr>Lv#u!TR}Cm?T;|UW4$G^$D7UCRzD*SSDM4p}QO@*4zZdyKMdX0oIag z&84SJw+8(Sl3@)>MW9TpJB?tntiyD$XIn474B=JliA*@lvF@f`bFOvG_lS4R`d1%x z*R2VQ;5yH`b_}|F>%e+MFR=dfJl0ZZHPBG7$SRd^&2<%ykq5mgFu~Dt*U7k6X`CJ9@%8 zi@JA{R!7Q(r>xWM@N(bkO{LJZl`VyE#@f0Lc_0UEA}Z$8iWR+8X-dEZ(-p43c2`_Tf=rQ)~hJlI;+kw@Eg$4uE9a z-Fi4nu@x-9k}liYa`DiqHV%#RuGrG);&qzsFRB#NZ9lvTl41Kf6<#uJozyeVvT>=Q zk!^cQ43cXLq-5xtjY}$csLGvwJG*@-3P+fM%jX9czmG`1?VT_HK{6H+C#HJdA?xrn}vdU81hji?g*~X}(DYum!g6j%f)L#fxX&dnYsj|IG?`O5G z%@HOwwlAo*sI`4F0@ro6_Z9$NZ(F?@&Khh^^rAG{0%Ks(WLr+_Y_{E91}`l(**{ps zE!)^Ocxkn*@P@9<_GKuz+cuX@=-O?s&==leTRZ{X9orz4+?}@V^!;_&PRXF_wi&5! z(`&QPOWS9gcMQUQ+ie;`4%nLLd>FJ%&|ePSwZ$KR$&f9Ks?T9t>mZgpVmq@PCiiTM zX;?FAbJ+_rW?N4GeABq?r6~X=Y+AZvF=@L^e~33_+m!&}ecL~`~z3q?F7jW1vf0!ZJ{ocbz;A7u72ArQ= zN6l$}`&XYJ&@ubx^biN?f*Q`@=HTE~Z<0SL{6!0MhJ}9f*)=pNA30 zV_Eh-nm1&2K_9nPI`#RcD^6m9hF%;PE z(2i1QZ=x)y$nFvg*TwdKv=H8~UmSv$5_>G2hBxgkYk(`YzfPTnGW+QdKq~ED)3#k@ zUq**;wS8MM05$eUQ{bi6KG*}3I(rKf!g~AMwJ>S0@1SRIwEz4mNRvJ9SHPR?9W<(K zu`i;FJ-6(}pMh(&cfA3w&7M!Y_ig)=xghQK_h^glu(#0_ggf>&YM6H0`z?sqV_!BK zq}QHITS=e&;|A#d&%srIWqoz=0qQ7`S9qIOz=dvep}yUrE_6cWMT zbSa1+Dk3GIC@5`!l!TV(@64zK=!x&TjBFQQ9%y1Hcza3ia8X(xMh^?X`$jjjGmh#NA#da(^mCRX=S;W@c_ z6D>5Kt&XG$Vrq35?Oji=X0Aqrxz&-QfFBY5vj{jRVGrFGXW>3REM0_wv~YJ7e!mYw zH{rjpfjcVnq^Z?i*xm}EhcK8Pho><6UkJT~<+S7HE#yfM!AICc)xEFq;0kblLYKE- z;xF7A2`)gm`Z!3Sa2>5)f`lP^pbHjSwZZ2J;gfd}JwzBv&*7x-`Q?ZZDqQy}Ou~fW zv=M$vxNZ~|7A_2+asIS${wM!^IpN;|2qT4MGzXj)+S2?G zB|JO?lW5_`9T3I{i)eG`g79_vTLbaJyJ`Rugh9R_iNcT9!}Uesj+YVkk}$UjDJ2Py z(xU0Iu(Jx>6=5-*Gfo!%Q3%Tv;c5;nuL>nfT*@`!8fpcm3eT;Bvov8Xy&>tsINDs# z5ZY5GI8%5f0bG{w^+|9ygza>s>Zb5NDzI(|56FPa5uT%#Las1_%Cy_UH>*JMge6?0 zn=jl^1Iq$o*l~C%6n>lrVUchLb#3nmE$NJPv2cq9K1+nXM_^Jatf5)0OgOp=mUo4k zUYL{%3#j(45S|)Dy4Auun!sv=jZfg^p71l;7^@Y!Q-`ij_&zO#>V1m2^b(%|#F=5%(?vIg5T;3xJEroi;sPMYjY1 zxQS}1A$(NygjP20qN}tw;UW4V0bxBwhp24w5>+(;?k(CtEjAyKR~!JoqWI_G%ulpN z51qg0HhlrdMCGgD`naf^ioGC_Bdt?|MFUj%pAgki2P8yv>sQpNlIT~O z5iX0?Q0aa}RPzR0CyRn<;g=%X*$tDcqP@=Gu8EX%vr7wI2WSt?B zQqi3&a#AADZP927Eb~PBV}Z*T2|j~KfoO)-0fnM^I@?qvO3g;tJEF=!#48rLe+PJp zX#Xu(mWsac2d+%C?;Vi4A_I+J<)UgA04hXFUk9K{WO^4|wdlZ~FsTv!_6L046aBOw z@LG|S#R%{EN>S5L=(|{k=KjJ<$>sS4lbodbpChvY!xwm0eC1{ zMa|R>(e_n{&?&mz0AaUi6MX?aqH+4TdPOfB0IpADc^bNYk)sOH2Snj?u5wUhM2oG* zBHnUD7!v(SRpnDr+Blqzh(>5}Fe;j%=Jc589eRx8BBv~PnGjh~C-Ip`g?7{YDbWYB z&`pcx&%w*A$es=OoG9uRxFh018o`{z-_f0S7GI~UbrFYkfVhcmMqzSPoJ2#VyLiV9 zSbB;_K0pL7@vF6P?JZtKeJLOD%VL=LiuvzA=O><}m&jk-{QwCDil<%#cTB8XkK~Vw z1Kxs{AaULr=z_)GRHKB51LzRkNwH80%TV#yZkU9LFXaGmN^DB&zi{zgdTq{%-F}2+ zggBM}=fuy`QYcdF`y8U57hk0jI!c_s4kTK9;5>ve;&(rQvskgk*9a6R-bEkR1@W8` zBwp-k3}J$Js~lky#qZGRu!~~B2?#HVm($tFB=KW9X@6O~U>mqA;&EyvC5sO#V3{KJ zreWr)_~&wvYvQ1vkzlI$FY4N+iS@L^NEchu3E>R!U3zetV*7cxSy^JYaKy_Nms4Bv zy4dSQqPJ3t^jhAx!goeD6l0ru$5h^*K1QI4`PJ-@~#7GYkE-_H^_OxUV?S!6{cx;C-LQ+MC z70yXQN+FDtWER59d5IsLxQ>!!(U2Y^sd|KXv6B3F#EX**ybeI3WSB<9i;}>VxXeqE z=%>IXNy5y5yDV8T0%ysRf5KssBH2rQ;j0qAL$JIi`Oy!$RLP;m0HjGAm&0|s2L$CQSv>FicOL(f9UQ@ zuCxLEK;mZ#VT&Y}hWj>2{cpIUcF9FMm^_sHkqXiwx!VL?r{sVQymU(xrV#c>;%kva zuY@rLc%NiP2yp$9U9{L5kYp`^a8SafpBg=ud_&uLLlWgf0EQ(8j^Nfkk@$WJpHC&` zObACM#C?Qi}2zs zok)OB7irFii0&$Vmv+6}q-9iw9+h$nA#|5|SOefGWjz4rC2gc;fVcGUSr8xTd$juW zmF}S4n!ohm6$A>9ra8h(pwuT1+%f5$3XtPc?%RkSB-K;rD_Hu61IS5f1RZJ$l@|UA zU6{1+I=EBP4b&(Im#!&7f~TcR_Q2U0>B+s&os}-8p9n@sJJP|OlN!_H7Ad_&r-08( z-Bu%sDCvD_ut!T5Qimr-YD5n;R@(I!EaRlxUxV<1G*Aa&y!1dKl1Px2(R-aJ_1+HQ zMXBxQ;4VqO^aPhAeQqPT%hD=Z%3hJ$On^(4{+J70iu4Sv7_LhHK8~ApO&T=-E>$`+ z1Ck~kT!=i=rH<4zpD52Tt$2-GHZqAiMc>8EZmc_`gP zg=dF!u?E6UDW8U!E@?a^(Jl3-rB{#CoC#c?^!GbRzF)fD0nP@bzfqIqk@PVYE`!o; z8s{HNm2UtrB-QMPvtg+t8@dr`Ssiqv(p1_h9FuOK;eJwj(F@L=Nl%|b@>5c;e?X?C zCJP~)k-lgRFLTn9G))|lW$K}Gl6_1kY@B7Ue}Z&fWNB(RbCsQ40f4*gx4+@jLl*WN z;(5x>{s!VB`i`dwMfL-5OtyLn$Z^@4;~-~b1_PX(m3>qP5+U1I z0&-3kyBt0vW$)!9`SY?*sn&>+d42?8wCr{>l8BK_Q)fL^Cdr2`PBw26!V9t+)Z>ho z8PQTbK~`RX=!voj>S|t;z5Eh%mt@{_MM<)?5|GQX!_R=bB0K&POp;|^T7sm=E>jV8 zRko=C(XYua(pFKbOx+GZn#`~iKGS8H)Jw>a?W9^NQzoL~GE3I<51ieQ{Y&4U*#MQ3WwPB% zAuN}j4M*}7vNCF-SIRCF173q00^L2C;35Lm%KjdO>pIzOT4>hG?CBXb$UdiY#*MP{ zy&z4plT^Dk%U1pi%looi`nwemWY5t;x<%%{3-MZIFHkSGP4*ittJ`I$tMQu3GK(PW zkj?jouv2!+0;Eee9*iWqWr|SfdSvmmo!2WXqt#%ajDH=te%bY3!41fIXj*zC`<4lA zP*z1l-ecKv`bdUkP4p%Y%K|X@&wnB_AA_@}GR+Gx8If&p1{sy9XdoMt?WA+tdfb)kZi4gh3 zLkL6ViUQ!mb+@TwmS@Obm1j?2t+Jd_--*5xE8}fCN$mOOyh{o$%^2q`SbL5}C3@%sx z@#}DXTmJO}aC!2eTEO$=Ciwsq$W6jP3gvg7hp<@weF=P)$Wy3|T`J#2b3mE=JDP0n z$_LIOvvPUGID{4Q+1qedDUV`9S0xXiMPar4@nPs{gF^PxP3j=Xos6U4YLo$~h%fON^(E1>I^bG`)Wk@IQipjU3+58Z$~?<4{}lDATI zKPZoX4dk)>+7d(+dSLxlIlxNaz#4~yCC*Y>!{%<4Dv|M8iZbqI>Q|qj}>n6O+$%kwKKcdK@rjwIm zLj=M)E8e0{)J3t<4VJEopEo1An<8!zxT6ZiVVJlpGN@nRq4@3@gq{i}6^TBI^K_Yh ziu4Bf^jE}YLKmR0_z;$XicjsJJEpi!t90jn#D z`&F<^R($&VjWWctpS?Rk2|bxHQE|y1sP97n@<3p*XP(@iG-wzr!+1(f-nXsgMT&a7*F01tvL)yQOfJtB_MOHBV7b4<}!7wG1W&iXAS%6)8TY z>GO`_uMH3uD_)`AQ;A}LmTaYp&7IKQRXk6_TDfA{2*L`5=X_XJDy~^VSf$`yfv{R} zs0YGY#V8+1)G1P<;ksVoOvlU{6`O})(xiCT2qw*nk15alid6$34-~I#!DY58qP~E$ zHpSaCVYVyAs8o5V=%k{iLt#&oMyKNAzd^bbNv&|*ttg6uNspqF4?v${j#_&Cim?+g z8Bjdj0pTNsm7Mwb5*+0 z>5Zexp`YQ}UFmKHOAqD1E8skpkroK#r92o06CY(%7vR21!CAQWQ{MXwmj22^G-3uQ z&2m8kl?@9(jwvUo3wK=kKFt9^%EH6oPAGkv!G$QF8iPBj)Y5iIsM3#W{V=8FX^?QG zVG}YttrYzUlQT*km7x*J6G}usr{sKvc#%rJJIHzE*VHzMQu;Z-Bu06W_P}D50Xq>P z4pRnn7nDy1LE@D|&!9_CCeWR@r2JqMT#_=5uIRFIH+AHbm0RoKB}JJR0O3{Tf^Tts z*OY@)7o;k`iGfMFvcnR>4CNcND$i89TO&}G(t?ibWGfRl0C!!v`#3aqRV!2Jghq{0vJd2*^5!;J)+#@Ih6L-B z)3oi;s60R|*(PNGRmRQA`L+-~P<~JEe2Y>}qg$);E82i{7ns0$sQA!;fLvqudyQK)uR!^!fHFKc*kp^eY9%;0BZ&YAFmVf4YcEd8|yd zMxY_3iUE^h<@v8bo+$fzVKSoJPraZ~>E8aQf7J4I(s6L|gk&~*M4sbfFFrwovR|)drxKD|^IX;k!9Ej$FBk7_GTOTMatKM=@I<;=#_2B^ZQ-x{deO=rQ6sdmwfcU&c* zsXR#a>!-j4tDbH{^b@KWDt|&$&m2Kcs(z(%D@?Urk0eg1wo*wPuKN8BEKjS_3=p1C znb2{h2-OF!0Gv}D^hcmbRW03@C{;Zj(T-O66@bL37Ue(~t5Q)TD^9ihByjPn6NjNo zP`x`JnI)={gfO|N8m4vJC6zH9JxNk^Cn8X?YUV10DXLNyOs=Y2Xfcwi;#2P;O=TT} zu<5Eg>Q7{-4AUT)s`n)TWUGdgz+G2O{0HuaDvPG_o2nElac-%0Q`wZGavnx5xhg9j zxZ5h@`EZ@58m6zKK=sHR!a~*IPr((b49(EpQC*|Ks#qnUWlO1Q0ZlJusu)^q-Bt0Z z|5>5>*%YKwwMGhDmCB|PxN6k{`W|XjZq!S!RsD7iT%D?yUX*&(3VI6~R8D8$rBStQ z8BCf~$7o6VKov#9c8f|%E9h3$LMtTSu3B6H?x8BN6UwI#oGT)O4vnqeX9z z%8^FXUX`3SgZornuJF>Yiq3`40aYYzr94vYr?&E-DwftVk5$HhA&DW?&$KFkqPqS9 zxTh+kdYFu;=23TYRHZlr-I(em{Z4;E^&Ry%Csl9J+V`2tsueUw9#QXn0OG8^+z)3i>U%UayQ(Wsfw-w1#PD)dT}tazcXdY@h_`wz^_P6q zc~s2$s{LrA!%uxi1fjp0M{i`1x`ht^2dl3bA{yVGWAvif%yB$%QeUk=NwYKwSq*VH@dLr+zA6~J|x zI`A%p>FN*(xD55Z!_Z}_!#)E1y85RR@OeXhdKlbI_0P88ZmAV?mLo@tY)}W#ZbYMcn)+_d>LPl*@2kI~XY@c_PUk#Y)F*49YgM1!2VI-m z5DKnc{eYHw57i&jRztV?4Qk={sBJePmtOU5`uR(r+Wt$Be)ZQ`a5kV0rA5pmwcBFg z2Gxf>K_06I-h|1Jdh_Qn8CJhVW8D+=QCdkoRX?HD_=wu60%TPEDU}Wr>e>;QOsc1E zA(v-ro2}4Isl|36)9U**(9Ni~P#=0$T|{e(Ikgkrvm=@l50Idf<|R5lT!&~(eBkq>rfmRM6t0=2 z13ITQ2iOpv(X656@i|QvO}mkrP2T`;UUO<6NQ|a|28dYAvV#D`X_9t=Bxsg;Awr@i zP7B;c&DH`~Ue-)Yki->@1FhAPHHU5>&ug0U%h082W@z+I)7Y;C$<#Pshb~J~jF*LYLG(B1UW0x{7KE?63uKDxKd4gEl8QBZ!^MH zXeR1`tJF-Zkh(N+wuslOVbFP$KFucT*7s{R(j+{j`Svs{pK4kt z(3s}F5ptG!z;$qu+Q?Vo<-9h8HWQZM=M zW`x0KqW18504{1@I{}kRS~1P&SF|hMgDzQX^DcBL+E7|Qq-tHM7)sMBXg!v$t#yKz zEbT7}aM{}IGT^Rjt!dJ@rMmCVVt#Xxm4CnXx&JTtwg1io_ei_-eRvtte)<>U4Qm4{kGNYZO z-+s($pDu@PPRorzbZ6a%bjrjhvSIEW&- zCv}VH_Jr#0uL2-U*W(CsO6N)|({Nqs1YDoiH7!G+GrBJ);OwmK!b1qp=|T+hlFqyZ(UWw8 zK8SExcW)!2U(wakrbLSFI<2y<>W&b(rb{>mlXTsQ_kqjM`8)zHQ}=c!B4q1|h46V@ z*KCJeZs^=L18`Hv@PP1^?h?(~Il5gm7w77h)2Ytex=&~~K3|tC2E0Jmr~|H0=Rr@i zSa+2UPL$}LCIe8a%X9;GR~JdmoN}Em55fvvmoJj2)J-*lROx;>3sSAqQE618d&Gm~ zJ)Jx4a@Xk$qu}aw4{2&`(7kyJmJf7$X$Wf7@hM)LE{+aYx9j$tfa{04ozx`h(8;LL z)2X{a>)USKCAw#Qx;N=A4d@1_#CfFqo*uxUPD4kr9_xFamXmrsD5bzgzkD(D{vnA#721W)aPbE=dG_C1Lvo2{uJ;4{X1M-SfGCOS#Zbn zAB+NUT(7o*Fi77@m0YmCgvy@~{lZQN!}PBff`sdH|Ap?f-sTT*XY?j??*6R);cCDm z^e1RQI;Ssx5#+r7N9rWT=zk~yAWrX1gU$v0?0g90^&F~u67s+|_?VzsxAt-=v#Wp?`_Sx=MY+E6B52?;QtcwR(>xc&XRlrDkJ;ey1@=qyFb1 z;F|O`)Ol{!TRFn=zW%xsxEB2^{WhXq{{`KU4*iym&~@rtXxp(%f4?8DyY;({z_Lfb znZAx*{fjmb_UqTtcQmM9^erL`=?~JD$gtjKH*in%doO`J)vwSY?1+Ah`re~@Gdeak zuGi75{Y-ytFTzgie+mX}MjuLZ_^dvMPBYEvCC|a+h@rX{DLEP9eus&R;k9qU9W{K( zfEN$L^E3x|8uZ^l=VdrRTkYP4->6aGW7tOx246$kL3r^u++-rbV}>{Bm%%}XS0g}z z4Z#;-a>8(=4uB9t@w+fNX?TZ5{ZNCBN|jTFst*t$%5a?u!Dxd6t(jvCPpJnOYxsw1 z+Bier5eP3B{-&c?@rIR?$SlF|H+5qY4R6xtbkT631>9wW=OS2MF+AH3l5FtX3t@`E zhz7^2hFe{*yk?k3Z$YYI{Ux|gH!P<0ScYNSD6S#XP^JQR-B3o$>KlfTDa5;JaHqH6 zmZ3lfl4Dr^Jm9$oOBzvb8xB{%XP%+w9RTtTuTjgSz>sPRlRE|n8ZL?rq5m)44Y4d( zmKs`UL0o2dp$ObvLjW}*%MA)T4O40Oq!qX-Lm`z^)rPkt!POYDmqK^XQ1u=F^#-dA z;2I3|)gVmv-^j;4b3QQ4b(C{X8E{6>T z)LI=e)b9Z|ZdmpOxMzmvH6SyF?`SOWUNcPH(BL(n{ET!%*L*++1j5&pdLmH7nhi9y zo?o+tUX++MCT}9_g*BhsyojIRFi7c0U22Wlc0K(z@693SjwY&3PMePuECU0F19mD8&^`uetIC!n&-D zSq7c=T2ngK5U^HABm1$n|CIw5vevEzBy;Tyt@Lx(R%gQXowf1Rh1u!t&8tbvfOhwU2&5*r~OVfdCv?H$$ysw{=$*z{F==djfRF z*ZoRfLe_;cAq-o${XD#!TIWaKZNj=&n(5QQe_2Ln%b+hYDyCAV%qW@K{7arKqI^|x68}D2O`UUBqliin zH>0*$SRFO`l!khDqn>(r_b~D`htAW;g1%WVqrcq1c^g$_g7_G{@)RV{h(Yybr_s06 zc^xqdTmb)LM*my_=VUCRmVvXe=|-gIV=SPJ3}55YWC;C?TOvUGjpJ_v9$@UKL)bv$ zK{_pe%sBlE2#*^psmU5-{2%oSE*M8X1Q&0dxd5)O8VC8o@|y7^-H}vdN7}wlGj68J zKHd1kc35T@|C0-oOk?>BbXmp+XwJ+wPDzEyb>piM;BFYZuYl{D#(TOTyk-1LD@cy9 z<_ExU8@E$+n`eB^8^V0!O>`9Lw#gGQaCs)b;1!&oZ}JWGnF~yg7J(F+oTf>($Yens z0C!BHrQnK9Qt7srm~5k&qST~x1f-H?e7EpdlU zbP~Xyn7m1!#Z!~_uYru1w8z3^)a3Y=a5iSbqtA2PB%lMr2@{zc0Fx#*OTj%e>7l1G zWpbDXjcF63Fr+kNQn&(PXH63R1UF~$_abmd=0#E`)M?)H)R}aiH}?xTmwBgY1>!ny zD~)At^TgQ@9-a3V9gudPx0_DIdCZFo!9DYww{$mjUh}@9twZm5$9{k?U|w@0ECc5~ ze-OgTdGZVhtLD8(Z(a4g59y+7=KV(Sd-IZLf1!5XBg(99-ZmOi>gQ#>4S2)63$!5Y zn}41v%KrK3|3LS2zVkKcM&@h%AUv_ao(V2w!2_yfPA&*M0>JqNKC~2wTJUBtxab9c zRDr}SaM8jfX@QRbT;GDh<%r(DfXN4ZU_l$rZ;uwduo6B87Zk-n_;^9b|Ib@4`0Xa{ z%kYBZG%r3`u<0@2BMaW21AKHrGj$cl7Od?@yzvFm!QdtqET`_{hYSUaA`5H`rD1=F$X*I>`Hx2y>xeSgtDtu&$ZXgG@L;ojwD=A&E1n14NwfA3APh504gz<|Y*Y*QX|s=Ms61nqcm}!% zv*onbj5K?Wx)|rp_HO|fWtL34MX_d43S<^%mP7lA>1N@c0NgcWl)_oLS>iBAh1qp# zUsRecqZ+HqEJzK@YO@tI4%V2hr!n%L*-#H~wPuafs%^VA_*<|)~DTK{t zJtGi4FuS}PK3mL=ltI^Oc2^H!o0)wzgzaX#s6WciuiG}P8vTa%}i*~{>*HGn%z@o z$#j5f+U#d~3ues(8Gz53&8M!y5%U*x2C9 zOf`T13b-_L#Oq&Y^L1xU2 zsYIDI5BVJ2oO$*kkRukow7zq)*g^w~vxSiYoQuUb-XN|PZC(iLW>HFg?V}c1W)Qkt zu;}EChehhkNYK-wAsZ%M78SIP@wSkz0`ajZ?n5rV7Q7Q6eiqqUSo&N1T>xBw#WtG2 z0xho4i+Rjq5f%T(Elgg8FvwzmB`zh{;vc%LCoDYZ1v_c+MFLDhEz&*)7iRHrK9V?P z@n16l;TE2>Mm=qj?g79Vi$(L{^Q^@px@Qp<{WPycTD(9ei|5_pGsVK5hX_p;)~PUQwivtwK!=5rUhhr|vv)`sVW#u_UkFboO>f)SbVKH!# zmWlfiDA977>a2^FobMpKWI1ye!X(Sf*8#t5`H1H5E0!q-AWXJ&u!3cZH8752Fn!&aLtzQe-FTY z%f&P$Kd_AO1!=SFpk?Jl%ftV{vcqy2waGdy*UF&lvP`0Kq}#Hm1iAEBdePokpXIUt z0C;NIMs?PR<#Y6jj#}>U1UF{+57j*rmVbN$XOotxi=lgF`4N@UX$!M|fX}jp`zg=b zg*LRZu3I=uy}|m0rhb&?!WY+qYh0K{V`S69Vp{yPEEL5;*Shfd&*0h?&ZAntec`E( zVA-+oDb?4V3%kO>buYA`rc2Ml-2)&VR;y@B&eLihCGTa`GYFx#Ra_0O!N+Qj%4}b& zNeOU%R-gO}5@^**6Us5GcUyrAwu%h`AjB%|YXDAKeP#nL-YRk_bO}}uy&z1q`aS}} zi&jHF0(Z%3m=4t?S?!wuxoj0cJ98OUuQnr4rqxn96_921z#D*UtABRG%MGjM-(iw( zb+{7=7FbzlLs)3#I0R=!R_AEdS!VS%%`11UP7Om?ZdEu1QelOYESQh1PSX%HV8zb? z_sHsbDxwChYReJ*v6W{t$dFYD6`sRZB_^f=}cM$K7q+It4&0vtpxO`%~(yu12AiqOg-T_D>+R|M;0~GsavN- zcP3%!yeM-Oi0h)f2LQM&vY|VFbWscSlHC`*u?9NNMQtU(c`b7J7sPwfZ8}oqv&ert zOnevZpgZrkD2NtK{)H`!yd+z% zeH&bgbs7B}s=#{ocW{N)VtV{V)<15ANrm;X(+FE>%{75Zm9;Ae5vr~2X&F&ty_7EV zo^=$>0kzg!D0-dsXUTxqTQ8uZw88rO%g{AiH>HDXvhJSPolf({}O` z>#TL)o?5S?zUYYc@|7T?)@5PPjajEs5j<|~wG4qKtnJo=Oj^sR-#BHhc?~Ah)~%rk zG-LhHAHrGd8&u8AS#LWG-4TZFF9@9&UH&j}X7rr`+=a3ISD3gm`stXU8)FkSs*W;7 zY17Z0@tzxq2ZK=nOHW47d+_4LNEm~qH{&IO`!J$u&hcfW{{=68j6>9>2w>>wWe;Q| z(aDBm4Ap7qjx)ZcLNJK&Jhilf8A()8pJ0To$88N^EIR}*CmEH^(1kKCz6WxO@hNpC z!x@Z3z)v%(gTb9)n2aO(S;pcPz#|yx-+-KBIMO;Gl5s8smQjqe*FmBg0kjto!x*mw zE|zht2IUM#VS*D>}NgVZzrc??_wd+3Z7cMt?iw{89LP$ap6kfDXn2nhH7@HA(=w7=O(`*Ud;Ozg81j`Mql}?N za5l{_Pk?TQagYb$EW?6&k#h_eZ{VC3CzQg(c`^4fe7Y>23q&riiz8_=bzAKEJxq=+ z-ntJs_r)*ALFln~Gz=!5i{GUg-D`0e9sluOJZgamK8sJ%35+P4zwW~_#^x-olH+WY zx$qKiv!3>t6KyhH1$W8jpUWVZZ8Cp_NwQ7+Ea0g&0WTqm8k>zSbO&u#X(4R0as3G< z?KZo91pJ{*J}sy^Y+eh2uG8j)Qs^GrOs{~mA)Agiz(;HtG?tIq^j?F>xXm*WbQ3nO z(BAZq4a+Y$+I#kMcgk&O~t^S7ZZwbfA)Ww!k%!QHjZcopz++dx-v4YonF3Td>B zqXk@(tvOXz&9?rrFu8BLwFo0JPdh83WK}d*K%d+ilMs2KUf5i8|69 zwmGy*(P?|)73jKbzoPy`x9tl<$g{^*N6X`0+naRD2W*XQz~qr_1Fc>LZ9nJ&_t^I3 z9#{_9suqD8wpEtG=M&rK<-k3)l~2QR#CDnr-Emtp+PZ&c`!}s3r)&!@05EO4X9viP zZS6l0&f4y6fytb$Wj}C7m~|5nIx%(Qh~ULsE``pUIZ+3l4|C)D@afC^`xH1o<}fvZ zLYbW}!C4s7hgRO<%=&ZSPBS~NBbNx~EKMQjnDJNOGm`lVO?>B>UzQ==C}u4ifN16g zF?_}_*Ao}Z451E49COJH2rn>442tcsT=)mLOH6eQTqiMQ z(IA(Zp)_J%VSf2CNHX)4br7a7Lo#7`mHFn&z+Gde(94&~e3_P{Y0PpNbm`1$I@O=S z{Jj_?lbKGReHQcDMMTeLUh)OG&fGwYts6`q+Tgj#j64Ttx0rb<2y>Y4ZHAXzCg&!E zx0yG#0iMS!Iu2Yu)883@0_FxcTv#FV#yGelX2I*=?l5cW5U-e-LW5%ovvCxD!@jj#veYLm|!1SQG{}J=8)kuDjDWT&4kD0$v`8ve> zl753S%w#JN=m~SBJDfdbemw;*Bg`pkM2<4kYvE;#xzh=_apqcESWYmP20%B-w4&1e z8S`5jsHd2pQpaVQdG1^IoMHY<@L6V{2tMbS&1)e%!m^| z0wyO}&n-i|P?i;aBw?(dm%#EA>x0b@hO=fiKzN#U;$2vtVKoSWJIng~3Um=Hr7JAY zv3`CAT_kHOomM)}lKlff6s!FUm_)O}svwMEnVrNn#Im-33(Gjxe`}z-z`8_tH=ZT@ z4Of)FI(G)n5?SSkz+Ggq=m^Xu)`}c(Nvxu2kjpF`8(yxk?xcZBW_^_acna%lCs%eF@s4OOVkZ6o%MDSQp#Y(Il&~8^->|CXR*v_m6gqEF9CO*6->vz zZm@>aVRDmoxffaAVtqhs?Hm@Lc4Tu|e|`;<+bl8N>pWIP2wdm0?5Md?z)Gb#u8?(k zFN8%b{1sJvRV>Emz!kF!sfAI(>I+9orL5mfLCRPgzeh@USq~=wC}*vrFSUY|`4NPb ztlFgzR3E?pJDYZ|{Mfg?0?wbk`#0bM*wQ|j1hP5Nz#U^tc0zZY?d1zDh`mYylVEn6 zCrnPTKTSY{5cZ$+LZ4*kXMlvV57Sg0#{PO90H@e-G=7G&Z4N?snqA@!z!`S*X9#uk0uog2B%K0u@X4fb(9$W8XPmm$2x{^BPjk;8VN z@-CM>?_&sWvwx(Y$mOxU@?n|J9()yH3)oGM5U-H^kqUq!cFZAgci4Z>-g`0If%?KF z?2UBXwv;_ZPr8gfTL$hfyFU@6oSjOoj|%o%wDnfWc6tk36?^A=kZN}DM+jTPUZ95V z9y^ojvs(5$KZ2`cw-v#pp4}da2o3ChTK_e&GX}slu_Fs$(#-bpN4)#&KU=4a@p*zs3E zrrBY%cA8<^T>_b9Cr`q1j(xHQ+!2lwttp*2T{LDnbC!f6x(g?oelg|B`TGB-`Z=%L z18|fh_zafr91A;e9vr`UAfB9LIxpnKxy}LHn{)U+;69wPhakQjxi^R(XGtfr_UGK8 z4YdGH!!`&5Id1QRJH|0Oj0BH!w6_2c;wWe&3g+yis`3Pf7Xw@fr<~6JpXA(^BTy)3 z*-_xaIKu%Tr#Qd81b8?n_8_>^oNU_NKf`&Oc1_N5w$R%X!HIf?JkN0~Xd;T_n2o{Y zJZJMS;G#ILoiK^!1XzNL;XI;aHL;wN29P+;D3vM~IDh;IE}p}o#zX?Az7Zsm^Y$YM zFLHL$kZ_6P^Az!tI5k|PdzsVb1agH_upifu%vnr}gA~rYPhokL6Gg`fu5p(936jdG zr@iDf&bu^prE_vrz-4e=zXn|%kl9Vn{=2Ze z#koy$RSswIi|~@mdG#d-Z*!V$ky0M#4cd6f=Y&w3qJT3t3@?S8?NV44aYmvcyuCCuxOJ!l|Y|Hd4y@l{&g*oVV8kewPz;8DYygG2q>j@;TlDpuK>>U=a9m%3Wg{o10ZBA*W?lx@%sFZg zpZ7VAw5#xdvw#jqv~cq20km>dKf+5J$L%J(v~%`Hz~mvvpEmwFI8W*Cmv(aYCcvbN zvx0`aZjJ?2#yy-uYGL$p435C{aaMl@($5+H4?YJtFVVpHi1Q5%7lWKBnkgT1w$b!C z#QC)dmcyJNI_L3(bEg%SPdTUF1{vYR1VA{-5ttysG0w^32s_TPn?l$L&H;0nOmg;7 zZS#!t?pXwy;%xo@Z+$s6Mc`&Q?zG)C%P}HnbDUM@K#p(=KS6XSu1o{s%zdL4LKp59 zcMw-@9A)jsWsM--QSK}ql5*$16M{TFxJv3ddUDxzi0;LWN&@H2^~(p&hx^V$;C#7< zX;I979D`d;C@bDVelY2b#N0MN)4(C5^|T}2JrX72eAaQC?%(P@JR z+!Y<*TDX3l(6w@x*#pqVz49imsGTcLg76`CeJw0IxPQ|d+!Xhe z1b}JodfLU9;dXC@aF)Ac6HMl~+S?#Ucs0&2apGN}InJ4Pi@p^XUT_nLE6*hW#Es`g ztJb5ug8@jwofp&%&V%PbOMFkBdnR0a@iM7&@a8?DE}Rc1oE_sO(h;-cygxp}oe1I${{j-sYl{Nl1n>E`01x3+(%SGOujT+; zhw{d}Aq?Zq6#;jOXU>8yoR>pq0Z#MUeZZaJ-KT>#XL*PI0w997oK{ljctNx@iR88D zU~-=4z7>Ed-hOikqj?e52phwjM_YukyuJ$P;&{K^1i8SI%mEP3t9=452|PzNxI`Ya z2}xY!^+~~9;*C+0D~b2>C*UsgZg)U;g_m|6!eriMTJ@yxp1TBRS9u;ZU0>tL?m(Ez z+hPkq8n2#elyu&PIp{KY{w}c0CjE^PTvBV6aW4!S9xg*musUf(06G{du)fpC_0 zrVZR2&z-K_iNF0aA~^Gh&Lf@+Kc9LKuKY`U1ajkl`W|#g`5sCL-T8SZ;LL;Xb^v$6 zlfQoy05ASgJveWEIRid@_#Sjh!IytC1~@B@KcUj$6yJpY>`FNQ z51Q>y^RuI1a)v+dgs^A%Iyo#O_@A}F%Q^n`NdO}Gn@@q9=Rc#Zw+Ucrk>R_!?@WC-I#o zK`!&1sVcd`UlI;y$^1fU@TKr;jzf5r|LU(u=^9@x1xe+Z2ef{4A=MO8KRK zBKb1@fHf@d@=vb=SI%GV3ojM?mp;a&RPvi@0jT18tpr!i?`OiKh96amB<}H#((&_J zew`0U9seVm^y~SXX@|doA2S4>jr>q50h;(9(Qhr9`Cm~Zg4zE^_9r1m#+$h zu#aCI29tjNAeGAl{3YjM@`%r!MJ|KI&`t8+qdyV$jKAa-$P|C=1Gt{%uWW=a+wPkJM7VDEWh;a? z?H-Rpm}BQn>#G5YeU!6yfzz;@v#b9H&W;Gy ziDBX-*ct(xvmlmE5V;6e&}`@`@LC1kQNhAC5O=}hN_g=Qe3%c;Q?QKcB`-lhC6e$K z4AN@QN8tYgeEJGHsTTGV%o~8tUvPL0NPyt+eV7Ca7SruHCip5I+;Kq`^*n+EVLiYF z3kK;)pAhW&7s3z$o9@I(fsSg1P(jCD#0wLg*TdwLAa5^p;eyH)aCTbYJqMFBg6}IK zJS&jghh>Doh6{2|@RtB4k%EPk*?B?fcEFmP<&{6?%O%S>l!c;*OZQ!K|wqFAvL(rWEc&4B~99Nqq(9r3WY{9!1VR>CJUIojW zf-PaN%n?{q!zNcyPoqYjVBiFF`GS9LfGZG8TmUH)WL<%mBEh?v(A^P42f}rUp#3V6 zC>7+~MG|F#vNvFPSCF>@&dLQvdI&27QBEM0f}9^^B3c6GYPnP`%)%cM+&Tu(}Xjqu}~N=$ZsO?7=k)(rMIqAUMK@mlnZa^c}Se zzNFKc4+XO{3U>(XsgURt+@ue$OOQ;?97#mlucWQo^Y*S(c|_U29|x0Y`x%Lp~IZGY-DaM$f$Dh7ALA;k(_LLBzcs^Fx z6wjfE_AoCwy#EM3lN|n}2Y%ThfGX+?hdX}*p6T$y58$#KzC8m#zC-K`xB`a_)O#v) z2&D@va>)1rUWy%b(EyY>Y^K&@nL`v+Nc9f=cVN=su#5()Mu(+i;F=sBR{(I|p^RSk z2M#}n!E(@HoIbT7hqduA8Fu*k7*cxTu(B3DpE`_X!{?~OZg&92942X5J?=10Z}Nmg zDpe5A9A0jOZptB-rt4{kwI^LsA5O>En7QnTKqge_#Psd;ph_|EHZ}8&ds1JlsU&oT?5W&w; zlmnr^W1}BPfTO?)mVu6@v;lj}@p;-O33A*?r@Vq4f4=rV>fSp(s-pWJ&)mBe#qML* zjWsAGyD5ND-0W_`O3Jdkp;^`tLXl7;M6oLf(m}AIQbZ8}3pPZWC`z}2iUJlCtk|%( z@B5sYd-vYW#^>|>{PBDJzCJv;J9DPpnKP%)Tok!G_qTjhzbE&tckwDKbBB({V^wb3 zJt(p!x0<3|*XDL~qxW^WuT!Ym%egO*xV%31*LEoRN^aW`DDrCVll0OXa#wwbjyC2# zN_NamxjqW7+?>0*3aKr*y~(7vHFxt{D7h_nM<=9S%RP!1${V>SJcHC*xsOc2djALh=aZU0ejM>27Locjye%RkATza8)XX>PCfczl+7 zI33>Gm)n7YMh@iOMZ59a-1;j}@|WDugUI|fcZ-Imf6IOLIKY0--4;jYAGve>!sE}} zuJ>X{f91ZFK#{+5H!VSte{vUHhRmB!|CILMEvFAELFSm#hdzST*weo}5A|+6J-OeF zGWd5+jT7U@>pBB}&;5Hp0mb>GMvfCx?!YLb%qahv$A6JBY8$U76TiQdi9H@-_M)R1 zT8KR8w`+yutDULsCHY{M_8`T`+@bBM!Q)Qtw@IjQmv$T}Gk0tAXvf~8z1<0!_iA+{ zyU*4ZLI8C=qJ43rE62548-&SnP1k45pjPy8KOi+*?*z%kHCNwALz<@#`V)_b^|N4% z<@GrK{;%<)^O=N4U2muGxeG5P7hK7-!%(nS+ zekA@@cUy=SdJZ5ty!RcX!Sq@FC~94N-aeGPWath+FWWsD&{R)y8`io>k?nuvSI8Oo z?T_eX&=ivPhdfPAzWQP7(aZ34q+N|@jG|=2a=e&x)B|KVy87b{XnFMC9@M%iza##R z5v_>#j}s?749Enr@?$(Eifts6P8K`fM%6on>tdwt663o7cE1>;q23(v#^->|6Au+) z9P`B+ebLH;Vkemt76|7|lw2&f5x-p`X17E2$HXrk@OVNzd;v;6CH9jQZn^0ACI-Dy zZ0n19YsF5I?q3!a3y`@{Jh}~;Tg2yNIoT>6e;3zC_1+fk|HfmrRz3l3uF*!U z0BnQy=pd@69YUDDNjsSYv&~wY?@@A#_Q)y7+^QW#^2B!SF_K?)XqOP3e@8owEY^Fp z^OC6Wp*Ej9*&k`c6By?g+F&v;e5pOS4Uez2J9na$pS8`8qLp8?h6GZ-YV%G9>^JS& z;mG`5`;PX(AKGypQT3LV9>G687FPfgNkC=hS4E<~p7G~=A6Cb-z-~9<5 z_v=YozX$YXZe|T9-h(%_d({<`pLu_pV2Seg~zk{ z36*Gbjeg-Q^uAV~Pn`Kh{rE{3#5(;bGLCK5OX#shZ%yjsR{e&tfNj&Cph%h5^f_1J z@w$HY@o4%Dy=5Cb-qeq!NanZnfyCH9(DUv`N4xZy{m{y8ed*uG+@sGTTgiv|D+5vT zbN$+SJigFpwZ!8~eKrY7U+I(RrGM1l+Ktpfz2XnRe$rq29;=b8(oj}9E(s#F%5e#4V5=Q# zb5L@P>>5)bBE)0wDN^xMPH2bOUF{8VYfI(Jb`)>oPUw3Fx}a*4JzE_9P$`o z4>*e{`sN{Liwlvt#QESnJf3o%-wTfyoLw)+W2N&_5+qhR`^`o5)y@@XV1R3!b#DXq zqVw#l09)rg<7qrza)ycGz3%+`airdH_8_LV+xghf7}=-J*d-X!SI!|$bo+yIA2GGx zoX!SJ$jz=HBzWHDs*a-MG}mu!P~=Y6rMIE_{jNzKG`7H1c^EPmyNa$rk!3F5GkCn< zD!vYnm9B3-!^l>-*6l+pt6iUbj|yvCZC*s?TG#k>==McdPcombbCrEf<8-xs2aUb# z+ISu+tat6FjrWQxcqWGQs_U$W@z~&cyel3XT@U+EZ-;B|>nO6z6{CQzy{>J9!e6>N z7NE%YuCv}l>Q~p$At(YJkOJ~5@2)PSJtB5 zJoi-Mi4VFzd>c(KaKCW@Dm>(#`wCzWyK5=PZ=w6<=h5aPZqKPG@~Hdjl_;{Zcefl&&&%$mw<2@B`{U)veAV6QHk91p z-aY`SjqV|RQDl>QIz>HhcK7`asV(kTcH*(sUHSovY;)g6hWXdr?P^i)b+>~|WpB98 z?S^r_>3*6Fb#J*Bkg@n}_d68QxZOSNAYeP(4|>tchwl4-LXnT$({=;)vAg|PjO7#e zJzrpY_PUQItLCTfqp91^+$%3c=00~tZ&di)-LMe7f8qY=9@P8NeOM(@U%96rz&O8l z5BLE^zHwi11~L!0pCjq+Tleghfc@z%i2(MOdw&@of4e^}-ox?(^(Tpx*tSomBDx&t*$6 z>N%ccC~9Y}=LO=1^E~s8$78-{=pfX4&~yAwq!xI-?}>U3d9I-qTj=@bARdo+mXh0e zk!Nr*9*=si3E;8V^AyuoPri=cmwL*kBJ(j%FCTh%+*3zxz$ZM8{{Z%+r}Qg4mU(Wu z6PZtWS`0<%Y0p1jpu#hrAgPF}JRfa9YPF{~DfMeS#WV3(>lr&7C13RH{|S$Ep1+2p z$#|~+jG(ybhO9Q^8yt4(DUs1fPLgiT?g35p7&_m zf8tqkDPVg&XVl^Gsps5nnCs6xoe!YoK2IM~kN0~D$OiF~=RR8EpFIbj#2|k0oLGbk zzk1$#4UgYE-}eLTcaJs*us=Mrk45!AJ*`Ov{>yVV?Z3Z0_x*#${_$)ci6S?9m)(O3 zw|IBmgF%e(9?=6u#(HPoi`1>&J}0C4IPXn=AalHTGwuG{yhoAtIl;Sf9O_N<7OzF- zByVIPicI!y8iuB)cn^u7$W-r~U+|dbol64tbnl;CP+^AG@jV{5d!PRZC1-k%y$K_m z=UqJpt<3i>nFH8^-m7myy#?O6XQIeM-fL%JEDw7hxE+}by?aPJeZ+g??SL)vK5;Z2 zk9xxu$Xx9Gsxux-yax)<=2Gv}lks@W+wVA3U*%olM{2dV&s#{X@lHGgskPpAH5l28 z-V;aUqAKkCAr`;?+L{1_jy;7`oG^h>mEEl_x25;_bAjI;;jg?E#~}5!cl(*(Qtcj>oi^IPxfPa^f5_r&wi^!MH`ccA1C z-d<$(`O*6l#R44kuDljSe)2vtAN~F8tt5luFWygjAT_?lNRr@hYcaJW8k^AKb!fZJ zi7oP>l{qK1m`jF`$t_k+25d@;e~4U6Z80;9%xNv|BMvmZ#gTC|HlxJ^GN#_%V*i^+ z&1~`DEhsXp#Rn|6w%E}I)fcrm`z#D_S&KDiq2#(2BX^+s#umf7qodDTJWIa8dk&dL zO3(x^bw3<(unh(==Fp!{MCNUW*1eBb79Lta_T(oH z-E|ZmFCE&IWaw>&{zXjV%R`?c8D)A)zXz$iTAuS7dVjFxn7wG_@s`i8$K&ai?~(Q3 z`Ih(6qONWE^iinra!cQ@D7mwx^KlGfU(548LGK4!&Lp$X*uw_9P;%m7t0_QW?qPS7 zxKIZFj=B95HP-zjboocnOnqrM3v@<2T3q`SR5FOVvh;^ z4?La`ACt7ZN?g+!kJX|Z8Rj;K)4u`ib+LUIG7pMxmZ7ab#2V5ICu-HR(f$mrbpukf zwY|Loo3C9+it!@t3NlJQp!>C1BPcuF5n7{5YaNV3xl`u1A1vPy4H__$i%O^0n>)d$i{Y|!6KBDG&% zA4X%J>tkmj^E-X&XQ+T%E51VNM}05JM+f!c{gL`xUrGUE|LC8+ji&E*^bR5O9>@AG zQ2i0dHx#tE$nn|($b8DNH9+g^n46+OIQ(ZLbERWNS5#l^s3cyo#u1%@dK(<^&roEe z;|KE0f9*JK0aD*MT9M8DC&%iosQ0sD?(azb;&^vAQolOB8-SSrnIjrC*12mMVD~$( z*n-Cc&NoQvS?D}S_OeHu$*YlC=G^i#U{5(OAW3S4v*r;D;srPi(aK6^=Vt+1<-E5M zjlJR=F$6_kb%uMQ$Y;)zXx;ZYFC2)}0q3=3nEBSZA{USEoZ3p7CFdYw8Gkr0TY$m; z>D<^4sXJZ0cA(x}t_RLW4|83KN$6po>y$f@TI{-%Vm_9*Hupv9DOXJ#jXmwUl;T;R zaUFg>-u+ouy&sP?u9ovqZ>{U6a&)xAb@-pi{J?eJc%(jd-Ex zx$-BV$e*rG5F9iyWn{vF#cj*MO-i0SuUNhbI{Ee}CX-|6IHySSnin!02!x$rLCFde@y z`-zO`sr7B}`|>;r@vC`$1={I%=#9v)y^BH%`rq{g{?^qJ-VNw?7D^86ORB-(tH>mM zbvZfVM!)|f{$A6e4@zD;j83mz_r>-2d&3rT$J})3v8Z*kIHf&0xJ8Uvi>W+OwpCh&i9LGYdjthcT+^n9I+sTR+fq* z_oBjMVkhnF$HiL<(8Cj=3(ez`;z2S^E)!dd(8E(=>jP-)X>nd9>OCW_ycU_yia%@7 z*mL5tH;}npoVgCE=f#tc0k%RsIvN#T5TzuWuN3*i(ex^D_8z2Gi_{HxY!G9HprcLV zh?h`us|b+c>2>ibxwzjF+VN=fTaiBvgZM>^_yv!D#L{8NyiL2X0`;bAa}YQp*KPGj zXwUx|#YO}QHewV7umr+}_Nxzni|+dfe>;3Y+vS2^7UOTHuU|lOT_(|13oRwQ41Y?7 zhseN<_#1tKkolskHUV03{8Z#rcBw-P)g^Bs=i>7PeqW+pi&~c!lNG&xf09G$F8l|- z8}?EQw}|g(8;%jr5Stw<##CU~w~7_d19qD@kyP`$#GMYnW{cAHgn9UPY)|qE-X-Ro zf!^;H=SI-nJz_*2O5H17B33e6d`@ybHr}sDJtPAA0ee{dO6Ii3#GKEOdR)w>4f33L zhj3}R*#0{nYsK+O^+JUo#oIej{h;`O z_~%dJ&Vv})&tm&c=;0S}&JW1^RfL~K$=^g_5~<(Cvt&>HL!3-8{eOzqw0-^(m(U@j zzr{(b(eyv!s{Uy6X03h<9=B*GZ2)YHwv;66v0A|_JZ{w{-U8S-t=I8Ljn~#3jUu;c z6SOl(cb=#{w;Yd2+Q+0-Ox9i|S~f*{BoB|NS`l?LS8F!}<6Nk;@26Efi_|pzNRomd(Eqa$k1>wxenZJ=j%|lwvSvF@_Tn+$ zaql~56-_aWnw>skVO*`_Pe%;j~&H~RhZGXC~2cnWO{9ey*$Gpv?0^U;6Ot6lRK$w=2u z^&;oG4+Lu6DiVXy#5i$90rIAb)F!fO^ZsA+)ES5|cWkb zy7QtK{UZ8XC$`;+HeV7uD1zu^G2l!*){9PL@q9%rB%{o$V(owM*dVSZWAa9^>?{=7 zB<9aUz0KltBL7=NV+4<_V(tWVyG@)%4*S={u@s5-y691i3U7!D-$Q?IiaUNsV{eHY zNtbzBJUj-O+r`GYsJBC$MwIj&p_9E3Y@RfM$PCULAi-^^JBi_3T)eneQzC-F;F@ezfJ8>8-)c2y`5RCH&vAZ7C$7-j# zkeaC7cq`hRtQFJROx5;O;4xQwmqew7TCWT6cvNdY6m2fmuIYp}pV0oZ6pcLvLoza- z)qZ~snJcvA6c+uWHsS#^wn>|K4q*GV=ixVEtU2a{zwsll%LVAze=`Mk6?iE$YVb`- z9}r(qwCEi1fESNPM0gUWVUd{e8|pnOPP!LG7K^`$G%vwr za!4%|8+)Ml$HW3cfyc#?my!9bh~%Qki=xlTfUOh1`!JC8VkzlCuZRze=v76cH%e|6 z{@LhZo0wFI9$pilUW3f9#n0tP{VewVhSVI*OH=!@wrQy`DL2zP6o2s<8t=LCR{;Co zIv*7-9?NumU=>;%*y%RBdvM7~CwPZI1}?a2b9UeumkfqI*?N-`5~*4{oBj~&_=G8nw0-ToyW?`m!LBlA7& zXR^HP)IKF{@xC_Z9yI-d_A1e{UD~!{z;9ewVgB3^hetFv>iXz29q58 zi8hWj@V#2z)p&fWeMJJ)XIc&!iuP%j9>9$3*G?UT!GEr8eHW=OwBfWCUuw_yK=rS* zON!9u*P3T7+WbcQZZfJL(6-D$=C@jqBA&j}?*0my-)o02Ky>o0<^lac z7nGc%|3XsgT>Zm3G&WCvyA-hb`t#(fcu)_KD7irIP3ZrSzSDy?AJ)g`p|OQ}@kkVT zMDI%0{zdu>V#1H=oY3p^352RI>FW=m-pl%1 z<1wW5`aR`%yrLgI0~KD?&%6Mz4f=VPqm_;N9AZ+N^mmU(k-sJ_Wc!AG0`1Q?^RHE?6sWV-(Kip>zUWv@LiuLL zxA{nIar{nrw%u_W3G+J~z1rjPtz$ZAD&IPTccI>Q&bDMD{oWaEfyeL8F8%QM!+8`{ z|I;~!B;LQACsBpJoeO@);~(c4jc8@EtN)FFO>-?I3*REwEo3--#&yAaD6-o1GYNFB zy8c-P*j88DU-8o0U58x(*!!+)t_JKQ*OnhK`2DUecjNKBYuleW=n(&ojU10r1s74w zOk&jt6iu%B2CY>8L-eTU2=bZr%3F>yHHVVhuHR?#kyE#Ye5eEV%tFrK43)-9`CX%^t zuE={2ne)UwCCGeKB>%ub7K?A+0PJZ|vkmp05#B3NWVN__7P?&{+T^0-M$wn3_9h`d z1Z=Z7!AbKd{(K3r9U@G4@{U+RcDHv$SK2u5i6clw+9`I|V1Pe~`K?g$cI}HrNZqR? zH=wb(+R2X~^{|$I15!)0J85$))5>a4@_8+nsQp@PJz@8&TKNIMwracE;qjI>_c|2W zr5y)`2pT@MH691Fk4bhus9pRJdjCh;LMquf{o;J|FiEfNgjS~M+mAz$8Tv&DG(A&4 zGfx?$j&1WbGKvboBb>!~KcQm#A-QO!!}6Fw1^hd4_epJX!>vM?A}OC(${{8 z3is(Z)L|dimv!Gpz+Tr6p{V?K^z$AEY@a@L2zvNN?@Y4z zLETBa`8G%OE<9#A`jbWAKF6tKja}eqc{@@|9QzIhY?))x`^a43m@^zhTIZPgBr-QS z&bbt=yy-ZS%q{Ob8eORHxnpZCGQW3BC6(i5=k;ANmI=r1<@kHaXFntV()n{y^0IAY8Az?B*oVv4>;trB zaUOp6+d!H^?J3n5RsXR!A;0c(B69r_anA+%?(kMzjpTyv^G}EA<}iLc&P_!j}y<)q>L9QRv~k`xa%pTW{8Kb zMe26(Cg~|N#mqO*!yV$uTr_gGXis!yws@9!+Wo@$F*2VM9s1z0Ts*fC^_~|~C_Hk7 zcts778JK(A~j9i zPHvCs;?^(G$_(+-PZ-MWVhhEG%oM9n0&JGJonpH06ro*6JtiiTJLm}!I~ti!iX9K* zu}pmO93D@JuJm|XoJl0$8S&6FNIffNk?H?Av5OXPxror?c`=!U-xVU3Lh1!E?0q~| zin~ZBUnMF@Vq7hv_q0P;!0AOHi*)Ey!$3Go@CO^;;NZQZ4v#6_-_>t5^8M|V{4ImQ*mEhwDg9*d zIz&h%Uqve~=x@G-6g+f&ka|f^bim+W)?a*>URr1pU3OcPm5c zeZB8d=-~tXg1=DV6Mg%!$lR+RT#Cmehem5O+0m9Z$vuuc_Mnyf9c$a5_j!)(g)|7q z8*|XZTE`{7qLp=yA_toO!g2Uil>Ez)Ao=Nb=Wll)^I>Q1iB!b-OdPP6op%qUAvw1m zh3fA(`(1#>zH%P14Mo0jt~?99k8#Zygx<%y-uwoccewfpv~rKD%jKxI&^2WNG8el( zy${u&cP$%^%vG+EXHaje>yr17dc*a@WAsL@ujZlNKG#YzgCBHtBHzfbuKR11jq3;} ziQPwr#^di%vq=Lx+U>#LV>XfF_1Mo}L5u%+mvqhJULqs;iM>|g?@67`$IwnKCAI3b z_;u*+j7M7H_n8CtBmbOsw6XI3q$N0S#RsU{dNu};^EiZLJ?DDRLQVW}Sj!xN{~);H z|DtW%cHxnOuc{l_&@Ne;OeK=-+ZPn&vwZ5u}6-_U|UEh@Af+`q2v(Avhf zb)!esjT}}}KWg~!`i8axhc&k0Uu^~qAK8XWxAhmaEoeKkuHN5vXie?#hT_7MzimGL z7swA3`u+a=fWN3iJFe8OX5`Q|!-fy5Yg1R#Z*aT8!)ogr``5KYwLyc2)%`y?_J(U3 zax5zmsz^i=?ZS0e4X&-j?8^lx_m3XkE-GKvT9{XdfT?c5@|0XmDo15P!$;N`zl~*< zjT;U9|9hqD2ls0?u(md1#Tixn#=`%lHMAX+qam+hRR6)lMj-*KA8)66e^Fp`9Wp>|R0a@aP)$8mM>dE; zM)uH}Y}pMX24~5ZSwm|E55q4|6?;>)!-r89P4Y+9)@HPYB*s?@Bu&*0EkFuRbMsZ; zmotBRF$;AyqZ&u@8{;KY!|JXEa-@iGfkvS!ili_H4UHp^K#AI+4TBpja5OEmK%+(s zuCE&@yOVjqF_|1XqA>;Xa#eeo#J(I=Hx$zgdRC7uhFoJpc{1yHiI58di^0md<$

9=nYgG2e2GrLy49eCT1Da`0!ba8%9nd%|b9s31Bd(^I zYBF+UH`5|Wy}}t2aR(9N=8zcx$O=~UoI^OZ%bkdLcY_zD^EV^^DE)}u&J%pjBRe~f z_c^uB&LaoX50S5VY-PXTvPW{+quNmoy|eSEf%F4qy|%Iwox*u!rStGkPER}MQKvhd zot#H>cOKTsd3-zPVQrl)J3Cu+cOIGRba!$d6?Goc$>|O_4@KrhPH(RB_#Dk4IyoJk zoyX`6$m!%1`Vnmr@n{|S67-<&>)g3}=W_nz6rCZASxc-(iKFxrI`O-;qgOhT|I!KT`&n<$2mni?J!$|H@k$>afkC{3{UIi)VesG@AW|s$69*Ox->eE zyowsXK);;Eo$Je(@n@)!&y7YrU7U_i&OCbIwoXrXN}MMXT7~nti=5g3=c#S!ud^?8 zb-bl3H-?Eir#tnwPRALI&ZAIIAK`3C)jK(l#6vsZd8kV1hhpk!P%#=*z?ZSK2QetU zk5i1zn8I;x;dFlPJcU}h$l0RYd6>`HVt_OEG-r!0{JWF$w9}m43uz1(30Cm1F3v+| zI9ue?*bY72>B7q9(~F(3-{~3SJPY_R#(4;Smpk3voyYBWy2m(kQD%(Ov(tGjjajb; zs>o3v&FO18IS-R*XHSgX=gUBZ7cj;a2rcRD)N~-yi34c5j?#~jIL#}L0lG1lZJqk* zjZSJ+ztU*)$P~>BmfDWL-=on(x;Q=Z&Ca0rJK=QaDL&^3y`3)1LFe@Q!T#rYPmLX8 zRb!{s&^j9P@6iwI1jK5-5%>RBjmSAobuvaK^!$q$84{tARH9ob5l_V;mElCsU?`c2 z4R7%I^Q&``v1lqB=@|{DDn}+q*3{NThmB|)m8xhM;>*h)?Jun^_qEDNu{0D6hf-Cg zrHKe6+ip?FxA91#s=PWGt*Z3>3oM5usc0aSO4Qd}RhLTCUD*h6cQCkTysowm(sC+X z5%e`FWQFD=`XoZ7WvNK-WHc1_^Rplo3(*ks@m~P{uWpq?orL0nRB1fYBUMDeKt9Ib zsgutJ!K=5*sZNxnBC*1FDwK?;;=RommgO^{T%{})txCnJV`0oA{q+ZYO|z(>oO%+S zsn4=VWh5Rf4+YE1Q<2JGNqHp9V`-YN<~SY-r68}S!qEhk&THk%J2x+tidOj=!H)|9 zsZqXjTluI|C{6{dDpMsTzRo^XzEut_M4}>wNy6ViaVnpeQNC3s%svs3SgL!pGThuu z7+|i%11K%SM3k3Tpz(|}PXhHutARyJM9LXM(n&5swSut{e>{OT=+!G+h9BHiW+s=m z;Xnc7Ku2S+gr->LtVPlTj;FdMBJpq^qn2ORQnRUGYEpvnBu4K~MZ@KhXv9~YuxIdy zRAzZqsJpRXVWXrqlaVb{Rb81ZAXM|GEWa6r3rb4~je)|+XhkX%szAq8A%AHkW2Bi- z`D)2fDj6&VJ|u$`F~wOXj&t|?f(VuW{fsH!4{om>`8BqP`jz|@jpsC&W(+CVFK zQKCnj{`e&(<*PZfgSf#|sw!Dlnn;ya#X}LI4Uwcz5)PW+Ca|1%6lk636-|b^r9$1X zney@s9B&0!FhSFA49s`E&&)%4f56!7{#2|g!PG3z@5clZiAY5%usPy|GP@ADaz7Wx zvE`dbatoMWs3KOKiU&b8W&8dP)#-%{&_Y&LSENdKq5Zs!0XgH;8Lx0gA#OC9tVkuX zRwdPmK0Llaft+Z}b3qF8+&)#vTUJpn-m@l1O>}vAFcd=Pkys*H4ib>^fmFxZ6!^=_ zyXPc8(W8Mx3{w#5UKNp(&{0hSkE=ZmKHoBYCK7~!?L&-(<{RYOUK6;j-prn_HUkk< zNkM{%?!LSm<)rg``_AUNkr>u9RRM4&q4G0*NE0qUw;2cSGOLNFg5j_~;mge6QeYo} zRA^Amuwixep!#`88_84>dR@3~01-`Fu~bPg5iuAW;U`h@h!uB<^a9YPOR!rB5h&mF zojD_=(y|61ty&Q(cLRq4v5SRM5*NUf)c&)=c>U-lK=8U%rwVALJ6QH9=W-z%DJx`Z z=STA<%fn&?u%@)wv`<3uP$f{`myzcAA-hGmu3zK8RG5W;5bgUUfqZ#tJ2z8=M^aH0 zj-;xpldcKb3O(soU8_cEKG&UyDLU#+54Fw3$H6rL_&!Kzn(!tQ}JjbS_x(! zE+hUIDvt!QU82c6+S+Zp#FL45YvvNX)yt!mk(6u&>p*-F8x}JRmP6EDawc0A&j}B| zB#wsTsrI~i3H|ds5DlhQhy#^FT8fk8!oTEvVV|kx%3eq=FkrDrJR0jp(-AIBge!O) z8F~I39z}Vmdpw0d`EsZ72na(GkTWW(Q%z{O%IBWKC1n+%Y8ox1p1vt0Q{WN)e3%}q zV!nTc@-$>j7^AL%xAwW@?n=vpiEgQ6pI8J^O(GHwCWEP7Rq-%SAfcn=h-FC-pI9Pf zXBinVZZOTzq9MOoLrrlLprs12s!&08{%F9scr?Lm5qYK2a&R~wGI#@mSDKkQv0i8o zs}M_s6LFs{#q&fYB?>G`Mxvzwq9o}Q!wvBukSZ?;m1m$z29SrvG>TX@2^ZD`Hz(Pq zTE6N^@bpOE2(4^^Z9~Wcpin^8(!Q-N>+QE-1Goy1fr*slsXdwHV;H`?Krt3A+$)(X zt*#7_AfKW&?FnKFnnES~#nm~`4@!g8pcsj&YOr>nKgU8YA{BUx3RH|#%GYj6QLIJy z-Dam?++VsBcS*QZh3Ss^;}CbOLa`mfg(JysU{ctE zy-TB|RjFR_Xfl$5(iH6(0i(^&FJxMQiD3bX_7EEB$h0p}9)XArx_=V{v7Z+S)qqvt3)$##1|$dXO5&rW zw8Wi#Y6k4N)}eq~mT}`2MFkVV+!9pNcXnsrjl@2QTM`u|N(ZF}Z&_7>35`K}3zkI^ z{(|ECWR<_5J!@-Hkz)xY1@#3CB@~Q@)oiAshB%o8A}J}cBSJ>}HFPsu7VjNg%eKNF>87FX5*p zi;;vZCf!Q0q~S7SBo@RXST3MQG?Sk-0jo(1 z2Sd(LBLev6aM^(0ZTfq30WG=kjOD_m`3l9p_> zykxJV^@3jC4O1JT?bcN5CwxK)NaFS)hC#0anmYJ#NmUhg80i^S2~?4tCS`a8j7iL& zx+SBfeu+%!v=vt{N*2Ka#+I=%Y5ROinIGD!t7ovhI+DUxM(dUonvnv8WZ8zl{Z=UmDydq`V>mt4L!h;)X`qkG(M%UH04%XJzH8jNP zMh+d^K>lr&5gavYjna(sikG2A_ zux5e4VulH8GrP6d4#t|)MpkC+^cY*AcaSBst7Js_EUr)YE`>cyh9vivj1uku%bS9a zguFmea5S`rQ7FEMqWC3w|&~Jj#X4JC`NDi6Lir8T3 z%Oh1^nvrD2d90A;=NHlYl|zSw;2I*qwIY%1PC7Dr^W~)-fY^Ji%Ns7h^L%6;Pf7jk zUzV8lw@kQFZero?kv`JuS%^rP;sRo3#QDQyMvCp35=}Id~@ni>^+SGwqAtpzf zbla;}=R7jo`iz%mdmUby8jr;M&|uk@$DLWy+*?{+fVinV1AfvLGU;&<>)ld|lz&+r zlI5z%_7#Unlkzi#CbS}J0NSxBNzy&#hYh8~;MIOvjJpehze}^AJ?U5W+(0UksER0K zu1xStu;IjCWL3N^+YmI-4#TJ4jR}l?XYo&vPcx z+5$3|M2XLlh-Tk~O~8!QCUcF`o3lPjE}5zrY;90}E2EV?Bk?3`yU|J*lT$ro0bg^l zXjLF5RSlM05U}Z%&~0GFhI$XX0Dg!3NEl;-Ka&D|>VHvw|@nbYl8^ujXVl2I6P3(zm9wkU5;V|_`cVHh{7?7XpXSbF&2 z4Qa)uU^18*0uzL7_Dgn1jcNts9~_UF6ru;=}#|Fkv=fkQfHb1HAGQ8j#ez6rvLMZHS8$TVNSLRyZ)s zQ1WOjq(pW%ppB!s2FQYi)cizIiza1*6Tn4#0dS7~mKI+6|o zbZ-8@z{s0uaWlY8ujZgF1UyxR60i>Ps}$i?64x{&2iL-Xo2P!UNt?XfMw$gB8WrX= z02bbifhG$Sb%GJeR+^Hk42VH*Sx=NApw;nhs*t?SjG@p`Q@y%Z$0{Vknn^}2LUdps za2B~rSH_*DGq}U~T*|;P#C8~-SF6jgNUWt@4 ztvO6HWJJvrGVsZas&g!^AAy&&^J*bS3$;}B*=$j*RnXaFbZYPRI(r_ z5ov&SoeUGXkMxe^jc(;b)icf*jsK@oEZ;#q2=%HiHRg#{DoA^;F zQ(DVqxG<&34jU`4PLPobh|-a*TQ&ePrDzT03`gVKIcW*_&D~mNgj9byebV1*0ofrY zaihpF_Q>FeN!_fO+y(G87Bwwwk~3I6dRd?ru7Z`YL>x39E{t-7PZTb!?BO|NPGoyn zx6;arsA&#U%(E$!wzhe%RYeG3Dr0h=FYR9v?wjkg;z5etJ zBcQ)X8i%aP9wb$1pe{cKph>ofV zB;wMRfFc!MCMSy=R7OlIo;DOx?iQ(TSga>RX4!ZjNyaRud`ii8V1)}zH`!asyzCwu z(9nNqsD60ukVIX5T`ira^@S;%oCu%^MRda#8d9OZyk^_$xwEQFvLjx*!rUz~3knGmN{5$kA+_salDWPp5D1X4BwMiNY*}<@a zWG}$HBTNnp1SA?d8tn>RJR@8}N<1oz$Ohq=kV1VGUN~44fE6ui9JEQsu~)i9%UD&0 zf=%Q=N>T=S0|rnYR-I6)+GdMN=W;KIGX?EPg?j~kEVWa@2yP2S5QeMty_`e^%ph40 zuQUhAQ3g%8R00NGDlD=>co^-f5tq@>Za`iA;L$^CM&dZosCJb&=vZ4nys>|~*vR1n z5wO9h<>guJcF9;FLVAE3I8={=+=ygmE?*hMX_a_gP5)G^W?&sl1NN*`hknZV%-V3X z&Xe|`q7XSxXu5*s@e0HQXNiAEL-;L>y(tgc1Z>!z3F8X1|A`*NdskJKOT8kUWRx|+ zF{;CmHSKmL8;F}T)t4gDaM&C~zoc4CXHD$++<`(o)|Ql}YlNxWLEJ+Mt-^4hY4)@1 zh^+8t;z`rCF3I|`N1Za4u&7SO7WEB-Qad08;~5T(WD|PrfNc5#HjWHfCbMdO0qq_H zOO_yB3l<1u#1_}^U(mO^Uwh*a8+6j)}i3Cxff`1vO1OG$QPftC`0@e_)S?ERLv}9B|l6T$MFoy%h1f(rom?IB#gDh1RFSv zN`R!pO`tcIr2IVhe5BKqk>R#sn3{Fw?8MQrj1>s~j7B06VvD9-IUvt;kZ%wF0nf?( z8;S*~6=mH}37#3r4VgPC&L}x0wgX<#Do2!u*0 z9~itek;}<7nFLFUeDukX8Pq{A8xkr4tw1~xCJP{@f@6gl=h5gemwJ6t3Y3OrvwfR+ zY2&v=DPTRKq)#%Uv<)kWvZd&wtV&gJKda7$Q3+`Z=^`Bx#FM0pL^s3-v*U<^w>Z8= z{X(Qtwt^~FDQh7FQ>R-53Yn1`mGEMhhVa5P-*A9s3TSp3hb;=R$11%^4IynjB_{V@ zZKq}-UKk>C=_8pqrou~4vK#Gv-lrUK&W8Zwy)D}a+ttEwn>Y@XU(K?W3{M*>DxU%E zM34c5d-~Ep87(Ed1`J_&x2}Z2k+Yx6sbaQkLOMw$=?LD(t!Jgr&O;LjhCLhS5vU=G z%jHO0D28Mv#CGnLhelc>Wj|%DYPM43)vQP%x=d^MglRVApQ3;)+CPv13R^zxcg8PX z4V5Z1^9!ZDN#%Di^E=3V<9JB00tc?ZS3&WVJrFf$Jz+1Dnh;hvoyC2@d<~?4n~;Mk zN^xc`oI;>J>XWM&C%6k`O;Ul8Lm845nasJpO|dX&mt@Xt4C6^j$4_Lj@uq?1CLu-E zZ@wsg@@Sc^k!J`vTp`hv&aYz9xd}L%B8ovH0?0I^q+#5ARO(cjF((y%6`7C$h*tSo zP=OLvQOzsGzj!>5SfHRv+ZoS!I?Z!vF@TzDpo|H$C`P+|%y#=!o9`Kk;S2+g3=wU$ zO)*V^4ajfBd`!kgnWtD_;ems?eRD!jCQO=vOA-hUD@n*We#s};Yh%cK!CqnbXPa;! z5(g!Sha(4Blzs!``toS8DtjXA2+l~{_!F;ds2hbXnwiC>coId}hQN+6T zfBiVTJ9`?1WF9j2zr+B-za|6M3dQ1x!{;TC{$Lnt-24U?BN z6}DLeGhsZk49yQ=iA{2NDU955sUh-#8+vCIl+gstjq_r#V5^2Gk5_d=5Fd_dH5+@D z6)r{aXdIT7U|c#FNfShdbf&O<$%As2%P#d9^z)!M&1pYPD(prddheN8cEIc<=xSRm?J9;Su zRGD&UC>T}eU)T&|1}}p*dOSz5~WC*!zU!bYsK6yS<{vcqCOXbPCv#hA2w! zN2gLbga^OP@Ex442kMqYaUViuI2xq0bcF>0zkx&;6$f%EP6=}stGm)fOi?+$^iSSR zBrNdVA?b5@=9M9ALWd`)9DyRVR7O0P;k=SAFb-rkHFK-?ism~(st5ZPn7WuVWPzzQ zAY>)nmN(2`nm`Fz6}D!Og~E`r;LtIQ{gAjQ^2X0GtrSiNYLu*yM2e2AXOGYE9Wv| z;PNFI&xk!D0Jb@_d0;O~j45BkAlzXHhCC`ww-B99lW!barfovxjQ5}6ku@SJ^L-g% zlrlt|-kW$P6FG$AWbQ0wiL@0-qdQ;9f#_<+ePS&*5d+_8QKO`D=}ntd6pj3QCbPj6 z3yKX$)>D92CZi)68#4`#rs1)?JezKvB;6Vk8cw)lrw~DG8q$^xoYOc=xrS(BC1GV2 z$%B;YDb9kTZL*^A>rz|}rP_3f#i5aAz=&WI)3ox7rbB6_gq#{>n!^;(?K<4CktJ_T z!6e&ql@M)QDkW_kF*ee`AjAGDj_a3)MnI}dN;wRm%zl#tlU^H?7g`FS&{@MtTm_&U z4}7DV%3yLs`bv~zSLsxvI`f-Oa~bK%#@RpU7WiwRn%%9LS;#^}X#YZHvx)p^aZuSB ztyeEd13FcaRtK^HfoxTS8QB?#1;G7LS{aK1O|0b^K(0Wh9#Wae3Y)oy>@Y5Fo?^pw zTu?VzVGmRge;~_;j6i28nI=Ddl@pF_aSX8B_R8o2uRG6YKdPNI*k;sof3nJn+O}ev^2srq-hCLGBS!zn_IWNHK>O6a}&7Qrbabs^S0K)DrZW*a+0LT%Evy4 z_*%6~1H=Qf?}%cSgws1j9UD={>tl96BL0C#1Yr2@taKe>C% zUp^CG?D@Qew0)Y8dkhuqpE^~0AQUQWZhJ@&znmlrbSpz72~k_N!oj*&K3-9h4~T+6 zMqntPP+-zZG7?~Xdq;tdgJl78Z;*k*A?34gN=%!;)co;n3#GAmnVLN_&9jky19dv3 zsnSiar+_>R2pi;h2;dgGf_?^es`aA;Twk4r)dusAXlL^ppzds!5%6oRTSJv z^03ppO|tW5MSqY()`o5LQ0m82Qz@vtWmU9_tth=H%QaL7^W4WFTV&>$@DX_@~&20vBsrCXjV+}5{Zr4nh!b-jrqq>}! ze@5TF^hTvARNm;UMNM*L3HwVUmE?X_)RKXLDn5`VLuxi@M-~JQK3Br}Ow(+hQ6{y< zZ57?65@IG5N*Z&^8=_gMi{ck7mnI^FkTT@%Q*swcK+MggNJ~j@hj?$0hwBahH9`Q> z35v%zA=0y*PJ?rlrc($$PbUze2S!G{rB%g@?U@1P>0@ac0g^BtC2?N?-FXa$VxyuZ zWG3|IQ%GsINRU_;oSX7?-zK?IHDfDO3{)x>%=eMJBJEO~Q)%?STAazBZLaM zRk%bZl=bX1+R->@hh<=+kU7j667S0(4QXx^k8dZGZyG*HAB! z3A4Vv3N#@(%6K*D+eyw!GwWQd>C z98U6G;FDFLM$?{>*Dn3{O4XIsxRWwZ)=fKlWqc$ILUian6pT?kXdEG`6!XHgTzbEx z-At`1lPZj+J$^K^?6x92ZI)XR)jg|3*I>9%LXw*De<{Yzq*C;WaVIH{cRM7)t1+5^te1<%#g7b~2bvB2~wNruJ>5C-;V2Z{OGzpYT)cm!Q0SLi# ztt1mk(r_XbhK4Bh9e;Z!dx*J(ln^YhP_9OJ8KvIw zls4Aa`^cB+N3 zl>oKn!(Gjb64}5sJ1WW^cXnD6JZ#EHTY+d=*ljDXQGwx@uTjDEjJQU{UnHZKd7tnN zxg@$+y`WGP$yjc|Y~v2jiVDd5Ovxw^Cw<<4LyJtQQp(0wumLjc+;p!rYq6FKycI0J zskTYXJPKqffpi*xqlBnPpMZ7aWXeW{?vufdjBK7Vxp*|!X8fFz#?4cl>A)320CkR& zYA`;qoe*^)lH#^RXVUk z#&wv--(_S+#-aB@;1sMWES^fzt?-YyryXF?2drmBI4lfyj;v&pV^Gm2 zg$CFvW4jK8Z?v&pmtjanVQNegLM-HeF~I@MrOD96!do&_D6L#ry<`Zt?-=MG4a1E? zmj?F4XBJYJ3ZN4#k&-{CEn+Xj4YQ7t=@}`MWLu#_Gex*M2W((xS#I}*D8N2B@}8l8 zN%8rU3Upwk0>T12TTmS{O5R%5+bPJNkM{ms15E-qi^u)D=5WgVWoNs}tJKjtn=qv>X({ZEr#t9=rMbfYpD%#;ZxC~AX z3R6H1o(OQ|-)}XsmXv$e@<|!v8eih3v}m|JS*jO=(4}c9Ttxtcq3Mx@p{Y>_^JW8q zsFn5Z%|63uCGND2^uXPdQE0U)>?c2s(lCuF(=q*Grpr2}J)alY#4F>JWHHka-bMK# zqWw&Idcfs?J7cq78mmAio>nD7QGDM5N8NePF~eg%BU`13A=Mcncu6UY(Jvm2LFOQt z;xs`q`;v+5sdRe8e5EX%wKk4xaR3IWunODE7J+V!=w#Um%~s$L9mXwBjGFPsrB&tl zpwhqHEoUiVzBX&K_%KLTeZvCe3iPJw53?BhfWlTgkjvYRatIU0#|aQ$5$p|{sia2q z6%$G0fKQeX8pK!12?r12tA%XVFB0KZKKDZ#DMm+0fm`q*@>x>eTquQ4l_2~SL6$&k z!<>dVQ#pZ5RH3(G1;Dtud2+G52jrn`X5L~wRU-xZsAY}vd)RV)+GIWra^4dJy^WX=fCgRCo2LK>4Pgo^z| zd={-5GCk(bmo-1+`n2I}4O20D@A1pT%5*nWPzta#j+Y=fI#`@+_gc$3)%Th4B;_ z<~)g{8ScnTDDN-?$fOy)87+eyW{7ko5VOEVI<67TlLqpz4C7E)G673L55f~)o^teL z!pyZa_BO-}#K6-s1W1>mFub(-N8xu(ls-l@l7^+5h-60|ArpQ+y4^%F&oFb6W#7CT zo8nijH#u8lRnoU(`YCpz(>gpO{{=shF+S;CXq-4ju=19>yND&AQIN%DSt7akKpT;?Nu{N zcA$dldMw=IP8>u@&Dp-{#f#UB4jRQt1B()hB-2ff{$ST=Qpye144y0l(Irc^dwDZq zj8UdA3+s~4OhD>Q3vH0Tt@ki<(pZ_ap|u&4FDxC(2+McQPs-dEXgLnlRkmb1_}uL!%mA+sq3 zqsbR|WGP-y>1rh_7X=*{zE)z)#HwUi075X7C~C-S9BcvhljyGSR`OHgDg+5HO0rK z$YHLo7*pJY=xQpZ0;2G%x?7Kwaf2bQu_A{rJi>GWf@zeIV3NSg#5efJkA#+2;o>sG zKF$#8Zb>!;X%$~(%D&*pbYcsqiquOtKiIOJGG|x1ePRKyxjE@v{sO~1e145ULL2iY{Ktcj@%P8*UucR{%9Pb9pIbXSo zYqJbWpk|`bdb-Ev&L^*oEwsgO(-cZ;oJ|7CusGRZJXx44$O2#rG*xDTF3>@wob7Z^ zfnrDy8NoQyM~o@K^Fbpw++31=8iFqCKD?DN9ii@Fn<2}Z&qJcQm#Uxnff*%{Ss`4M zC@ScwJZwg2t`x*{J{PlaRb@2fOGZ#x(U4wY!c{xPqBd+`Zi@5*70U)Y9~5L;IDRHn z4w98Vu;Ea4rH>(8lH*Y6YIE4DLJ&FNSI9(ozWF>2HpfIKztK>7StwyHi*W?fauv2Z z1K9!Voahy+P&c(3v@b1&HU-La$gwCLKn}?VhCvLDC==f&QEs`qnqYk4lxYY9@|(ZS zBLV3g3ZhX`0jY@bp19SUC|HL^7UFp^?I8=&zLgF!{Fh~+uiMdfR38QX&L5-U`})U27$rb5bE(Hu{xw)4=A861>*>Dc|kjG z6&cqYs8q3s#PpcvTY?MCuUlDfytBc1257^|uU*TJ!Ep3a8=vJIl0lSsv}C@GR$dgr zM-_tA$ttLiblExGxF*SC^Kjr8ab=rdNs|AJ(~!m&F_nw`zf_W+&%8jfkZi4+7eDZa zHf`sddCp8tUHt@)xFS4 zlPI>BmEzV?b#*&0(}g4CPzu$Vk(7M0aCyWN`&vRsjNKi}I&x5rrx z!8QOF19CUE+SAYCGBUnH7dE0p^)WH&H& z7@3r1a#$i^^i zL6*n~14{8LV{O$2v=`w8Hdfu2N57aEr#}NzNZK&vL+Zly;fd;m8Zm7R#xcIwD1ivf za@_k@5lMAO;^P3I&a|Ql-@g^%5;e#sj#JZhDbA# zk-s<#Xj?}M<}_CXD}~P@WLFUZ0Esn~NBeyl%~^YS!|=Fmx}UUtzza}nZi-^ok5yE; zrvsY7jMem`ddSaeqeFfHZ)}R@$xfXzAV4i_4Jh5&OE-ZT zOGvcDJXEGk{%nO(8ZU2V)GnayjyFdL1=gSUh3TAaZ(}E!FrF^7fKx@~Bw*vGVIwG@ zZ!&=RV+53)0t(84bnXb%MN!puMUC36S{roo5h4lPWP5On!BvMmJ2dAoWtBhfZ zli#pyk}VH)#;Orm(-Rk-1|@dVW>!`JR;O)nInC(9jFQji^&;b}T1)bwAb9K#o!bQ^jo}X+>`9+na~Z(zh7OQ)paUVz+UNA?;#$_d9)d4AYDe z62AxyBaDSB9EMIza7Cz32-3HKpi&u=kwWptVX@&?*NqGhzj_$Q{V>ps3bKODz-qc_ z+Ad~N%piqat2?N{S}-t`)sk zP0ys)J5A6O%4eZy>FeGMERYU$Ihr)P#BSxqW^XZxKXls$M`s&9AZ=#JRp`hcuT77q ziDZ%$&M%xLEECQ`qO~Nq!2RI2M`eP=P<%0Bd_Y^F5>(1BsnOs&RvWJ3@>smO((n~? zLXA`H&kRoBOV4cf0+L_K+oTnbm3KkI4huex8@Lqq%5z~xt31)1PZ6l-#gSLN( z&$tz>DU2>glcQt(0`Bk>qHe-fy)*GUXtg|bJP`wVA@>Z?c4U)qS$(I>4AQV+&X zVKqc)SELF1{f%bGn7X8xX}fXDo0ULvgo>5Lk{D-fkpCeCrYcqfoL&VIG9&+&t#KV| zbC55T;Gw>MlTI_{5q|N_08C`fl)@Ac!lsAjEr^m8j-?7AK!+_)DZ>CsHyt*~g@BCD z9OKv&eMbivo~=lty2M9QjPod|0W}R7hf)+HfwHH_u-y z3zik4dMC8RmxP+9IN1we*=a{B7LU8wGF!0Hdc}6kE7wfELo=Okka}sOY9_#sY*cnr z6Lx1wLX-`e9rW z32MkHn7Z0aNs1ikO=mF!xI)UuC}qoHe8h{`K8Q+Vuw|%STb_japIw8>1Yw5Reu8Kt zb8!^m!frGspF=8|mdI)5>_p~mAtjKV%NHN%~fNLt+pj>?n+zBD8GDuD*;q5cgW+max|FnbDI1 zGcrpA6qHIp$RZL|R#^@Df|GrSQ%mIyt!X`UFn#yQl1-UDV+h&;MHOmFRX{jk;+|0&g zRnbNY-dC(&MG<8}nGBFLTSfkM2vaJylR^%NT+l|M&w`a80N&hL^jR>CH*AsGc{i4x?XCjK}h-$o6xop!j(ORHrTx!tYA zmpzrzD9I~kbqw)GiOd_YvVeI~NS;iGw%bED(nsE~Nib7H7GQLbLLS5hXJnylnm`$X zQw5)wagily#nd>PsUx_>_Wv;VuFY*6S+=Nt3hw#PLG{=Z1i+Wh%=82Zf+B4`U;q^5 z`GQc(Y`5;nl8+vJJZF05x8Jqa-aB(=Re`c^_l>xYZV{C`t12rW`~9#Rs1=F&jC$5~ z{q5r3mM`2kBHIODWnc}}GF^ajT%wBX(f;A#GfAq>5KUPAPUYwz%(X>E9HfU-*$}_R zsDjXKa2&QqwmHwlET8bL(u)=Q`yB$VAuUTm&qGrI>*uPS3PmX=2>Mxku$Ig=kZ1KW zOTd(ZXp^L^tJ5*1!gDxOAc&dM36&hvO&~l$^DhRt4OpBIxs9iue7M$q=b3>1Ms)>+ zbE&~-<-Nf!nzj;tYGJ91pML)IAKjSL#r1N70)ZqjAlP?p-p-jB1x?v?`hEX@h!#m>FcP$!o%-r*x{?P*Jll}A^;`Bj{Ug(Dc9UO?-RTgT%UV!&=Kbl(9{dD^AQWag4xKt!c|o=o|B{Nt1cH`0w(IX z+5DO#=y?OCiMxLI>GIuc`Fp$KX0?LO2V0omgy=?}S;>I@ynU}6*Mjsop%@Q3_tGb0 zB@D;+L;7X3saA*E$M8r>u#~rT52(j$2@o>``h}Pw$K^a!Aa}%Bq42JC4B)7FAo&-uQNTv#06$#2aM~|i$Vf7Mk7$@`K$Kr2eoDDYzxWzXp=U30 z99Tl#5=h@}GlGm)z`ddc+3ec`+H@J45Auv!9xks%D#`>>UwPHh>6-uFV)2=ZHU9@G zaf^I(Q1qpwbcO5Mi~6-KUk^euVUK!m79aR1m=J>(6a6w9dsG# zCaVAPJeVOcKaBA=rm@D)Oaj5Wwq4jUgZ=Y?@e!&^Oa`Vfv=*bvFAl;nC1{_RvCnjY zeYs&rk3bYa;70xZ-CdPp9fC|3!@UZ^1o}Jg2Jix{gw@?$>}|i`G`e9e=E!-U9$0fk z&XuYWD7q~`jd+$qeshdaA{)mD!ziVlJQJ>PgK-@02wkjC-@%0yeA7S-1kAS%ie1W_ zI+btlX%{ibKD@D-5LcvRHjWOGu#8k<(u&@RN)!Hrke`fcM*si`!3-?Ik7m@ zw>{Md-PACcFj%K7dNY**>7zQB1YF`K+PRs zgz?b*+sQUbzT@7CSQ$skT}jLH<(A9ay6#1(mXfvloMPrh;&re5_E2;a5m3;3<@vJ+3r{O}Yyp>sOF zx<$Yk>II-_4q*`9jMv6GiKZh{1rnkGa=knvvv@m4x(tL7Sp;2%irWmZ=L5pITA;=< zSJ=t~Y?$F1c)=WOG&IPc))rnjg}6_s#Q72j(CMUkbRs#R7hOLm)3- z&teHjsZhf9NQz&a0p^U?cTl&WvAPw@g6mP?qjAEn1}jLlg<%Wta@vbgKr6k{v-x;qxw6 z*oFFVv@1;R?2n`m6h@&0i2V<|oE2Z3^$PLFi|K@i5H&3Dd55OXldWQxT%h(giVvCO z6J;5nN(c(b*MGQthjL->Uc=@GZp~skb*A&)A3uHiuX2Ug=KXqz|g}ndV)Ol@-DR7wMCzl07aldyO9VwTEVZt zlT6Man9MHVXph;h?A?9}sg6QpWzyGk12=!?CTY&854~wjT;uKxH6uQow32 zHsYA;r9Pf&ITT}nn#KP0ubaBIw+k*KV2m*83vn>^Q%{TBo7b0@&<4yGmoISAR=1nm z`7L5*kr?fTRR)n)5-SB#%)E!c>FMbn+-!N)Dzni?7xYl=qYGh+NFcYur)j5kfYNxFe+M zD?u zfcty7S)Ekr`MN&=ArmCbl0<(1Wy_E6n_L z(wdnWJ+825<`<(lk6uZ)F4UI}TcU(w1RszN@(|dLSa${+8EkL@O;C;bgC-je<*4b2 z@6LYJJZQ$H9Gv{Nbh&s^aoES|;P#Ri7fhvdKIq{|b30v3ZdFM5_4<0Gqk>Y{Fa}up zqQ%QO&^!t*+_=EF;tI>chV)E4^Fj}1o-OKBKeP=iLX?tpt{=Wz8*C^xNQ7bIp^$lnsgVQ#D>Qm~D%fFQx?zGxN_l+sG#ZvP-+ z(IAr~TqLW{k0DHa{JNWCCqwl8nvo@NG`vR8V7lD2Z7Pdr2H^xMOr9XZRWijYe|7z( zr;4;7G6FP*-=3Hc>VhyMCf<_zl|%DUkqgVi8k6PFs0cC+4AA0KoeVnh$x0tcP*(8#KTR zeT_L&H8sXCRagVQS-S^LGI!A1xSe$L#8bs09ta{9=<&o7K`)lm$GtQXSTpWwJM)^5 zpiq4%h@EtFbAFOiEys2-Q3w5KA>*Q`oG?kf)VHP0T=%)_`4X&bbOR|KORA;&I}69c zVZ6UPk8DgQ+>{{2EN(sW3{AOBuXe^QN8|MMZK4$eU9#u`PgWg{)|HK-3!Dm-b_pCE z**R5q2=<7?PkL>XDZ&B^^6vE07{gKK z^b!%T+;3>bR52+WbRWdvr+4QFw2_%{kIN|c7yI!CM!+*@<97)4b>Kg<$ymCe)BIj7 z3DS$0?_1aZEGbnyBEmF2L*j7_YL#3A8!%nhaR?M5`IErD$lUE{#Rmk0GT5XK9eQFU%K z1M2|DDI^b_UQKUqID?!?ZeNS2478g{kH(An#eNfoxUXaccq*Tm$gM96_h1KNI7pU3 zsIIiaJj|A*>EN?DDXsA;VY7A~f?E@)?5;C#!)K?S_k@U7N0075_ut<25)^cRdI}C) zQT$T+}AW^43%4Mb1s z^5REdV8xGmHH@|+(=B5(scv{&X+Xdmc1Ce{zij44*YL25-m*%eeK3(R+QSE~+yBr# z+Pdw}piHVf9utW;YO{0H$%h~|uc9>igW?wHi9JA{xQyvLHw|8@t(t1ln%TJ=!N{=J zI^p}Sk`QAqm1~nUg9QF~POL0Z8$)HF$r*eqZtqa0g^o37u*|z^aXfGU+=|^>vf`9$ zEefa2joC!hgW4XNfL+@oT_dwtaO1~?9;CBJQ3n|*J%N}6pTeK+W1sGHNl!q{lD23G zLU?BUX}#7P>(X&fpJ%DC^5>6u=y(9+cKhz(;fL+VH~;5h`zch)j5ihM=Zqg05tCTL zPzxLN_SIh=w(E!g_4(o5r#G+OZdVVlAKst|w4~Q30mG~TE;6|zxMl=2{PO(!3&>s1 znL_U?d9EQZ^jFaMDuuCvLS*zupxvj@UtYcaCu_nllwgFl_X;TdUjghqq%q7R30khzav&m#mW5n_zxWi4D)ebHCd4tjJGMZrnq@g}OF9AK!$`JvCaw z^ki7Bmv_J+FJW7FvAEi!3%S@8`vJRj1K;_OjH-hiFK+>c3Qqw2mWRcSrG;L;u6ia<^`TW99cXhvlwTY}B zth&B}z!jti;>*IfOb!3$wB->%TuY^6OfvTor|$=3zGQ00}C2BRZ8IEJ{vkx3rIG6g{7!$PAptgeXR7$7~{!og|W zM=p=){=w#UI(|m#2RNm*HvT_Mv60i10; zkvNiwM>_C0|6bOY5>U1noODB7S^=1(Ywf-@&=cnv zYQ{l%D#1089K7@*3Nfj_V!QVAUuL=ie^A$03Nn z#ErydHF4lI;xcODKo~%{*Gpc`!05_gg8M{^yU8^Uj81i&3J$Oe_+BudO$OX(EUbi< zg*G-SzoT4(i-HVCZbH%%8tFh>l0t@n5S;P~*e*#x-^c4xvI&KAgwZ`|T9*lFVSYEC zdb@#&21NvKp{&C01)Gz`INU)))na?q=JZ<>w3bt#2w8_1jwDUtto=cyX4^$u+8s5R zIzqcSU5olvf_A={wDfHfR%0Ha^~0yx=TGlHJiLAX>IeT=wZlE1B}d>sipYr0N7hf= zxwrc+0LEJtS6IK(aZ@1i@RD@`9qBiWKF5_l&?9MaM)7M56HHVtph>AKC3x{mCMA4Q zNh2+@5XKX2{IWU~_hh$QO*7wiQSGY7pTmdln(5z~WN~~YsE`3#tkKSxP+^_t`imHm z=xfMi<$4#QN2tXhq9A|3F8|*laOc6;2gl^H?6Fb53F7Aj;wc7i*k^#{2Cb|tH?r4a zJPfJDSuVwO;enQU=R@#i{hF|>BS-3fVTyoK6t=b(PR(T8NVvwaZbg39h(rR$L~1Ff z0vVu?8L?>F^eH4+hr~{-Fm|dEf*BxBN#3w*I?WAmFU~tf?MOf-)ysDD@z3u+d>S<( zxAE%a?uJqeT6^HQ+3vDY9gzGpxZ$o*xPW=6w+yB|Gs)MQYbyqe9W~j3`nsUPLQTl; z`%$K*qQ?!mG(g6P)--uJNpdV#I?aHy6~?C9>+9Paj0T&}QW!etGpgsd3v&8M50!U_ zXvID|JN0OPr3JMV^wY=KSUeK09bG;b!|;HoU8iUW{G=ng*)gHM8zwuZq(RzC%T6`j zw>mF6-HLE4zv}sK+cjGaC$_5w1D3{FF(E0>R^n;;gb9mHe%06!QnNOl2_<4Q$qtS7 z+>WOfn)UwLG~AqByl9({feEZz+XnY0B$DkkE}zeOZRXK2c=O$Q<)`ivXN3PxX}w^e z4+eAMR_2f=Nd+_~(&};k3L3|IAoR{YX901ua$AvWrlk(D2Y8Fy?c>VU$P`kDHHVXx zVM_*n0G}0$>fs|1nuo|PYTD9BYKSOYXiO!OkCh4>PqQ;Y#spl8J|fhL#ZMq{E%&o; z7w~%T^h;?i)<=wtPYL|2LEqD$c|^A|zZ6srGaC_cptJ-yNMO6^as^2XwY-wkl{M&L zlrSS_oa(0#pB51(ph^f~GY+MnIsQtm>c9bKNg z5j%!^I8`92yS@7U2F~FK_}He4lCG!1 z+0=S2b#M4*`ZbAcx@%MSk-syyC$rsWbO4TK+-wi7po4!${O}a@DGVK3h1^#5Xh8a; zp|gf$dOcRLb70X$x0}-rCUA2bmU9kDPmQRAk}S*dW_l$UR)6pbOdko5+l!h4Oi$0_ zhhIb$hQTx@YI#WRkaYF!n|BYk%;9;X56ezG#V5z_m9Q|~!5sF1p>>#SnP=6W&hNze z$2=H&Bp%I!vx-lM8d2k*O)fn-Miq?7iHDu>DS8f1bJSq9!_24aAi#wYzVRL5Sl2`n zKzmpskm0HnO{lU9%JlI7^l_5uqZ;%~GTLXiIB56*bsml#<__2kLo)3;gd%F!$IqtB zCj0ErC!HUo&$(C;58?l3i>ul9i!(;B!5S@>e>l9M;QHBiv3PO(Y*cz;r@(J=ix)qB zOTzQg*SgT#1TuC+U!nGtGv1>IdAlKdnt1tfO}xzd0vTbNV3}Z5LF^U-frG`AV<*Ry z)g`cN(ADPv{zc~MV?j1>(F4x4*_O+%>6wOgIMg#Gh)9uZDJ{j!v~_oa8OIE_pc?a8 zFO;W+>9FwZ$!rGMAKstZ1afo5%7XDP-!>ey=HJFmTm^jGX>xc6Zw+_SD9H86^$Chp z6cq6rT|DamZP<7ihK?iQ8d01dQ!L@j0l>!Rk-~CgG$+ICP6uKL?-p!1|8M0Jxz}k> z!p7k!7EAEvt@5`v_)(?(mh-{+d!$sBV)YvK#G?0fo98)7i9$V@v)sm5uR?lKk15rJ zB)nS@vaxIlR8X=YLdxrl%X66B;GsH(pHO4+=H6()dXuK~a0fQR@Eed2ci0h%X=R)Y z%@ycRhj-Oq-oJhI>CM{*4G@cg>fM=`aa`6~KV44Rp08=S9POoR2uTG1bPg_T1DzJq zJAwhWFLte72c(A!KbIuW(778WJjB-~N+kQpijq(8)rx?VBSQf{fIa{BaxP?{I0<5w|;R;R9fFD=d_q8_n z*#(1-v2ivyDEQhDG8wzO1(~$dZ=otMOsFf}U5DG%++>#Cj!f{N#)m#3pDW28L2VM1 z@N)d@hPI3cLR;A8uQ!Kp2;9AyN|bhYCr2If=_yAHWyOY0-dNgwn^4Gf@a=4>c=u5} zc7DgBwN95{f#``^r{KpcJs={=Xy~Qq^mm+A&=1=67#Dh#EgHW!i)$&&vUc0MbdyB0 zu4J5D_)XWptwz1tqk{1YEf;4##;m!;g;fPhYavz90f|!EI?U)8KVz7cN zO^r2BP`nFw87VdEOTVtyi{-wv$9>r4?S3&Z(9M8P3*&a8`8rh)OmzGBK&nh`v!p;fXQhlgtL(XKz(}7$jmm>^IQa|(f zla@YB?t5|mj-5F$R}E&JvyE$mS-yZB9m+g^uaC6#!{SzYw4X^`g{lY5c56TkvX*tI zi(|p(HiC8n+<%gji3E^dY?_4Ha&m$F-SI_V@71VU%Y7AH3#KQ=3C{J2BWS!HwY*RfVemfUa7{0mb~^&gX^ebDT@kQDGXVkasfGLA1&o?EqM}If|JO z#q1BJ{Bcn3&G4kdzBi96N!)K0U#&WxQBmN;oR*;A1S)H)MpMW&32KK=)o=&naFW9; z_#v%d(qGrALR*W*i+GsU_(& z9ScLj2gxOnyX1e45(>D^Gx)q0rD7j`R^n%-t7H3Gzwqx=eO>5}XDHTodvnD~ zyZhXi&s^_`^MHD`g{ybz~$rLAy!9i$Yy5wq=JNH{aBD(Q`5RMZKkv zC+K(`A%)j@y@XDsbiQ{F{oFmlFYY5UggFxAJW!E?Jf&whTxPUfEce~6wj+8of%Phxb&TL$gY{<+@FmhcN-Noe6%cjrL_P>f#?0a0qG|Wv zm=lN7;kiuO02CR$6}eCzlWz5t*`OlWnsSa^d&Vv@KB&EfJp^X0RawNwYH|rB1%^Jm ziHzNG;!}KV?$H`ltQti@;eM1Fn@e=ji(Pt<iGbZmw;l*3iRLhfF=IFYvq<=c4FTxk_$A-Dh&2DJ^11X+dBG^)2a zm12iO`9jkq4uk%gh5RQ5c|b_}zpIz*XuEgTq* z@oW_4B3@|N)O2|oBA}0cDPz_t2FaO2X@Z;}>nMB-VsPqaCSVYZlsM{d&pGPPDGV`k zl3Lc$oFLlek%Zd#(J+HmOBO!G4RX%*`8_%9>Tm}Wj*^-R;(}IYLayGofMS?HH@NBP zW!I1&FFU44v(cV1!pv@@HTrH2#Q;){@?vwna7v0S>fzrj0_E(!k=X>)rhzvd7-z$N zwx#>Cv7?85SuK?1nFv#ZHiU$R{QcgqX;M$%O}Kr~zdWjN%8P@J*yoq$w;;n%ivJOA z39sLOMwM&M7ACQ;iiAH;Rz<=k9#4k;dXFziDYDq=VI(|H#-HpA>oJ;{EG!XC)1PE8 zD*@Cb+tfp;reaz<7`p`am7!XRT0$|=uKEZ~Lc2<)O7NZz3S~*vb%aiXNC511l`c#- zx25_79#2)d+#~tJ9Tez`h;C%KnO$vQP!+D?wu43&p9P2E1fGr5;}5XRGO;2_K@Eu8O4y zMq)(d7L*Eq;S$+|Q4WB8DTNy*9d%hkID>FM&)67?8FZNBlJ#4M#Vo`Z%;F@1Nu%iu z3yYNQ+x0!%d?wH{R~CmmgbQm+`nPg8c-n7faN?fF_?u$+g)0qcUOrhJkmfa+!NFbk zRrz5D_nLOxB{U+#pJsLi9}*|2jvu>Fy+OE#JNx|8&HHx@a~0Z|ma>;pYzzb?L5<-c z8)@csi4kS*H-yiP#g}9Eo;)tu1FWZ!YB1s-@_f&D-on(K+mfGv-O+w>0;nUk@Y#t8 z>{Lnz)M8anS+ZCj6kBsVy%F3JSnrTX@hl;k7L$=x0bU;H;G5Y}5-Ey=b1>>$TQVhl zt>?y+w~97@+vaB|QcVtqru2bHj_s#<3Hsrmsj9iM18qmse>~WqoJ^(%M@Q3>!^z3X z(ZfGXPtK>Tr`wi$p(eTr#B406JLaI>qk*vfFnxKq0ACdId z7d~>YRe(lI!WjOg<6%LSuBQO0dvQ*?yOHa8M)|P%4}g76!cf986_he>A>^9+hSE!k z`9-P{)D5A2TJjRyw5QA#YtGd>@bCY4R zLm)iw%ZO-FPhwqpd@zv?J_5EA@@L|Dkwpy4YaFos)-5%JW_?V@CN`3cIGX8!H8pW+ zv9B97L2g&aYHrw1IRv(r3Q`(vRcvevq)&s4xvMC6SbhO4XSb{GAvGbV2OYw@3F06{ zsvA34B2|`_aUs%j$o0EmiIp7W3*GK-S7#&FwZZmid5StyWh5_P`g}2yv-5q6AQ-im zgVy6<(j(bvtx6wb!ggj)E#)UPp0)qU(pa#lD{#@3xLW=KGc@-^2p@jk_6#GSgs z8XlS28lM#6umJe9V<~p|BX&VSfhW+f;%*F&qXJ&Byw+Cl8#qHcG=Aoc0&07-9j&xo z>QJ%}omfBamn3>qGplV%`AGgjQta?b31A8glo~bR{Fn`Zt22>leRg-bJ=^`18BqT6 zQSf7T7uSZ}Pe2zJZ658@dPwZL7J#;LuNh(Hro^j*$nk@f9R0;t`l*E9}+g3L_;e5%9 z_JDS$@qrtjl%qn&v!WCfNHIH(BbWoJFvyI8kDJ3*A{AY_7JiA()6t+h;b6z<2`zQ$ zqmL}ExqXjZZ^34VdSLP5=;T-V@pkWeQa^Bmsl-by)iK8n1_P`L_{f3NUSYP1V5pbyFK0DHG#2KKu!7^k8NiKzzmL4zhW zcOU=s@ZsY~_z~bcO#KxShhaMaj70luB#2#WOwK>h!HniF@RBbjcb2Q#t`YK)7M4Dr z9~9%A^Ozl=CP>JuLs8w4tJ~^Rpin?V;yrCd57wjqNoS@NmS+Qs5n5=PRj*ZW+W6=* zPOl1}VEK`WMW=RO)h^tT72#I`*-B$$fO);Vk~u;#sC4bE%k0s@2x6K%D(f(qX`qJ- zJKTSqGiC&2z^jMP)6WJVa0{N~usRhb3gvZ3i6K;I*MSW}Eqi zvhc}WO~*jq|Ey`??$>0txsfx|d5TG3V*Qv1cS;T<1&R22iM%kKYb|wo)L~PXsP4bE z-M0r%0T`q~@vR55Q@+G`UP;ByQ99G6-Qf_Qh>%sF^MXr}t9@IJC>=)*-@T6pyN1CP zI&UZ+E>97lo!$ZJ;nWJarx*(NxDgR_n?;PK!lrE|6pLVMGoc*Vo)TVR9I4)u z@yb5%N~6u6NSzCFNs8q^<`VH+RRYyrF*{$-1N%0;yYhlpmn`&6M-6j+#D`p+7N;L)xz5md5OGi+=G9C2&bMsvrbS8xBceD&kQ^27TdKfL-$;qQW=4#PzYdvf~f z^AD?6pV0T=Y_WJ0g0Z9pVb0d4%oC=pTKsl?_8S`(;F3ObMA^LJ^39$Ijx6iMprf|XTLwYxJ{1<^B>e@D0jkn^8 zvK>;i1DPa|R^n!HHo~_lwqHfHaB7xV`Ms~F`>2^%(HW}Tkn^0KUM+~hQdL~+mRc59 z^^B~{3zQnx-^`6k4}=^fU0(qf#Reu3V-LIyhI)2&&lH=O({!yqJ}Br~?=L|~hC67J)I>O-K8YOwTkJ{f*{D4L767eDS-iJL_5;2fV2;lgFUd|phX%Gw z&mo@D9a1g2!3c$k&gaPK7N(-{GiWmn14i1{NIMW#RPzzI5^v$ZeO1T@90URPwa<3j zLAY)I2)Q4wH=t;ISBZ8HzjK~M>|#@a>X4Y$!tU|H#nxDF=oY~Sti2}mjy~$*=Wznf z(YUbMj@Ip{I>=7s>GSJ3l=)|HZzj|D0zbDVhw#L?PtH&$-EOg!6O#&`K}@)PHnBia zg^5ZgBolW5t>{HjgA}K|1k&Tg@2#M?zD3Y_y;!?H6IItp;$d84`lLpi!xINrb>wov zBfCsZcF45dZ5S}?tb&>q&x~kL*lO#Uk8Pb#OA^ zNp6a6ks)gsTZ?fJ#oe^;e(F31xl`l}^{i9kRgqKCDEb`4=4J*%XnUyxpq-h0dQEGZ zTh!0!x@A&aJy#yu7Pky^(CU_R=}KI!4~<%N7EOk6#<;&UyMhHSvcqhBnm)1^QyXmd z>lWM|(CR6LjFdDP=J5$_DJ6t%$`b?Je1@u_pa3{YbN)uA70}(q2JHACWW#E)q-pSG zaMHFNG36U|3K;$dwOK%MI@ekYN}{mbFhq$ll<`|IPB-F>;9_uluF`D@{kO2PI-?#JDaxsBf5Dt!SWh<#T4Sd{Cxr)*x8gq8`=^5x!U6aXP-bvI39# zh=~g`}^7I`MBR~tS>h` zX04ZR$Mu{}Bgp4bX!XGymPZ#WgblG;NBCj$MtaS(s*zkslgZ6j-Fz6}I@{EYi<4(~ zAkaT^q=C0KhKFwN{Ll7S1#2>~S0LhAjrpltSJjprYN?Ey%Bi-nV6+)SlW06&I#vT6 z^qPiD9v(w?diX4P)o6q9c&~BXQ4*BScALY?gJar8jl+zKaA0j|ac$OD``RMP3`uPnB#Z6k zujJyU%%@<%Jw4mo_wRm0k_=SYz{U_eXuQ*Pk;eS7o#7BPU@9=xWf9qLzka|rf289dLd8zqWRS|Ck3 zYvLx^k_Z%Ml}z;Y0!W~d*OGO1+*)VHVV%{z=8WP`Xw;)wr*7M^5L}X#%WF5w8jab< z02vq7FrL`$A*uCX=zn`%6B39IpbFoKzUyU$o7}3SspnzjlCSUAHYnl@Oc>-uWekKA zM|OSw{->W%YcRP^vX%S6WN5i^pzg2Nh(@>)9#h89C;J|Osz*cqgIIu(rK>e0;mr1k zPXW3{_O?*QJ9lK8i~5IB-r~?S5OM*54nlgHCn@lM!K$|}FnmTyfTspAKQZC5n47T| zN#g10!Lz2FWATu`O{}H1+_D8ac{5Kkx{>{i!b2^8m0ZoDgZ4Z*BoIsxk2!-Ms5LG^ z>~2`hAGnoM_kZjr*cM2yXqT!{v&N#b{uHJ|>>4brP(!;4D|FIWZ}M0a=TFZ@`GVgm z>6IK@HclOG9yLxKR^t?3OC17U+nKct(YF}I!^#3RK*!1x(=@GapX)2gU7xP}BluIp zY*e*HEqE5QK$ZcsAjeXCD2sq~#?ye(fFxI8RE7DJ*Pn4oqNG3?V-nJKQwY@~gQ$m< zsE3|vxS)6kn`((0)v*MX+XGN;i%2OBE0-K&nP;FJtP0d?;{7Jo%9W#Va)CiOXY!PX z#Kiu>D2hs^5G6LaSg4O0pH3e61kxKtC?bD=IqqWPVu*Yl8eu_xQ2CK}PoF9Wx5MfUdLAZROs_{BoNoa==R?2X@vwcOu8@06sv;Ac zOo8E;R!((d<-BT4V(w}SmLK!|xDIo;1Jy7}F|l|~{AnM!N6x_uqS`OGEcJT18;SRA zdxRnxG!stg=~jvRlW(JIO#e6mE$3fsSSr3C{Y|j zCH60qbXJZ5xHnIn&p@&xo5}C5s3FHK53RTwD0Pd4#xbc61FkCSm%cU!n-%CPtJxfT z0gI*bub^t48EV+rUdfZQ0^|^RKB)~6w@A7I5sZmK;rh;SIOJTMUk`G6=vvQKvrHRx^m{;&UV`R?PVSMOdweEo;B)vxThM#n~o=Yu<8g^m~z z+>3zS0SW|$$zl3bB0Y+*pwGrAk=>J=q(iN}=k;Z5wd6P9ge}SJ37DpkgCW9lZDH^_ zwC=dm!|(>fJ=$OHcPMrenE4w#z^ypM-M->osC`$>N1C`T2CF6BE5ge=ZFsBJ9-~j4 z13^TDbcW$U!#CN9(t#sWaNL~|a`#al27O9v^Pwl9Ng54wy9t>h;z>xg_ z)ljb%FrBv_I@H5Hl#GgOPh`?T6WaT9A~IMviC_5+o67M)C%Grv)vwVb!1jbjh&-ko zv8YFClrB;2h;>Lx()xechh~gi8xnd1=`bcH!UBpAzUQ;o79)EKre@FXhc5usu_*4s zh{y1icN_1$Rf?4d`Zt?af zapIk}ritf)?}9U7LzzTME>;8?(|{>E(eo@|xyk0$~MyGu%1|z4}g;KcZKapK4)vI+MmN zpz}sl2D5m`lLxC!u@}yjB_NiYjL3-@2#rJ27S3u;;u#l1&+fn!<+GmKwJ0HiP2`$) zVyXgdoGee(2lpq;{7s+X1W zA`lJ*Mfyq@jqED;Frm+ODfS)-yLgtPF2v(Za?-eol%ICEE!u%~K(edvT>THrF9?8T&4-j>x~p6~K(ae4<+ge?aVKov=} zmxr-17QLiJ?0OMon6Kq?Y|uv{Qx72a)Ho*d0|NDzZZEa#VFL;oB&ABub5?tjG>lwJ zpRc!8J&VUFMY#!^xk|AEQuiv#s{YC8`ROEyv!zW47H1w_FSDllf(o-oYpS{sDryol z9v1#(lJlZva(gqs3A9i?N04xctthKkObO+-TB%BM)`Us5q;a>tVnocdn#aU4f1a2F zK*!;lNh*V_97rGM@e&Fq#|etCC64{;KM)ODfSw4nydfihoLV@JdC+F4hd<|_eF@9s zF3LrY=)iLnA8j9mgO+Q=qESo0c~SNxFoCiPgkI%{LcLf+kJZ_cK%&>9wGzlAxJ`Cl?AR1_rqV|v0EQYkW4EMMD4xATeA zY#7y<#*LjcECDUI@GLV}5e>G#jY$E$vFMe9eMYYwn%v-?g??hB^im!_vxPuIoihNs zfrPx0&dlr_Y&(&{B?=%m*(6}{7(7+zPo^rt%7HVG*fh^mjbtb1YcXoMK?`AfQu@bI z%^>edK{O+-3*=ts&T?)pwQ`=49j5O9!rQ3W=YNm@K)xTg9?jFP}<7c7m(iP z%T67TNMAj(sY##eGaWWTIP&X-G6y@Of?wS34!8kv!F+lJf6QE!6er3G+-$iM@o8`@bRxOREok{6zMNZeBR|8rdmX^YnCU6 z6q~q&l)&zozK&^E8DBA~^q~hM&)d4w@4=m!8XNlyMMn#cEK};$gGPF(Vd#`9dyG(g zxG+7p#T80u75k%cfV1<6 z63UI$wIn6>M#)oL)#dHYh^Wbb>wY^>Af5M@-JBu~$Tmo>mLLvPG5NuCkjutNJT=ta zMn#{V!zYgk?-0>Rb@v4%#ml*ANZjiT*;iX^BkrpLH3Y2(qYcQ(=Wqjg26H1tND0u9 zeD3%E@emP^U)!JJr0y~bc(G7VQE0Jjg-%nDv9Mwd+f|KA129*G%gd?*mVu4BX4p^T z)57P=WJm)UBF)CQ=61u1iJf(M zN&w^v4b!J?2=3EDfk6k8sjf*WJWN~F`TFU(cjx6+K5p@uSZhS*4rRe`fLW*uAr~9Oz?6U(U2$f!!tVYIOOsW0YEZ9G7RvNUca`s{YhR)277-;V zw~1KLUE3ECOY(~raOk;nxW0omUTa(ID)RNTH?od2F+CYI%dE9jdq$Hd2I|y`(W?`Stj4 zMGbecJ-U}>s4X(6ylYO`9q|Es|IIf?8X1@^>`*RllB8~9gL`X4|7nitVkc$+hZwYb z6^fg}O?H5KbzxXi5&}`0aGwgcCBe&$p>RNuQ#vTEz38e}8m$l41Hlz?uNr&iiGG0G zq&h7LhwCL6nQnKwT(|{3-#FA0EW@wv8A)uu^h_9d!9RlEWJzCyw1MZo+00I<${9U(M592su6JG5pGIMOUwWWJY&rj7Cn$l z=AQ{oy3;Y4p`yYpP{;?K?d+&?IXzIc|Orb!=F ze7-FeT_&m>kcR090J!lqd=&UwkKzcKKFXDNs>*@>;cA7zEFI5=5v)Kx9%3f&JQP4~ z)Z;lRZEoo+WQX~ej|$n*mBvx%>lvgqt_`_!KFRA`j3?&6g-fOq!(~A}<1NBm0@?7Q zei$=(yPb&=SaQf$LNtQ(3Eax$`C;Y2A#zSZVj=z1dXQQnZZ*FE)ozh|Spoy<1tvB# zO~Qu3D;_C)j7VXTMbKHwH=vNg_R6-3g@9&*%~mP>9ERD+97pTy&5v(By?T58=Iy74 z4{(8f_op{Mnmb|iu(qb3cB4;7-ZH)g%4CQ`kc(PQ?+{?;pd#WcR0J4xnxX#wYBa|G`IkrEFew6y znOD`SXqP6E^uPKQLQe@zd|k&U*-V8l))#cv>ExS?#tpK1R_c}MHxc4BIy%TvEeO%5 z5iZ2$dZvQ5?$*m|oTP~1;$>M$Uu{@1x_hTWG>WcB4R8N`lO8*?;6O~p)__H)hRk_H zgxsR80%{V@?r!E6ZtalkYHihH>8yN)2xQe8{`^O}0W&48G-gO8;od;jx2LMo2R4ksEB6L^s@_lQ8LU{{SlI!|^kI zxoezF8RHYbTS-6ML19pr*t@6T9O2QrVJgJ$v0}j25NAk8*D~cr^q`u9*F&h<(?B`X-cEr!rrt27zilN@K1q}Cz0R^3#lWLX=?J?;t%=N>o zl$htou?QU^&JcQxXmp~|xX^te>Mw8C#UmHL>oeswaK7<^cJ4!PIAAPY-^`Z4BP@r& zz3nrcVhN&%VCkpN0@nxup7i?7r<>0|{qf<0_}bcBoO8Gj;W-+4??~0I7FJf7YHV_y z_Ugj$laLgU-e!!VtAlZdkcmrfQ6mGm2|U4*tKOixNCs|&IvID6v)-N4%!AjCq|qcQ zUw;S51V%?zRi*;gC#ePbK)Ds3OO4VuqV-@RrJ!A7%X*84W5bz`9aJ$8Io;vTF0{JZ zYNrV50ErAU1*w{;gRuuLUv6Jqt}l@+VgzpMWdE67!uhDllL#$f^ zZ)drV*T#xs#8XJEnj?-l5Z)=QqTiM`xTUKD)GN}qN2aQB1-;;;71xnQ7UKH8ct?C> z_{bOXbqrkr^1)Vqd_PSJdSh^w1^;|U0wqpo1GAlDAxcJw~K#NmNm~omO$-r3Y_x3mU58CKwZW9FBV zXJouTVHA?_PY~9Ex*2!XvR44x_xj<)=OJ%mJ3XBs+9-J>Bx(FBCIna@^dT^GV#fXrM~=N$%6X;C{|7us>2E$4VW?BjnNKb!17 zo18p5JlsD%8BY!$zCLE!aq`>MPGrY4++^LbJmcf`_LVAO?*S=l)J<#c0bCcj203{I5chs*j&;ja(w3>C9;WFYPU1yyM zNDSP#>qo1p7Y7HBo}WZJoOFaAX3b%i)ZS zbZGU!vu2hKqOL_akpmp|Cd6SN&AGURyEh$O$F0NEMEeIUL)SYx7<)P|)UV(kG&Lw# z-Syjtho7(C|L`D9jq|>JsGY5Z7mLeN7Frs(=8_*w$;iSTnFlQPZ^S!}k0k3$*^ilw z-RAg=*u8-4iP*1RIAFwm8bt)KOXWs>4nbTozgIWkVyl_&6Y^nzs;-fA&0NCpQqDGs z*%@?u?HS1sy;57mM5$qWae=A3TPv>N&tPKcp1DQf%R6Rr*+jxOq7T;7Bo{=!;-f~- z(E-)zA-mmBHBFRS)rolTa?^0CX@mA)l{6&-$S_toO+EA~upvzm%u%;N7>nM_^rkhF zu``|Z$n=3&PHki4~Eqea9Eip)+l5skD9$*iy5PX57(X)Lf8GT-xyyx6Lg# za4Z0OI3*!L^0jbJ8SpP0fGRTw7;6P_QXMq<{Zp$!Cw8hh4e;}_=8-sBmc%$nkdmQ% zj-5thtX1T;Gp9so;6D_)Yj069oR2(_mma7Tm=k)QNJiU*kAwsQw)8#f|6XY19T z$D}TPd3gQR?Dgx1j~|y0AAWlC@#CBK@4n*KFMj!S{^sHB4_{q=T%*G40~40u_x#oC zKgaLW&woN*W&zfp|G0Yi5%>CYzgoZfKMzlf`V&|i#-f+aTSvXumhP@Z-D}1%$^*eg z9SJV#P*6I#H<*z|(?gku&Eeg_XvWdx>Y1XgcN*+`b~}(oHOl3_>|iUx(>+4)(lrc% zP480cu(_+(Ypf_caIcd`cKZ<66uQi?AtiB}R?F}p6%Y825-;|4SPH>(A`G^(-v&B3 zVgpWu5Qxd^OURecm(Z+=6OOC}&F^(uKmZSAu!q?LN)rY0ga z+Z=V?oo;imeMM0psKrlnKU;6HL;23g2LO};wKG>8SbH*W3?>&2J;}V zvdV5QWy`9%KfkU@KijDgF;L-Ly79@u{(Pc zox5|4x()s%9{%(4B?CciUo2Vp9@2~cgb60M#Uv1`xaZLYL>pynq?&g$v1pLuU+;MW z2BW$(@r@!s2_e{O+K*is1hQrpeVO346_=Ib_{&}NC1m>|Z9z5jx_H(C?fBIY;qz_Z zj3MbCOW}E0DdhL1|0AI2B>qp3j5b}u@uAq4p(p)zc~{LIN^QhZk;{NKfuBIA%MBUg zrx6GO(LI&E^)cFx9)=6#s0njmcGQICnskL)7wnnm(4%&|%xnW#q;g~16PehO13+YqQqz+goo4ZVDO9}KH((XI|Q^YsB(ME zcGXE^F8fPLqRI)d011e#%jGRxD0DxwB^>bf_#v7Q7o}B`mauL@$8_yYkixl)0mwsy zpVU57HegOC^qC5N0hWHag@n&1jeHwP5d-%SP*&0uRdNYfdH zEcnOUw&==qsMyyz`r1uY{n0K8sBJM!p1Tcg>_OVrjWyccR-oQ0UJM>FNg`Vv(OT1& zmWkL(ZdMg5(JQyBMC0Kn#xhvlFDJB<)G{oihPmzlfv}7KQW=O}FEQF~Lx&xKaiwy+ zdFO-QZuUL-Z*By5BU00DMh@)d3*YtpOt|l26^-p+(PweS_!J;zTHzZ1;V)*J&|2|3 zlsb#qDSkhi;^Z^mMDaqd-f2-}Tj3A$b6^HrOOD8s#-@C+7^p;~i2cwY+12V8Z{D5khhA zTf*a42kPR|)dMV&pE;CSu!;-Yk5D_HXhJe>L7^B4Ov|#^cP58|FM1ppcFKxR>_SR4 z&ABe=_TWxdT=>m&A99H3;50E)CKlJT0)Jd16D5&Vv{=y9lu(?RJh`lN)RoBla4m6S zaYVRBdzR-M+NB+&qytGT%k6wx(sw&&f-NBP?gWX(0n{rCPV0E18CFkvWg)&!Cp|%1 zJ5;WdQF|$JQ@x7r*3V_0#Jp;^fq{EsNlmTB-T5U7e8Y@l6*SJg`tA^nXo-%M$N&r9 zo5r6l12jSrwa9<$NhOHG%t?XgFvZjvi;)}j4Yn(ZU9?C!80A+hPzRz{0%urYeKYBf zGD^t3Nl_>vv#0N&`t9uDPt=3*dgk0>kcC~8#ArkVZFZ}ngl0nXW_7TpRfNGa>ki}t zCKdn@6_^b`IJ81W4qbwQ zfs1*EOoUc5a;$stgUGQyb%z+Rb>wA^j!~%M=)^<$%l_f?z>)={82`P!`rc)|)Z#mc zRVXfI>+N@UNb8S+3iOv4i#A;tWzHEcm#|l|>LF5GT70q9tR5Ec8W{S^sM2M2N0ovM z!gZtu>I+KW$n%2#IAvmAJWK}5e`nnAx`iJ9gKlPMs{;=RwNO_L=f|~xH>~*uytT{9dmJ(`~{0PRcP17 z50VwM08`3l1tuI}$nyRYNL@yu3BHm{;)LY6XhG&E+lRyg1|rEL#h6{fOul^qr+O%? z6hT#(kZ?aA?xq)OlVbKajRWVC`MDLd0>e7rAcgPz8gAf7`Jf6{sZpDp=`2)Cm=B8! zO?<;?)2~DyMYbxPG49a@(N-k3tF9t9uPH}^i~?W5FnUzTs$cuQZM-{SXPV!lO4q#0 z1!M>5As#@B6l%tZ%VJ2mv;GsX{^M~tiZQo{pI1rmuGsE)W;#e~VH#EJY+$6Gp@GCJ zgG}=P;pna*LZZ@Y)g$p4&qVQ%*n3xmu)9*xOU<(Sx^I|5?t<6m-{sdT!%?LK2CN|b zWmIHH&smQ)Utk^!lx@_^IS#^McMMCQE2*;?we~Zr<1-$)p30@xR!G+`6DR_Dh$ zK+Oo_CfqbPpCM5x1G-$T=W!Dy#e?(KKyMJ>Egk)1PQAGwPUbtEy7>k;0AB>&{vL&9 zY=AzzU41l86Qr0$%9Q+Zc!Ut%e*jPO$Im~q(l!J$pdFxW9WJW8OdAc>>w<2Wdw_n0 zziw#yjPehN%lS0=%d5BlWVR>#LfTWTKhXKhi#?e5E^kMr-|wIPj*ozI|6fOYd`<~X z!?e+dL^t6XU+uav!UD>TjA;XYweX-3Z;K0rBl@WXCPc!uA(JqIQyiv=(jr^({@5bs z{yL#vYkj}G{!+~NjxOT&s9&c4O+@!{`qLYu4wO6GP9?Kp&48fb>UOyp2QexQb=TTG zkNEF;uHjn#dVtKyHDEsFx(|VZtkP|zbx>I#o4*MMPJ-rZNQ--RWWl+Ox>!}X*I-J zl80Dby@XU+Imi;pw~{QFe|T0It&;*SBrPz=()`ftt9-Lqq*h5*Rr+ROz&2i9mfCqn z8nU%-0GjZxwrfSI3Hk28x{{m1_z5|%bFCfBS%B7M|8b=Zz}jTN%Rxy6UM`aFa~cfI zF;V#`*bLM<_C-l8dLMbrHO?ZUp!)t?9iY9^I7Hkr8%nU>CQH&31r_lUAmvi;H-3c- z4&5s;>YP&gEBaT!0AwB!#GF$ly$5D1S*L5(=%=GUIKfdb@-kuLIDY!{Uq>{0OwfJp zuA2Vnr=$NV(0Blp`6+HJx2O6}`J&DXx5%9Of0@clvtiz6E`j=mX2MoXgF;5ui&!v_ zAzfl)GeIZuCSoeP_`3ttN|8yj3Wnm|YB58dME454hK|h+Phh#KdRVTYa+OZN32S>q z1uomLq*P~Ka>~H|Sn_c#GwJ4{Y%PNN#u!Vt7jdqwSa7KT>RQPR(Yq_dYyP<&fA6P} z2gKT+%TN%6Px0#pB0yd-w~fY5?0j#PD`O*jNbiG$jIEYMi&G-lrN4TC17C z^eS7AV^C(qsKWd+>NaR^vy5$Uda4C(1?JGCbRJ+xAm24CW&_fj$o9RU%(OX0{$zLb zW$iQ~k0lf5S?*sbQ_t@aVp{|+#D=hFyFw2msPp>O|NZ_0Ran}k_-a0cVRqg*(WMrm zp;WX>OCh9Yw;X~$=e0iBgbu`<6g9}8=+W;03InzcC`{3(+fk`4CiG#s*9M5&@&M4b`%?OkY1qx*5DbZ zcWwrW_fIw4_^Ba*+Jy7GMF%Y<8>~X@tW}6*KwWg$&5a4kr-4j~orb3RVev+f@9RMI zRN@hBNX7X*#=COQqc`lVoC|0yEy)?0aP8?=05pVZnh%*5pO;|IQ28iD2Oe!Mf)1TMC? zI?@Wj3-#=J0x=Xhf6M-YXhKS?wb<1G@vTcl89+6&GYBhq2FD7qxu_6!b_%mXq=tr<Be~q1Rk8B=ehnzd-G; z+YL1O%8GytmN#=mek~R+j!s6UCzNY2l5X+d$8XWtFk%R3v)JFJf`a6I4IeA`e!594 zr)P7BhAkF8OybWPJlO%MdmJg4zo3xAxi&%5E;Y%V77N`P(27G-$p|JrO71Vn|K>GI zP7!x~zujDb>$HqkmFmo+ev^7ex*+na*vlI2q@SG#yAvvBBynwQKk2mfU~xv6B^IZ)#Ton- z>_&&_^Qe_+t9fkT0&#M5G~P}@&yhQh{Hk{FY1zS)RoG6KqGwLccoIpmMCTZtO(P#2 zFgzQiyqqe~TeWiMZv61bv7DJxgo*YK^vRmI(@faI zC#X>NXduEmHvfdkC`31w0h@dBQrX|P!hWfMjoavCqQjCRfrz|gM_k{yuq}%ztBLUU zoAh;oi6-n}b5S`yr4wlkaKQ^2q&a5B5aZh{Ql-CtNrpR}^ng0)@Ye16Zg+sXLG&^u z(`!{(eW-4-#p~*LFx)Y+8jh^ADY+8s@%10bNVZj&2RumZFwu(>bmA0+Ju&s=N^@WL z498`922(-ct-m@pN^v3{8dYm@BU~Kjs!u=t{Ndq8n7Ek4$xLGNImZ9kJ!X-BwE z_M{a$Tac#Jyf2{+IvSOq+oPh$8Bmf6Q3Edtl$M4l4$A>LklkOY-33JJAto;Qs0Iti zyUbo5eox^J3vqpWl{gl#{x8)gWJ`Olr3vjyt$>UhP&)e*Lo9^}6yO{*8X~5~IT80lBggS>%^B5~G1A!j$c0yerJ^d^$A znAtty(YzoY`4#L5V>M z$QB1Dh^5HyU;X>T-Ouy4?_d8r#e@-eg?6AZ4^md9-%rC#a#Nl|iO6~S&X2IY*t`*e7?Wk4D59tqs5j~^dCeA@o}>cgv__RtZB4$#yK zG%QpCD<}jkvktIhdJZxvArD6N&7g~gyCng|%suDrlz!Y<+2*bT@>Pn+`oy+Rd&QF% zcmOvZ=NS|Q64ml@N(E($2L`)n=FaBd3ZY|4A?$=Lpx63@)-cVoQ4Z6x$V7H?hTMFC zZ0TBA^t7)3Yhik;X|#A6Z*Ffo2lB;ooK9;WetC;j@_h#y!TY5b-DdyLk;|=;q8xx1@ z#2jdY*6{`B*FdPHy=UAS0=NFm$5Wt-qqM7{6qrGdS67D%DexY3|{Ta&6h4;Zxc4(58q34p%JH zRS*3Mm5$qOHQP+#2$SqKp&ObZbJXhc1=2`!>1wLDv6xTj-NIEm1NGYawHg4;qA37rH4%1%=I@2C7?Ew_v zg9+oTT@U*PMYeBQG2|K;ZuUL1XpX4k9cY)`A>wAIgOdVP&v)j5Z`=}%rKIb{a>@%o zkbwqp_6Cq(vmd3}X*Z;4dw4H@f%_${uAWVx#oxtw^x(9C4w?bBb9?1nS&bw&0N0In zpv=M3T#y(v*0yw%^-Qj^)>ZGCH+MT zU<`=5#wP*ou5L$12qwhnNLXMW9Hrmd(-iPZ4e+x2lJr-BzJY>=>a%4Xh|k#lY6<%g z{;jk+w(pFo-VjsNxz@mNOyv87zYraaIFhfi;s&ITniA~E`N8G6m}fjp7rGzj23Dmw z8U2qx|M`Cy8VKXlxY2s>MN|jFvILbc2N_=JZ~=lcWU^e(8*3Hc8zqee)Ga(3*lWUm zDGX89w$)@az#|dcIlDq-zk*<*!N-jOW#rQ1P6pw!Kfp2!(a}SlEan^%rf=NU?Q>vE zZ2OyUsf$oF7lcaxd_{yf+KeyfB7z)&O53dU=t-0OCZ@N09 zQ`D9>Afw_U-EbexvVrjLbGk%A)v_8{6V~1vYF4fn^VtS0qC~RfF{6xK4)Z-Nv(*M> zBExp3Q?^I|7wG(ciMkoA2eev}FT1nJd#HBPGwNlnVAM;g9qWc#|sf2C$!?fHB?W!c#Wt4RFneCcYZQH zAEW>W-I|)GK=L}ul#9;i7t?AF<&_@KZ&Gngd7UB&NV|$Xa9MWnr1BKN-_})t4P+I+ z+g`#JBP-@W@FHx?DBWV#OJ>0_ULE5ktKJ&~1@(Yw1ax7w;uRq6XX_WL!$!B)bY!~l zvQI)?5AFIvyejg_LvhrAbrU%#<1$tcuYQ=n{|SmPOB|b8U;X^)^M{8YUc7qy`N5c^ zwb(zcs1oov8_knpsQ7k1x!!@L1+q^qUTin0v|ALrRUe(2gGGnDVAe1q9U#8&@&ErO z3;+?sRF0MqgB%CYgHZ=%dKYpRH$^NnL0vHOx7;PFSC7o5hw&(ufDCqT&qQX7inMf{ z++@bXQI7!gfnqR_&4~gPM9wI(T0pjSsybrOYXm9>FULw`1T#OZRF|jbM8V7%%I045 zxzf(M)ti`uGZSb;vMa;!WbQc8=_goc)~c)rlwb3rHv znm_Czq<<|D4SbQw8I7j%lpCByM~9}YY0?9S_9FCx*#mP&7Y*NJA7UctrFA_y{f-@rAL@FQ3j=H5B*1h6TGcM)*j zOGF%?M&5=#U3>9^n<-r&r4719S?}7(+NWMmpxb`1qx}#(T_ePg73YhCTI&-X=^!dn zz_Xl#^*e)LzD44q;y1fQ2w_xnHZAvZt{naAJ5?f+W+j>=oI*__2#*rC%o1A&$A*6j z+Zq@6I(CWN5mEEJ_U?3u`PtbaCS+%a6Q8l29mYqPyCjrhX|G1pyQJJ7mu=!SS5mI2 zhCOmqj1GJ6t(orY#L#8Po5Cd#)!JoJcWXhlmSWap!A!@7qr(I$htHTmWxpm+ zL9#Sz6be_ihNyByh0z(@H#OuQW7c%hl!TrY)cDl2bKs|4LD#_4yQ=*0Ydqj3Vr`m* z0VDvIu~f`Z=}@5B$0@vo3GVO^c~~GDqsA7U@UCB+)8Y@|2kg9#YBWVfP0d%tW4bk4 zIcf#SYNI4FwlIAZsWDD~a_C23wk6c(V%GV+hK&#rT)Wxc)FI}UX?*1K8rvW;@LRPv zfz;Ootnv1n+13W;C#0j?q`;$8F&h9WdrYfB}d9vBAU5>;C z_h-+cpbXP;^6T2AS-!*_u30vDe|zxh&)fO;V27cO0W)y`)UM0SFcyB%myRwqnNm)B z9xz>~tsdB=OXbgDvCcuGZ-VNUP;F&axccCeD!>VBmj%I-k02)2odiV76qs>}M8C!x z7%8W1w-_e^M~AmfP~F_(~Z zWR8<>*PdC}#Vf>5ki^u{owrCqow9wgALEZsK;+UX^eSq0TqnXD;Ju*~0y3TNy?#1+ z9cDZ@vab-)5>=ycq244?Zb3mM)&q%t>Dv0F;}#a%isZ^6)oj2l3C4cA`fk3QjQnDA zy@)BdgQW}t2g+87W26HLSs5WCrqED1yt;rQG-g6{WoWhl(5br7|C^UJCAO)w|7o_y z%7_b*n^E%AoUup@n1T{2R2!&7GaLD1hHjjxz7Emxg4g8SGQg`*E;?%O!?CceE3>&< z-No)PPC#{=P7zDk{=LA>BoX%SapP=RMO9HSfSUOFjMow)CG)5SlC z2&8J?8-oTxI0r&8OwP*U9%r}rH|CL9qr3cU)pJcd;k?4Ng-p}PEG?@$M3SGm>ajLx zQwoRQ0zLBoR%M#XEKh+dG!*VM7#2M>MFxwHjW_y{`HomE*{##8bU~O6IypwIJ}@zq z?>lWiWgG@xl+^>a6`CDvHmrVHN8afstZwMq_^7KoL+Db=@Eo9gE4Ttv5pZgpW596= zJr|1WaD?!0+adTD4;<#@VnN)ZTvUPWmR+1};A{ql*%#SGvEe>iXg>%`IFnFRna`?o z<=6$Yp)R^t!6w%*1YNVRi#~5mt(;D~rB>)tvj(Jx5c4D#b&%WUT6@Dsz?+#Tjeo&^ zS7~g2pTrMSe|if`H#8Be?`7G#f9n-!m9lugdSd=@O6I%ikR0o9UB+n@#5-tLHQ zAgKDUBCDorN~7(40o*TQWwgM7aCi4A=>DqiRqXv$-9uZ@e9P{^RGIl#J^k>ved^I~ z>wf&(x>s@jSB?GIZ+rUqw=U~%T-Wh$T-fn%T-ot&T-q`9Mz4PO;e#JD8m?ZPAxhcO zBDiXOpxjosqa&!WYHgW|%Ge78<01^|9HuP~U6S~mGiMocM3&Pkrn+07o&8o&0^^B; z{~P2aa;oNlBjW}=w&y?nu=o0>AH-$z@4x(u;l!t-f0cSGaQ8cwqS{{Z7U#O~>i?O$ zcy+2yA9o3a^top;MpEK>ix}E}2oj`v%wBTj)aA<_Z(uN;4=|iESDAZuY|+cwF^``<6ih&8Oql8a`W!o)pZl1X#+d1 z`VEOxY-Rt0q*LjE^|gFA!X>-H z7G=(yPikO#fZ6#Jz|hGb$1^?J4VF9xUoP`vlidi6l?+VjEl{h`gTo#}A0hF>3()oj z6c$JZw?|hDljlRc!CQ^#Qph*Iphk>9 z%%ost2~ot;BY1>tFPJVk{ZJZ10JP;1A1IhCR%;jb}!q{6KOWVia>s6$F`2~*E*iy*JYvH%+ zJ7nD8IXlqz!_%2r$WcfXnQV|-#HXO!9D7?CV#ltr&B@5xsxXvY`dOnwh_y)@?xWGW zvIR?bu`Piy^tRxl{k-~xwF#G>KG>kbHR`ZPA@Y<`8m^?-o6o0h2m^`(VL;UK6zhb^ ze2|2FSrf>{#dWS2_B>n-DabhX)lr0PUdt1_|ci|eC>yj5YCEqlD>ScAGQN}Tyi|@f-B|eOy6#|QdS*k^}`qNZlzWeYp zlpV;<(4%G~9bgi2C?lQs4@@1bXIx3DtH{BkTV3vVoO5|I+WT4-zk-3j9wDc0!4dFZ ze`y#(zc750$85ADG1m(uc{)4WUae2%5tpvrTMQ~V_wBkvn#8WZ7usT@6^-9Oj6;Fh zPK!`Sq-82U?J=aSjCH!c87P1o0AGflf;X)~4;E(}$LG88v7IK*;jS=m39j<$g;V4m z2SYsKbd+Sb!s;#r=+Y@Jbazot9dC9|A>xguC+cyYnL0uqaq&%YEJ7-P_IZ& zgGfgf4VQfxvc4|LqWbJ1m6OkG_$k$ywKPvUjkC3gpQoDS7vn#=`U($0fhXOVX-K3L z8SMgS0Ax@i7^pZ(g)XTD`r7gY?bN6Afy5v-X2kz-PnQe5UrI?vA){{rJTs^hm2fpr zFER#aG+*(w^Q8$-2dAprKp^RMK*b^QdtDg=JdtdMO)%KL-X7`(?)+~+#A+gJp7yH! z_8P!RZi}kGB>1+~?v~Jg%Z(i#IXOIJ0IVgT!ksR5(9(JJ49qrde@DZ-yea$>L+_G9 zho8^g$kacfVu4GCoLaZ?nT-oA3m5iwJ-M#>S@4kK-s@GL?9BS5C*%_s5mz`yznk_J~|mGpIFYF99PGW z@VpD|WJLiG85H1MrRk60WjE1U7*`0foFGR${<=;Y7umHeTLYPL>OpZ2*%<04$wG45 z%M+H|KMw@Awn~m0&bEqkwgLl=| zBfi_7+3$MXcao~aclx~0Mf zJ877Yd>Ep@~z8Ouhk=xJgn6 zKgP^h$X!|-{CszIfcjMDWv=gDLKpWuxEa6HXYv@SwA=D}#>Aeu4aQ@h<04+WWj9OQ z)}-$j(!0FDvickmBiglIz}Z$%(KVJ%PiHz(d^RK;FWBn7C~E5{8;|C+2Mf<7bI!r2 z*P?f&$wV@hN2Xd(%@Aje=?LyDqR(B+YO6Y#XXn`+Qr}s$OEFCCf&g)aKlKt0oi?jP zXsz4u$WNj=`=ruL+pl>X?m?m*cup|13iUH~+J*cEV&727i_28F#s)2->B-4`8@N+!YhTH3i0cZVd%St(AhYb5r(O0f5R)(3Pur!jIpyc@Uv~vq*?P`M)*-+Lr zm_879$X9FE9ep6~;5R|bnuUS%k^!i&4WpS)H{FObVw-@ZP0gv}E;9X4cQbpPAkKkj zS*zO^ckaxw1~uMq&dX-^JSO9bNTS@*`u2QoB+@U0c}!U^#++!2ga;J4#G5m=jPz`f zi?ne1U$rN_tEN!IEp+{!3ttu88i#n#pN~w}p4Eet7|2H+ww}(y5Iy;>-RnI7#U6l4&|Y#=k}^7-{AB1f z4%-yFpo$DHVdL)l-4~Q-z>3KxjovuTJf@_DiL^&>1Dqns-YP>LC=sdiivz4JS?=?t zC^HmnQa7Gh91lFLvc1ef8VFux9N+DHZi;;If4tI(`eliY%B*(i&59hZ61TdGY}*^# zLYJMjd493Jy8<3TC`wJ)BlMmL05D6L6X{Tq82Oe;n_1 zLrHnLYM8Vym&mKVU{#lS29Z7)8@knOiy#vbwu(C0~+N7mPWyO19TCcrsf#+ry~| z3M6(fK#(yKOJ*hvh5;&S)9_hb>4Q}bZC6$&OmhQz;t}3p@0M_Zfb+}5{5pgqt$?Km zh7xI(0+tIMTC45k{-l|e}{pIKpgJa}+F zU3;^0Iuh|;q*}-)% zd-LOu4c-g5m6xzQM<&MQE4*m-K0ED(oEgF0oUNVHYa@6 z24;WZfKc$)f|)W)c^BPI5{xK-&C7+yr%w3$a`6Nus4up&w?DpLKfHY~#1AzeGMU2} zi;%15x3DF9f)|4X`^f1>_zKKcA z`R?b>pSEYOKD|P2slPmY_-K*x04;tQ0OH_bqUS}o#;oRJBiIrju_+=~zo*jHIUgaN zWCCe)LxjoFVI#GuSZ9l_x}UvROzbpINU+2Z&7qpOZ+#e2dwqV2gM~1gx36B`f_0k| z3Q=8Ms9R{eY7=sGb-AX`fN_-FBdCPS`z=rpcjWOL+~^Jc=8hN4an7N1qJ|v*g|yUx zK52ptSpw`u9zbl29FbT%X&|=sm7#cn)S(Mk3)BW3sx+kvw~t`^)E;w22Mp-?ixgPH z9JuZQRBxh#sH%kqU+p?uhM2vM6*LxRhYq zSl!26bw=a;F~|eZGJ^-q0D!4~UeturC(16M=z;`uzZc+slxOq(-*ON0)%VLs8Q&Q= zmmXtm3}N2*^2QqNO?Bq5XEX&jx8VJVezg`8rg(y9%Y1nUb0TY3zq%YsyiW9 zh&8sF%1!Wdj49a%uLwREJ~kLCL@-PJ!HkS7`^rh69` z8-V7ddQ#yyK8L5glVIm(2Ee+FA*DF~iY!gcy{_%}`>Twu;5*3?1j_7?91qaLq@Z|B zo5@^{hY0o7#3a15{ee(; z&ec!v-~B(#eQ9$WSC*xI3dSAbpj=i30dUjwv?oX`BrK4Gu!wSfLC_X$D_WL366JPv zSNCt9bI!f@Etv^QuI}j=g)Jf9eVO_4Eq7nuq0%q%=4NJZ!t{7A5H;rckhBtQp0L@? z*FkbKtv{Z&z8*H!ZG?1XtGAQ5eKxyFA!h#85|VZyG&PtjWKChLo-EB(i%z25cnmB^ zGkICS)Em^x1u%xG@dgk`-+cc1He7?y;lS?rb^^P0 zsDH!T2=wow|9#^bV$w(!1+(wQ9)n}2*`u%p3y-O0tG>+h{AWL-0$(c4e}(`Na&7QE z*GLmsUg${}OeCBgZFe|Uf`G$eg0gY(-g^B-=U94xFLqF;_NJ3=HZ(k`o-hZ_*uCs& zWBB{>6n+S$f@yN;##0L*q>@jPIi~dtnXES0L3F&6l9C=mU(rT!-HYPXy{{e{X~rz! zD1ibq75hK+jEjd3I1Dj%(I+jtxF$0#<6Lt@ zR1bZ!SX&sQ`5ZXiW!d?nZS!@>84!D`MTJA28f{Oc-hpeg;bE5_1X5oGLBgvGa_t=Q zL>eF1e-;?xB=bn{)Zy%JR^LG!Y&Mwz>FRWjRoSeHTy2K+iMKQgsHFMF6e|$2k@dx~ zzHg{9!BZz(h@A^{NoSz?uoJN-kiHEjqZHn9M7=q+7(*B-UB!V;Jw?k>2w<*DM7g$4 zNI>*R8eQlVp?XKtN@Qz*d<0iWRHQNxz4Yr5O&};u$83}oe70xbtwY4=0wpsRbSw~C z!*r!99dUkGjzQRunrTV7#(BqDih~W$Cm0&^`SNkC6sg0;yf%RPu9$0V(p}3SkUBRh z6w--2sIw4#N}cR|$xekNu79D4M8=YRJm&%9X;)u8&X9*tJ+SoTdX#h?CN(u0wR1GV z35(Z)rSR+_h${v7Gt z>;QCP=)@6~l1&3cdkl^unIS2;Sj%QPi2COdSsnlG`=Lr zu5MN;xMPdVjZL?zz-}AFuDWB8Y6qI1wOE}8`5*w(YZ4 zu!NG;K(j3Wv<=DPrsG^i<$!>L6^%qRMSdASNioUhs|H0C^J4W+4v>4ke{u+qbvtkD zh8beu=?MD5-L$h4E=5Gx0U+UWk!{)#r@*JK;X=4m3Tp#}6;pETBJ`Ld-KCcyX)}>6 zSi#DH=BJd8mC>o;fGak-vyS4>j85T)i_hU|P!32%p~=c@R^ShFSSr#6mY0m{@4kzf zI8(fPzW;$6Fv)-PhRGkh0hS|t9C<{N5#M(dF_NCCZqs&mRqt{<8xNtI9FIy{E`o=2 zx{TNEALtHJn6OqJi3v$pf*Y@Q4R0q)o0T2RN)12>7e3HtHmRao@m^-|v70+OI6IdD zM-2fGRV8+)ZE%e9c0AHaD!6I}JCzFf2FS+>>q#T9tQcn-sG*2Tz)7c+FX*~hE-+n$^Og!V%VQQOFzP)fVxK7(;X2r zP{^=t0Py)H?Rh`oV^<ch~m-Yrc?{b5!iE@=iT7-bZS1O1=c)J zPJ^*V(klWxKo<41Sdav>&Mq>;xgPn`hEg<9Q1)w`z`R$0dq>0j*F*6gpBb!Lsf!A?d?MY>*13tlcamPu{ znAcr!-()^D3n}SER`(+(n@@pp1B@o2vS$}s#tH4{@Cdfq(e0ZbKEAo7^AKKlezlQB zc4!0&FBJKvo3pfF#k|}8VrmR|3m4wN<~>ZDA>jb%5OTvo5-ND11?B01CKv)1O4@{8 z*scWEri|QVo}`g?IcJkr zcKfrtq`4ESn+~~1U<8FJ>8gVr)WbD5l3aJBA zxO1btd*Hl+7#k%v651!HAx|Qbf6w8Uk5$W%_CPOf{SojNjDjZ5NJ1&iEc~X_!E4xw_uIMC^d` z96XGhM=yW8dw+5J=Eu>mZ|;Fk-h6-i11)~8=$;0fft3{s_bi)3<6GmZIPr>u&BFD5 z#p@YTXm!!2R2vlW3-qJLzDg01o=2(k5gjfa4K)j-IK743&KT!>d}j2sAnuArq=P>6 ztM0HExP?2Kfrr0uJxS8+Ey}gMy?tY~bLX$$-We5cX+oG_qjSgrBs5Kd*6g_R%uvq}9@dV_Y zQ89ht2r2AEiWgYgbxM-fK+Jae#FPu|Cv6{bMARPCqrt zikvtI-q5*1=MgvxJgf-?*~a-C)ci?tOB;wgxE&o^W`A{-^P^=35s`Zaw9@ULF6PH? z#Ln2{+E)0f58{+dszPjY%#F`#1=75TBR~olmYrG*>f#7Zm~O}{8cztw?|)IOzn=DY zM1nx-L-fc)ksvl=$5f>^Dw^Q4Ev^d70I!-TI&XcSe1qe)yj*Gp5dZgo5nz2uH3ab`BjEJ^EAe^Ou?)}3*^yYH~P2i*G)(F4+S`wneW`^0j z$hcdUAZbt&<4#UTq{QnfjZl*%uECTbpYK}8YYIaH3_-$O{#%0+=ZFj#?V=~31YupY zK&+GEToi}_Z-Z4Y9~m-U;qkyNrCNscjq@MSoRwg@rkXFrYJUS#9{B@ zZthp{IlblB8!vz8vDWdAJ~Hw)x^A!g!(bx3R8@E`T2$DJ&~A#m&f&Mf+7_5<13-uR z-(DJ}Esj3@q%``}iG~v)Vq+C-kOO&-OnYJ6pco8~B4H?*IGxg@P=(sJ zq4|&{VO2Q*_zsCnl$wohr*@qm;|2QAm=vr*T&hQ*@(V7mvbh7ZVi|env6MV7TXU*r zWDk|pY-5xr&Q0zV{uoJb+}+DiG*kzspk0s85YC{;Gv;J#HDYn#DA8V%;tuN3xhZ6R+T=PT0UC0lu;4YYm5kYv4mqPt@@UdWY zX}K$fGoC9MdvCy@Ae@0NC-0%!}EVJ~{P<9su8<1=4Yh{%+0zf(!L| znc-0r8SG}K0+Wf@I5$qNmI!V~#yd?G1%WozE-_ylnqEj5d6<~&nyu%69B%!AKp8a0 zuwoH@T+nNk?uT}yih1qjo!NrLu0`zCHP8?RrfV=0An55DL|uvGZa;judw;+E_4fVk zFMB}5nB?eFcZX2;`bTgD^)tTtriX;4G~)Cg_x`QO=CDKtE~Ug%isg7Dd5JHvH@&3K z6c7FP-rXC-S#{kzXx^*t|L*xY%w-&*TyXLkvB&@-=!gVlr!hsNye#StnrIy}sxv~A z;Sw7+H2^ndKESs4%D~GVFMTmww-6pwUmD_}68{GIVKA5;re7i96IlKc6oM3qcAmme z&>0)alchs7b)@wfE2 zC&t-E`rZnn7sgC2#^W?=`0cnFEM;5WRqX3dcStf4QmJgo9Cbn z45Kuh#j#1J@UUypoQg&_=#S5^IouYJAjXkVxCcjee1c*u$4|}e(~8t^?{Q&6A!~k= zu3#zw2N{CY- zc~Hy0vzSeiVX&9-VlezNGlAHR|A{o0RBZgQ6ew}WLuxN7VJrvP1++>jGmEsM;9bed;ApIc@fmSx0 z$D&c6Ux^wZA7mLjRuL)@OZpgHYy-Kvma(M+B-*PkZFc8#Y)E*7pS`}n`uNND2(#xK z;ne2M$x%t==V36zRKPhLUu#);-u;45sH%oDC)#4AbfmB(8|)1!Ldi4mLa*lhOkcl& z$xIO*nxg4!4kT_NAFM++#QXMsXD*<85kzTm1J{=W?DUc4cJK(aqfQ#kKs8CIF0*=^ zcDTjV}*j%oi-x#(b3S?nSQ^=7HTJ=k6Z&Hcq!X z1;e!uYup;XMDTRS6W~-!!CkzIgxl%by#rm;JxG!orZ()dl!siYZWTvM6jcE)vjE-8uB8IO=P*hi9mJw2 znC{cMQuaM{?OLc-rGpa<*##Kw0*rS7!t=BB4rIQNqPqn+-vzh;G1n(Xz=!)$r%N3H z^&oOH6t|2jj7;ML-#=&6gVt z5h$j?!#cIBq%yP^Ku;2)#o0H6TSU-W13YD5=kVe{@V0<*<9cTTM7~^xb~i&I66A`( z6^$=yLN$(RU-=BUze)vCXYJvrB5@+VJ87AuPP3fMIEptLw`p;c!c%K~aS3mzmjxpR zOcXAE9Z>NGITWbQy_6j0O06S=HKlxQtRgjs0n#@J0WL71RKsE;fUCv;W%8vX$JOcC zoXTqC;~dYWp{8J(uAY1|d;0;7H9y=v`34qkY8>*)3M1Mn9bO|KG>$ATv`LL$hmt{F z@qMaL`~A?N;#(NpW-JayJc7eDRODJ)P9o=?cEN9f!RYiZ0E&jk9`WpR1M11ePOm$WMf#L>K?mjq;L#!ClSfAXQ{1`->-7wq@pi8TOCN+V%7$ z-q@l3yb;IP$Qx|V;F4vr?n4A)=D_PSLh{z1LR$%KCC3|lM{T-$y1MJVN9aVt<6NF zI5OHVm{~@O^ej6(exZyP(sV@#@T}=UK*ox%P0F9B_u9s?d6Pdv?r0SUcPEJa=W$uT9q~_m_q6AOR2D$Xa51&?r3o7B^%2 zoXx+ZP2;;~=-eeE#}Bm{cw`q&ToQP^1*NitW^}7yt?J62FQ`8Hm`! z`F6l560h+H9OdO~2E91W6w^BO+;CMjip-|qz8=S!uC#l8{ppwO`@7p$+wcE+f49d1 zrywX_?fvi$d|t0g(umv(1~-9(>2HKf3g(^H=11K?y0&dy(li~iHZpMtQgiMb-2Hu_ z8@4lpoyo6Lng`nlJlDEWmUIvqUGTLsqwnv3v{VP2c`W7R{rh*8?k_I%XiPtfodD-b zMS&|rzt|Iona&W)b=702C!Oi|3UZ$O7xAe`>S7+@o@bM&!VG*HLq2BmpwSb2Rs8nx3#fKbsnCN3ex4DB-__AUH!?FZ(wLtp2izLf`m7-?^H@A} zq^1{^V{#8cl#CSy*FlaexK7Zn+(Vk1R)>1x%+nv*({W53xB}`GigW^Abc-&6k$=gF z!p=_mN}g7d6r7t~=?er>XKmJqV~SW@j71vV{7rbK*-l&*`cEm$`LI8zF;BNVq%t>r zvqhqm*T!#pikWTIm_+n@9_Q4$RbF z-~%HPCd%V*Es%kEIH307kr;+l3Ua8e;r8Vkq@@e?!dN~jBalfBdx+;8A2}KgV06Q@n~AQ6{Qw% zNdlu)0xnln$E99nt2)H@;Or)~oy8{MOA)WoDf=`*IKmtiG=F7OT5)VUpt#2#v+JG? zs2F0jPwmbZ{$jFQ8(4@TMXYYj}d{RxkeTcu_nCnsW@t zi&w8u96U!>LSMV~>_(3GeFrhiCKenjjod?2)KB5!QBREIa{?=2i(;6%x+DO=&qt95>?7T;o4lolRxQA{E4M z%{4g3K}54*YjlOP9pXWJ43QLG1T*)Gr94rAknl6`GZ60c!9i5KG2aiz&kibf4dQu0 zjC0su@-MQT6JT3MVu@4ch9T}?>|<$J5DuxJy2;cK&=W|3_*4qSr>;OWA58LIN*jyM znA{-D1ovTDxzh^v3I*hbZm?lkpA;0ty(tz&caa&QOd6%gxeB&J3xTx)YLHMNE~$rK zj2F~HBQgO5Z+L);b)ZVD-5T37kITK0K!1vq0BOMPxYR$gD|SE0}J+_h9|hwsnJ7P6Q6H?G9H^*L!IKzeLS}2O z0TlBKq=~wgnB^GC+hppA(Sf*2)9Mlsq@RfQ42bmvg2qlnS+LPFXzn#z#E4u_s?;Q# zi@&G-NZ@{U>m6S#`vWYU5Lv-Nhfbfu8gW6mH-- zzwmPlGSDJ@r6#Ej)pFFVTwRE^3DXUvxn6-|P*>ogfm+H1$a*>1n| z9_3va6cGCc^qYbi98wa3WGCvZc5q7n zBpw>xLn0o&Njrx}R+X;CIqg7vQu;Oy*(d{j?3rpqv>`4u+JZJ^qII}~XrVpWQk8o; z>|{$Fq?dE}GNMb9ykGuKy!H?uVSJtisv|Y3=v(R7fPf0w4pBa1*YP(&sDg%j5#)m# zO00vCp2DC}y4E4&VDfT7-f;g!>1k=!D~f2>vJf4v8y)nCnnC8sL%uF&Y01zk)t~KV z8ySdTRo~IY)=KFUbpm0{?5f}>)DP7qxMyUeM280TPc?8g=k|im+HX=^fezYUisyagU}` zXwM7Z+L@!4sZs=c?g-bZ8HQ47991ltU0DGysJJLv^>wv=2^KT?P^2*WvaxckSoRUI zjl0S0oTuCFyHBTs52$nwMTcVh68MY;BT)s5)A`MwX6d_?^*vid# zQ}a?KAiW?*vD6mCAV&}o5yb*DMLb|Wenjny34FloOO1$_*=kL^`vt{fly#`g8X^q~ zJ3z%U>h4l<6K+y4)&juM3%$`hh}9azI5eS6w}|x>eS1`p$%+Mj%iIf+UWP8 z1YSy{nQ<`3%2*Z{mqKsk!7k3YWw>S<&d*?!EfOn~Q+enu7)B1c3KqoY+Z7~n?ALSf z+GMp`%^;u%KmwVVUWstoPfb|t*3lwTe~@2I_*XfF>U6uImxcOW@;9*r^+Txmu|x@W zJACH87WN2m+t43SZrojRBb7wiG0fUk{h}C^u&$Xs1&AoY5 zuSCKcHbN?1f*0@<617X-#t5^wQm(5_^JNQEV&%S9Rdb0?Drqrw7qEC(oFGmcMw2m? z1gk&D$MT+%j}0~%M0?zkNnb3qVA`MD?WP029t|xb(yUF`dkdn*-ISpdF4+dN>B--E z#OV3b_XAX*!vVbDU_~*uaPLWfe?WzR5q{87q^UPtB;BnSJ0sy2EDs%66v?ezgz{?l zMSzVcvb%$0UQMqO4#|7*Lr!w}0!L9Dak$!$Ar3^^b>|puW>m?-Bp}p(7u$YB zaLKVuJArne0__)wumLG{4b~70c5zoJDq?ReD@lj7S#UagQ^ZH0tA*nuNdhKc$vLADdxsCsnOc`;f`?aXAkP8vI1>8ngghDH7M z1A;2HtGoa65h0+jZ{MVH_H?cgL&ittZWUbLnUbGO^zM2SLf}|AL5EKhXgB}2?0h4fT_u0?+Gvoq;LEYsqZL)JqfZHIBej$+0Vrq`LV!S> z$P6Un6c>!l{T*-RAEey{uS1^c940>emARL|JmR!rg90l-P9o{t8U`zJOqG*SX%%S! zHPSBW24cMY+&Ia6rK3%jPkh^qsW@my@}H(5dZ&O`9#j2DKwq&*1*P~*Nnn;^<%w1jIP z?2s_}vJ{6kw3E!W>v|WgD#EZ>8A56U`z`j5%WSHG5O0(~qF;@z0n*4;fBmq2{lh;q zN@qLTkhM)wSH{L;D+IaA+17x&Y_S~K`O1|Yfb1yzLyiMSTxqBZ1i7O}ssb=ZVguEj zrzMUTTDNxHM{0L001{z0cr%Kf%ovNb?H!R_B~i2-vL@;jBWQxcaETh(c1p6+Slq?w zd`f3Vn0Ti2kC*HU9bMH(PiW$3SZ#1T@wc7M^b^F&!JJuEJjip@8ekWgUpTw0D)JVe z)CAdXj({BZ86>{pMwU%+ad}GnYU5gSoh9KL1otuIjR$RYV@`7X48?D(N3{9PBh$b8 z>>EiAVbjITVx*mLWpNI16YL?+J^njJ71Phs(d z+=heCq;o_JdxR9qy~-d3d^9lp*WE+M29N!e37bcfIA2eR*?-1KEl^$qsAog>)K#*w zn72;&qs2&M7ekvs$z&cM*2HPa>L<^sXXV}JR4@l=9`{U7)dA8R3+o&b1La?uPjX3c zQY04HM1FHw9EXGBqZ7#+VCa9oef#$A4Lz|afB0n?Qiv$IA0w77SpqyfzJ4kq~O-1DHad){?JKy7{SzAcBd&kqnCm9;7f@t&zMZ zlQR!ul#!(mN3z_Ip79jSre{6njkG(^&11cV%PF*eFi)6G6D0M!R#~R59-28|VMcFH z5xk99v?6w!@!J~>8zMP;1Fn};SY-3orz@E04vWnw&EqO;n*8Cy@v9Nck&`uqGDY<06;OXw3#CY-038TK{L)W}vsQMWcU3q=aW0(rYcSxCf0)tBj2 znsd++;#v4$m&?Yo(nQ1*Z;Kw9b^(&xwwcxn{L=#aTJej_!J_n?FZO762Qf1;=Z=dV z1SdEcG_OtfjAz{5-@kwT{m1(|An(22-rIMt-@ZW(;m2S!!Und$sShWG+6IQH4G+me z-BwJBjL@(E3FhtN+8hni|w9YU}o5DbgLis1Hni9NMIonACC$gU-E zqK-I@9kl@1Z|lq9VBY^7Hj7d!#i`i|Gl>;AXFy%!1O4!xKD9vb4Et2S0sEaGlhi}c zTaK_1Q}r0|89aaeDZT=P#jTc%;5;TpDgGewEs+L-B!qK2q}&8^>=$)d|K*3DZ{M>D zD^{PrgK(HD;)(spVt1rKqof?j`oS)6W>_axCdrlZNCj~`Mp_dnAgGy53iCbc%be(| zCb4Z`^T7^7gjAAbEsW!aYU#6c>X-`Y>mYpcUU6;ZKlbi_`StzXPuQZ$H^)rdARm@y z8&q(|O%H_$Y|mDR&0nKB6r?Hg7xH>Jzq>#E;r{h+cRhE5Ne#87b13CB*q$PCL*?7G zAyS?g4Q*l0L#PD+QcMD+O0T(jSf548X|56`^8$ zKv{`yoeD{`hmJpFU+YfiN^VGq4uowiW0-kfcqy6cQcGQOIeo((J!XOvm zo7ot8KsXD)qnu|2N5MX-T9V| zUZ2Ez5OZ2rYVELjb(^qtzqpL;Ak^^ zv^cUB*l`k84#w(k)}RFoK4XGH%C*4h3wFjvcxThaQX#@=3yPS6EXS<>Ppq~fPP zY{kg6ASYMwO~yv^K65hCp2%;(@uCn;%}RD=_1p!aq$b@>!q&bCTN1qNx0o*|yj<8S z#GvEOBzqK{yc)FjCvZ9F-CrV)40otlVc^>9vpEEimb1TWIs&T6qv(up4{L;E+$pu)9mUvVkL->y=Tf*wT3fC- zc6;HEG96v`dj=|rV)V#UFoD@C#nigh*%Qng)2U>p!Z;(-vXOTNiNJ~;e3YB5MuJ?z z(6g++Lv57VbPWvLQ!{o1oZlb2XZB*Oyk_wa547#gY~C?U0V>WpZZ_+@C0xOQDDd1k zk3b=****r_0Ib>e0-Qpz@unS>7-HXJFzNxjS$NT9h{}TCaNn>@jCZ<(t(fls>$U=|J?-=+G>uT|OQOOm(=DRH2Ngiw z0F1sscB}WV@Bivc8fB8;3dt2S4~g6eyt5e>nHrn|Hi~&vhN~T2^#0!wnzZ$>SYHNj z64(wpICja?hYF@SEVA)LjuK*VxXa%VKTzS%JYjGHLS`;{E`-ZMnSY|k4qhS4D;=qC z*{6ZL&!9&{ZNeH^TcdWS4HhU`gFRwCmE#=3>sDkQ-PqWO8t2J1{G?Q28iL1r6*UEj zjieV_kBZvX%#I_>b;acMOUB2qkjeM%6ru83yN>ql$@f@6PLnbyLOokBZ8%QJQs4Hx zPav%f(W`mk$p&gaH4QRgrnsm9;@4$BjWDW#Id;=Z;ELkmv8hGW&oWY1`=@NzyYT_5 zYwVgAv(*flpn8LSq*$k7(QzC_>f#bSrXf0*Jr@Yl&?MV$4Y-_ia91^})Bx)JYAa0< zUH4RQ-9|HXPUT&{riQ6Im8h6j{O4V1igUIzfz%V6AC&i?(d+R9SEbMTN;ob*{moe5L0L)lpdCO~bG z9j&}zZ?Dy&!KP1v#=MRQz@>V0s^y#6dOAC$xe5dSU|Ly5`R)Rw?n27V9Q8`0)+<2C zbR>wgW{VeNLqC>WCy-D@4_$9#{S4w&VU#3CjK;T!SAdhOmDsHqKw+Y6A#fT?7PbKq znZ+>zw)bc?L@Z;;U%V8hEsS?)_u-RTFe{Z5b2vAX6^uj(7TeKYOXZ%3qF2dBk(~nD z*))1AhP%4?wzXMEcW@vSru@_E``b5`I1?VVZ-0FKlTe$1tzrDS=p>vyS%mGK_8E!^ zZp^c@Pyn^a)CG8oOjFgu-Lups!&({{GJ(nM zdm;0#5PM8MwjnZDS6=$X%634F9fd>q2&xDTi$ayyhLoQwNq~*GY77nj&)}r#|6Jm_ zr-5~xD%UV|N8XT|`3$kA@c5z8jiNv5S*1wvk(_?8s~eB%>Y)cp_=1@N9vDbFGqSyz zuXX(G)KQ&-Lk9;Lv#U@7%mfxIgw!b!5H`q(aUcr>N7mjI1yG~0y#gK&>bbzcwkt}A z&4io_4#URXp#Y?ZK?{z>#y;+l-HP?@?$B7>y250=^82>7L~cUs1FLJtL*YwXfovgk zAjruiH@KWL7Dq)8_2f~VuYoF7_wPUca6fzd`hNQU-7lxFZhyVMdj%KxUr^w*IJfMJ zbN%VwW@llHKk{S5BKv@yPZ3C?;1|;`dkhgg)~eX(38c<;0=a`A;+!)u{szI&(k0L% zz*H}E`=Lt^Y2$3QG96X}bPIR04?*d@(sc+SVv;UzFWLW$4lBeDQ)G_05S z5wjOFZR~2#+S**%?K z#*)W4Dwu{)@A91J)G(S6Vhln1LKCW0p>%4;7d2*E8BDrJ`qNHAFZ9^(#NP+Ue*ouU zO41A%z#qI#-&{l_Dhqtg{B?HGM-pNw(4nY;cO`uM^!!67Pi?Sno2@V5$4w`{Rr++~ zoDpwF4rjm|#Yp%iX0dD#iq+yu5rNWCy5PJ(0f6s1{^&X~C4mB0U;)zlW`1x&!XWA# zd|`6srI}pQ?tvcKxN+M`NcW3Ac?X4ZN`#=@tijr1g1hBn!Y8Gk*(Nl04zT|oH&8J= zTw44^sajKVa;ZIyIr}446rC%#hu9hO`iaPsxXXz0&^-^?P$(-*XV6&E-)+7+OOaXl zt#lZCeC=R5e1q9QyCRB$U{$4~`tQyx8 zQG;lRu!@z>S4FT|=q@jSm`Ls4g*C;Y*fD>gdE_NBVe=tWgI%q!gR)IW!Ps4)CAj6mqwa7*(v4B@3# zWWbZKEX}#Gyvl;P*dP-0#VO00+A1PSUkA8>u&`Qi*zX(RvrfFQ<*adciNezP4M(QQB>J2`w zzyMIIU98|c3obH^(Oy-&iO-<^?E;&&t1HIJ=TY?)77ez1R>toy|Ec#MVd237`lFn< zJP@9*q7pD|hjBxPFBlC=L3Lsrv9rTXm@re;Yy|6(#)!%Y`B1-aO=SjvUz~$^bP2)tOGv(lD5UapgG~ctkX)@Z3+l zi7AV9XHritmQZLp&k#8-LE3VvB6ZML>7h+k(9YWSTNZuf2IgXRX7>gFd4X04@}a&G z)5EOat<>K3DJzI0h-1uZE+-6Hd1B|;w5oR>hvy7gbvJM%0v9-eofF@V<^Mw&6ggeY zMr_+^>v_eFi;p9&8PHJ3r~&GUCQFpN_VeyD0FiI<_V)WXch>pc+k3?7EbsXD>vwM- zQ5ywhOOIt&3bO^sWl4>tLtKXlA(mtT6H>E!w!bn|Yo_^0npgyJ)D7?=9~$2w3YW5i zxzv$nm%boWkdV!~Lf#J)dP8KBa@ip35b+#XYG@oL=IMm}Nsp@)=rN6#bZ3Mc;~tXM ze)0Z`9{v?ZJwwJ*R4?#<@O+aQIpH4YjR<%DM%Vk+Fb!$DeMwEaYr@NX>XKFmEfmc2 z4@_ttJCf9@l8h$1*}eQtZwY)~_`~e*o65d2whYRwr)sQSi)!5Kby=EGGG8Oh;Q= z8e$!xd#~e{GQRigY&6&i&j+q_0jVBeUg90Q$zXQ}ZIF}$8Hx_>4r(VfVs7#^B0M!u zip1cRh_Ec&s0NC>9qY@a^b5N|18TFs_LKv?^7H!Lrbd1oK)TVjFwzByVFgag9#pgz zWi^o$T_tPQGvr8;3?aRQn41VbQAuHCfTy5gDPpmkYzpvfC_q~J3R}>C*)Yj;8l%RX zNnq%bI7u~xHEHhhkj7IiOR;Kg21`9Ucra~Lv(8rph(BrHB8<0a+7L1 zt$P7dXWK!!giEO>Zo+f}XM&Muiik-+0D{ni1DiJ$rHKaP{YhSo_mr#{aZ`ggDF@gA z))=#c)#?}+E$|7&VPX1|cmht2UBNX&IIc5_iN|&H?BFDCNT})&3i4c=60IE|?xi{> z>5)ALlDXNmwr6lf=A-Qr>H74Z1b=KEp^N408jRt0=gVs_1&UH77lc2QEp0?2co(JA#pyDAGg|08BGTf& z1vBn9*$b}@CpLhq;WvH@^N83PcjywmLqa)4%2O+IU)_it!(j;mt zz;6wS5a?~wYh3Gd*fv?f22d2!5^v>0uBA5F2%L(EH-en=f3-p%VbqPWJt!km9})wsSZz2m;r0i9_}? zea@P3m1FqU@&nU0_FXM7*GR#D(yxL@xjOI_aK~DszMg zK06^ixoZ@kPz)K<^3eUJSGG_V{4R2jfTnITxxP#8Pk| zK>z_i6NXH=?{@g`N~Y6Mg7Su5k@V-I@U}{fHDx;Z!Nz%G#WT#3~7DiOS1**rPC+`%h6%nco<^pYYkZ5mO-Kb3z!uo@nIQ4%6yatFq(3VahjSmX18(*Ex?))?su?oR$sO-N9pL8 zxr~@JOgBySTMg3_sZ}dHvZO;lIsl7Rx@4KZa;boOz8qh^G^;xgHEO->C*wbvEJ~jY z!zOt08swS+;h`;-pfe$3SwAA4cWF|tIR%ir)7j~{l z8(17)@N|Pxy2;0PC#vBsc7WT2qouBH(hcj-It6YmF3yEnin*J>mv$B-nz~ukvAiey zGlES9qFm#l=xXc+DXgTGTEAooB1|j(v4chICeG)2a|I=EgzNKHZ%4bYVQ6E3TujBl zAH`JbTk2KHv+c-|8hG*arM-uFcNHzdCel% zOunAW`E}rdLPAX-J=$wxVM>A1+YuK^j~U!HjcmgFsc;?G1R_$hQce;mMC0_TxzCe+ zv81Sh|KT8W`rTv<$CowqXmr~07AQ06J~MfNIEvI8`m)n4=vH)k=r$o`#GUuu!LW(D znE(ZC>Xsa!xsy)C-D|8hLAE@byESKZ{tG{kVB@TEAL{**p@UK31{~x>MZv!Q?e+~= zf#2S}e)V_{e?G`(skg3rvVs_UszWELO0`9}zu7QL437lU=@i_O2=R&(y6-iy@ zR`kx%;eO0f^1+-zok}*bm^TpWsQV$|1)I|8hXhQv+2c8PDise!IBP1``AyqUjfwQP zs0%>C^AY%Y_*r!UkmrpD?;81z=rQFbB(^xNR!m|(TO$`(swZK%u`J@~-jOAXP=hr_ zeW#Q|aG5iOy{n22YeV=zZnFnf=%;i64L&B+9rTJM=21Kkm>lT1U|<-^#5lS@u?@Ca zuulV$PMn*eN}Wp_#%!VT1R7@$58&YrBe}RN|7ua@46;?h7LY=5kXaxQJ1a%d1W?mA za9hY?d2aDH{;#uho_f`VOxMUay80FcP8d{l(~&QCWeesjitK-}ad5ou9}6{+Jup`W zOg94{j!xjpaJ)ZEG@d#n*Ed-TGFBWkuuG(x^$gPx?U_Rlsu=cJj~V%7{Hc_9_*4!T z*o7LT^ge`zJA`^1Xgz@KsA$CL2R>;v(v6Pq&BmkGj_(`JDJ6HYYApD`(9VE7=IV!IIg- zL@ptxH@L~-R5U>eH<*7wlBo*+(_Ca$w7N1eEl_=vlc4e#c2svMTC}t2=ffggGo)YI z8X?g{kvXP4LypD~Q>3baT3{AFi>QozXn8;?@$PzU@qKz#*qd?=Z3}z=Nosr?WKc*k z3Q;UYY8OX=usrvh5$VhdQ8CHe@%095r@Vk$D^LJ;yk_^YMKBT8R-4Uqcv@)-Y6j)e(SWR0DK-rU z@=R%CfZwQ-K_{GL2+MG3l|9rMA zKu8HOx`bEr7$PAfe@_u|+-if4;E`NiWxb!hP<~FI&VmMF4%gS0Gq71jQ6?yc ze|D;Nt$Bg!i_gJxzuxt%sBe*OWcC*mRCnb~2f@Z6{dWsJ;R z*BYj*dQa9cYz-@!5mG1-efR2^ih^41oJ~r(QDXQ`mq#wRp+O<~dZvIhC zkB2t9w4+B3ExNj1FGq`KYb`25;&Cp-*kjp=@DcfYy+nwXl=GR|?9k)tj#4wh-GfPc z8phhnP*7IZ31U@v(7AP;EgLVZEIPhS#;HJTV5i`Q%0<0hoyAv+?vkWB3!NhuRZoeNDW4A3vO%j@lC$#ek{!38dFK%S4RJ3`G3*q>iHWMos!?DqS;FizA%yqF`G-*!D+iv;Cd2uo8w zmJRw69$(HORp&gor{nJ)A+hx-enB?7dWMqn_<7nhblhzA^Pkj-b;NCrU^>-`c7w&- zmc+xBW0&<=^d)skduy`TcN+kN5t(d!LmMAf0NYER3Xz{C`fL;(EY8(vQiT*07nWG+zb>Iw=o3Qr-yblW z;{GsYQ^drCgim5mEMVkbX*=x%%D`NN`eC0OrU_#f&>@WAuG;O`}lpqfI-NTyqkeOS@n9$A+XVR(87 z7g(>Z7g$#qP*#_{-;mJb{`H%?-rg5)-~IYUDUmVjLKeclYVn>r{H87uQaA(KYyC5k z055coWdGcsZG*Fb+JQVql-{AxL@+P7x@LpUy~$^gj#yz>Y#mmWe`puv=992L$(fj3 zsa1jWzGTx-9krZjslvFsIu&PzNDDXdoFRVtcy^#CcyFE|PTV`}R_WhCeanWBk;d z+%QeG5VPdjFPi4Vpt0H#}6=4u}R}&~* zAnR@xNPE0iRwHnHOghjrzEJrGus58R4(PR%_KFcqD{S@E!%!_3>pQt0#KdObD1K>W{h4Vu30Sz(I=FVh@EDWg3 z(^qHuHf-f_zBX_i?_nu=IDz1HX@bNs0>Q%%BNHmxZt;;4TYBY%b{(`26L@5y0QVO^ ze^Gp(0wJqq$`n3q-`O1NEegLjp@+kx_At@U1M$kR2L)X*8wCBZ zPQhSXyXdi0G@U`ePfJTw;M{vM+&?yTT(X~Hk9_ccJ3l&klM{8Ivh&VcJ zWsQ)73Rwlg{P9H3+%McG)AA_fE%|^H?*0LM067PnRCvwe;gCqFjs{kOgvQ|;aVdFJ<@MA15@BKW4gV{5pg;sH2x2A%s<5KgsX*FL4ZmaO!COCN&>e!3 zVX`g48Z7lz-oEhjmAsdm^(^dF6tlU68(>4tU#!iJ9+oH`MRAn3I?NL;RHvj-*kY3% z5tI(nIO=$C+cPA&@McE9*ws1ISS#e4rFWxra~^E}0W>{d=ZO$U1Gj+e$Td;iNup5zaKc3HA|g!23U~7BB@&P#z|?oOBQ8lM1yqi$ z|AlE<@E3nA{PoJXwNSxW4j{36}*&$xMp4bF*0c02|P? zIif<3g`-v^!cI8!&=Xe>%N{;L{iWiFq$?#ra6Ew>+qVn|M1D7$MMvSIl6DFCB!v{1 zSbekXNDrcHtX&(P96)VPxYb&e*Srkz{D&*()Y6XNwDS zX$IRdo-KV2NPujF%xp`UQmQ74<>>-EVutodT}o^%wd!Ez%>Q`Fab|O6FH3C=h$g9YB}K})6cXdAj;5TV zE*h91A^2d$k^ob;31f1uamGf$VDg$u7PdV)K z#l>3nq6%ybqj*OLjlXE0!sW|&8wty1je#|cx$qEYzI6Lc(bAv;_gC-UuI}Ic8tBm{ zFB6K?L9cd=V}I*m(AlG;;iB}kA|GNVT0Qi{yvAay6VvEtD+>xCk`@Z;Xd;rQ-~;++ zk4qU2uq)xvr?dyYo7``=>OmQAcD2}`MCoF^Sxyj9xaOJh5@4ptIm421=V11c^<3T$ z1v~i3f>edSgp+CNDc}>xx}Lu7?nXm2R{%9l+0M2)RGpw^gRLtLA$BOR04me;cqG%6 z;M?tU8Pl7yT%5G-4z6l~ix$-12)C>^su7h0)POTS=krKCkwE5RAh(<<8r0-&a4uNV;p^3w9`88 z*572D4{NaQHtZ3``L2+e;h9-haTO$b)N2!&TwFmN}=#nC<%mo z{tLVxxilW7p~8oFZ+Z6<(x-fVcKhM(^wq2PcOO1zuT|Gy_L9pnl?|L~IVSnd^jS(B zs1JrMIJ%_vC~?QVMLd^wTxl7(y(1j98Ld>qgb7ds5sZ1KMyCdp_H4~Yw;3;i zLXQWF)YKFh%uZODtOe32(%yq7zQ>TsZd9muD`9tlA}k%kZfZ7;7K$WfnAr}ti2F}+ zf+2fUxDhl1u)jsT9#Ern!ijraEMmYeeXkaCdIYFYLl002(IqJ3cFUQFlgOAXp!1wV zQBpahRDfEn=61$8h9%9HGWk??gda5Mzj;H_;glXEi}O>A@Cs2Vs7>cw3)(nrHO{V( zR+vOtbQ*mO30jrQW9~Gfheqxd2EHimL{oDwzc=ad^%<00xw#=KLM?}fgQ?q0QMp{< zN0n~}bUvhP*ttAa(t`|x&{9!nEyl#tB!msboG~!8_R3A=Z8{-R6d|eiFp_$wyhF+G z*U?4$wDv|jV#d+_k*6FL*CMV^M^sLDEc;hvGy9mwnL;ItNd7a<3tvt471U=$E2__Q z;qhBSH7ae0NVgR#bNR;Md0o5ZsMp!5*>Orgg54Nyh1Hed#33UH)Sys>K+RJ{pYp*{ zN)Y>L&qHA8^jx|e4xDoXSCxw_Vjc3U`BX7_>j_FS1`3P~p)k!A-gkBGW&zge6Ct-f?1|*Ui>88TR(J8JdF0a0+2I{R8Bk1z zKTS?Y!7lJKlis0rM9R(aW~T3faju9Z)TWZ&iTVF^CG!GEOi3Cp!x z?|q)P+nuLEz^TNP-+ z`YO)#Anrto-mt68A9U9%JD{P+UtVlar<9%shHy@&xkbpqcu;xTwX(C+FpbfMc6Fw) z%Aazue}D*oAq*uxS_5UcR-MKNA_r4onInP!*1PRt=G+EbjyC_vKAmWxv5Y_|a^v%} zu}k0N_<-2J=ra7~K zK)d162&;p`du&8bBoCdU97G#sf?8VtWEphA;~bINHf)0L0Ih z13}jp*MRWLSRi^$+RRhXRU_gq7CLuXb~TO$^&J#;C!A_`<%1xQkF)stx>Ndv+W&+hWP#s!LAT(YZHiacCQa%YId88=UQj zyH|Ksfv}jh$QO?oD^ka=ZmzLr)zcdwy~Sg!3)gZ)mnmSOV8I7;p2;40lA6K02xBGU z+31wcL4mwf#=bs24fLiSc58NNhbh;1Ch%(&mIR^}gX2Q2ZGZ#ALDF3uBx>rCv65*V zG!+9`5u=j`FCIu;c|+LVF9Qd5sV3Z61J=O*VNnA->8?~jpkU+EE0{jI#HA?^(I>iw zse2KVFkwvPB?G_cTvhI=ot^Xu@=+_$DAc-^KcfHU6L3UuG>{6DGtol3O;ABRU~Eu6 zr%uu#pkAF%AdNqT9;H$tgWh#y8NwX^;2@ADDLdO})K8u!I0l?}X5d&?>7H||Mj#=k z@V!WKTp3zh!F5|!+Miy-roLE*F9{4*m++?8&aZC@J^t=an&m>0Vo4km%Xfu7GV+mF z8vzNFmAz_42qauIe&Xu#`g(mK|HbT;=(j0F<#A0QYLG8Z8D=8O);3qeWkqd|77y?4 z!vSU4!=a99!8PYq2F~jLy$6f;y2{T_R`FaV`>alE;&mFm8t;#8V(kM@aXn74xkQzl zjao78Ir2du8l!%lM4|y|>~j;-n!5aIyYnMUm;Pii;k}i~#MnDNEX2dQX={@QMgw*KSZzu7EVI|O7TW(jitkN@6-9%45A4g$mZr(AQtR)l350_gm| z_f+^^o(AM8NVb|GX<|Yo-FOaMqK%-3WN#Bpvzh3Pgtc6~vACIW;%7TSAA zT%v{Yl9oQdKS)v;l08!@iv+P`ql1^n6Ql-kEkMz1ADn64#ip`27L*bYbZh2sGx1yq zvrG13U~Z|qD39T{x{GKt>IdanoH6kjpo1*eBYe&cbiVDAR4<6lg{2HIaROD^!b8EF ztate0z&Qa*vGIVhDnGuyd-IA3bUxn6#t^~JNS0%5U-s0c_YeQje zE;ooJ+O3Sp;Kn*~k-<$c$vmi&f-}6y<)nIvKj~?1zgieJ6)-3{koOB+dctg=`}sq*A<8)JDuz+qax| z8GDsbDL6#>&r1()zlm`7bMbbK-O}eqA)>g_NuYzm3|`x3I9&VNQ^e0BM6klZVCK*V zSPsnKJzX4ry?bScjPb$J<{a$QTXlsqlx&TQNTyJLQX2N39Aezdn5GHJr}S)kx->f) zHZ}4BjNr%2v7T*KWuEXq^|)j~)R>Alr+L?vW@CqL*iEL=I1;NW?Ru5fvKT5@_X_lg zXP_`}GiqMvqS2-Sbm#;kOtsPzkfk(!7f~)Sv|KgpIxiLjXLY;bv+F^g!b@nL8dJEs zAbp43U2}K}YZ7PICJ~Cm$qVdPs4VNKxDR)~Au5ia3%wRH`k+8m;n^Wn0QYkPFnP3P ziBo`UTav6}UmIQ;nTVU@*#Zl}$(lP4~qmF2!jQ)j=wqaJT=r1@{c{z*sk13 zPqYv|&v>K{!Yq02qO))Vz;V3jD42o^IKpHVsO1pc!nvTSDRH!P;LNi zc$twvdQc*87qczXGL5R@#p$Kxv}Lkh(x!$G_y6WV*xuieN2C>K`}alAX(8OSQ*5WC z7b)#N2-ylG6$gxGEjA(Ufg%ajUZ*FbAO@)5R!P8 z407yTgZS&9pC5Q|6@8!zhfZKdV=4}C&}d~yTE-EAURv(=O{kvFO>sJ7wo#T@L6&7; z-5DzWXi5qWw5yLEAbeB^DcB-;cewpr+XiUDQR5lJl_oB&Kzgu|VRsGll1Dhj{e2Jt z$v%()465okgXv$sE_}t11}{01A?nJC9%bCgDCXGw{*?`&eVn5bEC^By9W?J~K+`Se z4ML2#7@4S(1ZKH>E4lb!On2cE z>6{+<^TdDO`RdZxQ+{d#RLqmO(5x%(FrHXoYGpj}SXJKZIxT&7 zcyvO5Xj}`!)(Vu$3Q>bJlcsEALD4}`TyzV6{d|UD(w3zx{3k1jZyz8am^OBp%iBO5 zRYl&cbr`!6KXf@t$koHWHuD~n)RVN9p|7M2M?<1vK`9K)uo#@a-A4cF@Q|bcW%U}T zrD?;TSSPz43a+X5HI>4; zJMoT#)SIgccLc2HkUP7mkzuXsq+L}g^u3U7pR$&@W`#Pte}wF({r-s_CV9+6biM|Z zQz5CE07XKeg@rbd2r7?3>!y>y_a${(vc|_?ScJ$xwt5G8T2E`>p#n;c%f&qFfmQ*Zxm*~>ktP>uLsHjBYP~izXQ)S zVXl6KJ_RKsVw>{oOwuPKEQ%`JHpEYD_I9&Qg$61_rKF}-rUI_YaG-fe4C#cI`nRNJ z1A|$zA3`ime_1agC|KdSl+d3m0NQX(UqXK=PjCn;1;i&BZo|XDy#M>}i8(<~HeAPy zkgz``Hxyjktgpd|_gXE5lO#MxVFT({5tu$wa_ne_CuPyehY(zmXK#O{DCm(5&H*}!-vkNGPtbKPvnuQJX+o%;DXQl1w64Tu*n{TuK_(3)`L z8BL(#2nn$V2e5Ds4qbzkQb%f6Rf@QRnqos$Abn$4e5n1X*bjVv3DeBdKu;$!JPC7A zUFDr_7KXvTSv1VTFtBv>c|x&zoI^W9FAvJq`NimU=u=WNtkBL zG|f;mcN2nVF;7R52J$MnPg;=6$HEVT|)YXhGPvu0zyOjWlSBWJr< zxasNiY&x2b69}>i6nS*g)E**R0RcekhsGi^s;+DcbJ3G>FWqJ%qm6ks>QCbv{2Vrb z`sxm34;;0aCR7S%a||b#Uxu8uS*6gSxdAQ?r0_2JY5cG+>oakij<9XE?9gAZbOF-% z9(J0zn4PCG&VlAW;|@JJ&IG*~eRK@z3StS44t|!325F}|6HrgF?Tm1MWS(!iyl_Le zJ7`Oj@2irfYD2eLZNk^!A=&(Qe9cRGLapT0SoG9-`Y-BGfR)9~=4-+3vGK_1imGfc}NfCR;H-p^!eR z6w*iEYg!?sPbaL}r&y|PkO3`VQG5MGI_ZmRzr?Lyq61o zu~X*jfVv+p`TxkhZ89~9*h5>Y6K)KLwCf-?rFLE1o+)jG-zG0dlNU&#=6-(JlL1=Y zMhD;IBGY0ck@od3ATg92DIqa;E&C1*;w6pj`D=}&@uUeDAH1E z&RNvk@kkEB4En_djJm1gsRvo+t|j#BLFni~==eeCPdQoP_H&?3ZL-!t9-3K za#-0ePsb>HvF$+%C(#o0*Byp9(Mgc45@x5*kO`+>I3jzNFC}ru{V|=P?Jx}?0Qf_G z#iSwGM6?%-P?%#88?;k^{!;FsXaKUwcd3z=@SOYKz2cc_Gr1-|`El=mHv0@(eQcgp z?ijf@8km5epFmnyoEUJXd-!Kt6dYu$j7Cr#z|093EwX;D+0-^uv!39G3j8cGBTTMV z;1nPdN-Qke9<5H1(D}Qo(Z%xm>KY-bn514u+ZJu%J$10`?Qz77e1O`_T1cJ}n08iT zkVbKpwvmcF9 zaSzEw-RirT1e6@7l01^LmrRzf%&Y&oP7o8@Ys`FlE$S7``V3D-Zfp{|D`QCFAkOgfbp}Yt;ygK*E&7 z(Ftu0(;#P8-$FZy0(7cWu2WGrk+{wv4#DRDo1x2_AR0yC*p;8YSe~9^3&SQnnL z&3FZ`G04&(tKhrFHkDYWkO^`igtDfZo&|=yqP=-YvArJLKq#uNw(1N%|KngwXcmXwPHnH*(Ea8`nVe+&q z;=oI&ZYj3mXxpx*DHb1J;xRW0a2@VSMvB+hFd4>x_dE=L*^I(p4$aC9UDs$dP5~r7 zDcoXIg9+rTqT2Jj!e#FMR^4aFg}uY zvJq5#WN#@fTJQ+ayQ(H9DA??9Niro`82J2L@l{>mnhEr+;0xPk1B(J-$}mOUI(cV} z$aFMt-m(v*s~F#kxCbWV=iH!_fC0&_@*vFL{qWCWy&_HJCVz3gnwlrNU+CjRozTDo z1+hPBPf^<-8j+RasW4f$PTVV#VSmzFkJx`}zOyvSMMziz*Q{#<>B~#05(fN=`Tk3?T#M7&%f*MJZ7zxEcdTi{REx z*$mFy|D~x!#DdXk1n7;FX)UqN~+dF(`-@UCSfQ2h{KWG zEjiZ-nto^;aomkMZ~%^c3V=HD6A~r^2N>5%C$bzonlI)rfWdN}xoF5q=48cUD2B3Q zRaa@zMs!|GG!=MPn-Wx<%O;?>^9;Za){~BQ?B6yp@ZHuUyxzQf`%_PUp*oHkD=
1TZ$I3l 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
Ip% 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

8t8c!!8jeHEdWW#o(7}jzy=!~K^kjR zcLA6CH5?XBgwv&#g5tdn%K9Y72*SrI0Kw%j-mB(ODJy_eeRne zgW5`QUy!lNZvsqfm7~8ANF4swD&Zs`eQA#eB1xKm`H~Fxsh6HpIzMuW1EK^PkAXEz zM5wSLl1iey5k^&=l4P2zN-9Jp8W=jjh8#(tg;hj|9rRaY!a(eRjN( z4VQS9&cuK$5fui*7VV?WH-DVAy4BiMXREP7S)Ig~Br@k*nCw-1G8LMX{g^EGq(|h# z^bTAQ+fnLaes;xZM{sH6ijYt5-M)T};AwQ$di4&*`QC?z_a9$9^fqx!?=N3E^tX5S zuX&}1(DL**E|ci!Zqcv{jHk9JQNMk2cl+T1GkMs)zWebW(Us8nOs3xlyW5#Qo`KrY zAMfA1S-*OJhiX`8gTT|(w1f&`0?WE+GQNvF+$2D=+@3?ZxWso?VULlRM_uX zq7-daAaB+bY}X)t9K~L~aeC^Q;T6{sY5<)M8%JI@a*uRlFgWvo2{1 ztnzNQX`V~3iTL96>-%?u%Xe?@(KfNig#mE(sT1tjbp-5Ur6kyAu*&9NHBP`oNWs?b z)3_(X0Bytx?w*9e(|h!oLPIp*67U;x2{oUVR@4Nw88AHF{C$-T!K+rQ@ynzp^s1{T zV|J4=`Zq)bA-|syemB>S7hD+LL>S6)af9fH+1WM9SuG$_T^Zj3Y`LDUS5h08@gtg9 ziA0v8<`Cf@$OhzKuyQlLyO0sB@15}Ifh;KoE_jKxm_ssU7TDr5d2P00Gfu@=nMB}Q z01*_jIy7CK=zP_XR=DD6uGP_w^fHN3xj$aIp}nj_KO~)wQMVNb5wb+2+lREXnUa9) zyqjz1i9D^i(!_{69?^%iw6TfrxEwr$JtjoNMLV^I-! z>49%DhKT_H-KH~Zi0a`CzBCxkj^9|@{ZC0qt3e45lW5-f;zKa->YK4s=HBQMt2={u z`2-0f77pQn!vW&Lm1@ISz=Qpx;qk#S{xjI`Gs9;8_;fh<#I<4IGnVGGqrG$n<(&;( zjgZbm?BEysiQv{Z2KZNVlemBoalu2LNmcc~6$XJeUMNj{^?vjI_SN0|?XMpnL{VTU zbz0gL#?N1NBjc`7`gtAHs2t>Ep?H$(0rtVk_%K}5$%a@pFi8BL01Y)S0@GzPZE4+- z1e=2D82DguZ&F*)wiibKfbu$%xnb=iM8Fe`VQSIxhb%oDYR@!IRq8?hBK5ED$RK%-Ekc%;N_m- zoCkDJ3B|&^0MoBDME`)s5#mE*Wu|_RfIJ7ES~~v$k=Nvd`R=Ki0OB1d_Bbhn-P%

J>tvc2=k?I@W6AJivk|P?zI|WD_ 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

: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 8000510: b580 push {r7, lr} + 8000512: b082 sub sp, #8 + 8000514: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 8000516: f000 fa39 bl 800098c + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 800051a: f000 f81b bl 8000554 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 800051e: f000 f895 bl 800064c + MX_SPI1_Init(); + 8000522: f000 f85d bl 80005e0 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 8000526: f000 f99e bl 8000866 + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 800052a: f000 f9d3 bl 80008d4 + uint8_t compteur = 0; + 800052e: 2300 movs r3, #0 + 8000530: 71fb strb r3, [r7, #7] +#ifdef V1 + MAX7219_DisplayChar(1, 3); + MAX7219_DisplayChar(2, 5); +#endif +#ifdef V2 + affiche(compteur); + 8000532: 79fb ldrb r3, [r7, #7] + 8000534: 4618 mov r0, r3 + 8000536: f7ff ffbb bl 80004b0 + compteur++; + 800053a: 79fb ldrb r3, [r7, #7] + 800053c: 3301 adds r3, #1 + 800053e: 71fb strb r3, [r7, #7] + if (compteur >= 100) { + 8000540: 79fb ldrb r3, [r7, #7] + 8000542: 2b63 cmp r3, #99 @ 0x63 + 8000544: d901 bls.n 800054a + compteur = 0; + 8000546: 2300 movs r3, #0 + 8000548: 71fb strb r3, [r7, #7] + } + HAL_Delay(500); + 800054a: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800054e: f000 fa8b bl 8000a68 + affiche(compteur); + 8000552: e7ee b.n 8000532 + +08000554 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000554: b580 push {r7, lr} + 8000556: b092 sub sp, #72 @ 0x48 + 8000558: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 800055a: f107 0314 add.w r3, r7, #20 + 800055e: 2234 movs r2, #52 @ 0x34 + 8000560: 2100 movs r1, #0 + 8000562: 4618 mov r0, r3 + 8000564: f001 fd5a bl 800201c + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000568: 463b mov r3, r7 + 800056a: 2200 movs r2, #0 + 800056c: 601a str r2, [r3, #0] + 800056e: 605a str r2, [r3, #4] + 8000570: 609a str r2, [r3, #8] + 8000572: 60da str r2, [r3, #12] + 8000574: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000576: 4b19 ldr r3, [pc, #100] @ (80005dc ) + 8000578: 681b ldr r3, [r3, #0] + 800057a: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 800057e: 4a17 ldr r2, [pc, #92] @ (80005dc ) + 8000580: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000584: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000586: 2302 movs r3, #2 + 8000588: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 800058a: 2301 movs r3, #1 + 800058c: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 800058e: 2310 movs r3, #16 + 8000590: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 8000592: 2300 movs r3, #0 + 8000594: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000596: f107 0314 add.w r3, r7, #20 + 800059a: 4618 mov r0, r3 + 800059c: f000 fd12 bl 8000fc4 + 80005a0: 4603 mov r3, r0 + 80005a2: 2b00 cmp r3, #0 + 80005a4: d001 beq.n 80005aa + { + Error_Handler(); + 80005a6: f000 f88f bl 80006c8 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 80005aa: 230f movs r3, #15 + 80005ac: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 80005ae: 2301 movs r3, #1 + 80005b0: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 80005b2: 2300 movs r3, #0 + 80005b4: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80005b6: 2300 movs r3, #0 + 80005b8: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80005ba: 2300 movs r3, #0 + 80005bc: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 80005be: 463b mov r3, r7 + 80005c0: 2100 movs r1, #0 + 80005c2: 4618 mov r0, r3 + 80005c4: f001 f82e bl 8001624 + 80005c8: 4603 mov r3, r0 + 80005ca: 2b00 cmp r3, #0 + 80005cc: d001 beq.n 80005d2 + { + Error_Handler(); + 80005ce: f000 f87b bl 80006c8 + } +} + 80005d2: bf00 nop + 80005d4: 3748 adds r7, #72 @ 0x48 + 80005d6: 46bd mov sp, r7 + 80005d8: bd80 pop {r7, pc} + 80005da: bf00 nop + 80005dc: 40007000 .word 0x40007000 + +080005e0 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 80005e0: b580 push {r7, lr} + 80005e2: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 80005e4: 4b17 ldr r3, [pc, #92] @ (8000644 ) + 80005e6: 4a18 ldr r2, [pc, #96] @ (8000648 ) + 80005e8: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 80005ea: 4b16 ldr r3, [pc, #88] @ (8000644 ) + 80005ec: f44f 7282 mov.w r2, #260 @ 0x104 + 80005f0: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 80005f2: 4b14 ldr r3, [pc, #80] @ (8000644 ) + 80005f4: 2200 movs r2, #0 + 80005f6: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80005f8: 4b12 ldr r3, [pc, #72] @ (8000644 ) + 80005fa: 2200 movs r2, #0 + 80005fc: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 80005fe: 4b11 ldr r3, [pc, #68] @ (8000644 ) + 8000600: 2200 movs r2, #0 + 8000602: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 8000604: 4b0f ldr r3, [pc, #60] @ (8000644 ) + 8000606: 2200 movs r2, #0 + 8000608: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 800060a: 4b0e ldr r3, [pc, #56] @ (8000644 ) + 800060c: f44f 7200 mov.w r2, #512 @ 0x200 + 8000610: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8000612: 4b0c ldr r3, [pc, #48] @ (8000644 ) + 8000614: 2200 movs r2, #0 + 8000616: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 8000618: 4b0a ldr r3, [pc, #40] @ (8000644 ) + 800061a: 2200 movs r2, #0 + 800061c: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 800061e: 4b09 ldr r3, [pc, #36] @ (8000644 ) + 8000620: 2200 movs r2, #0 + 8000622: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8000624: 4b07 ldr r3, [pc, #28] @ (8000644 ) + 8000626: 2200 movs r2, #0 + 8000628: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 800062a: 4b06 ldr r3, [pc, #24] @ (8000644 ) + 800062c: 220a movs r2, #10 + 800062e: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 8000630: 4804 ldr r0, [pc, #16] @ (8000644 ) + 8000632: f001 fa49 bl 8001ac8 + 8000636: 4603 mov r3, r0 + 8000638: 2b00 cmp r3, #0 + 800063a: d001 beq.n 8000640 + { + Error_Handler(); + 800063c: f000 f844 bl 80006c8 + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 8000640: bf00 nop + 8000642: bd80 pop {r7, pc} + 8000644: 20000028 .word 0x20000028 + 8000648: 40013000 .word 0x40013000 + +0800064c : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 800064c: b580 push {r7, lr} + 800064e: b088 sub sp, #32 + 8000650: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000652: f107 030c add.w r3, r7, #12 + 8000656: 2200 movs r2, #0 + 8000658: 601a str r2, [r3, #0] + 800065a: 605a str r2, [r3, #4] + 800065c: 609a str r2, [r3, #8] + 800065e: 60da str r2, [r3, #12] + 8000660: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000662: 4b17 ldr r3, [pc, #92] @ (80006c0 ) + 8000664: 69db ldr r3, [r3, #28] + 8000666: 4a16 ldr r2, [pc, #88] @ (80006c0 ) + 8000668: f043 0304 orr.w r3, r3, #4 + 800066c: 61d3 str r3, [r2, #28] + 800066e: 4b14 ldr r3, [pc, #80] @ (80006c0 ) + 8000670: 69db ldr r3, [r3, #28] + 8000672: f003 0304 and.w r3, r3, #4 + 8000676: 60bb str r3, [r7, #8] + 8000678: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800067a: 4b11 ldr r3, [pc, #68] @ (80006c0 ) + 800067c: 69db ldr r3, [r3, #28] + 800067e: 4a10 ldr r2, [pc, #64] @ (80006c0 ) + 8000680: f043 0301 orr.w r3, r3, #1 + 8000684: 61d3 str r3, [r2, #28] + 8000686: 4b0e ldr r3, [pc, #56] @ (80006c0 ) + 8000688: 69db ldr r3, [r3, #28] + 800068a: f003 0301 and.w r3, r3, #1 + 800068e: 607b str r3, [r7, #4] + 8000690: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 8000692: 2200 movs r2, #0 + 8000694: 2101 movs r1, #1 + 8000696: 480b ldr r0, [pc, #44] @ (80006c4 ) + 8000698: f000 fc7c bl 8000f94 + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 800069c: 2301 movs r3, #1 + 800069e: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80006a0: 2301 movs r3, #1 + 80006a2: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80006a4: 2300 movs r3, #0 + 80006a6: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80006a8: 2300 movs r3, #0 + 80006aa: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80006ac: f107 030c add.w r3, r7, #12 + 80006b0: 4619 mov r1, r3 + 80006b2: 4804 ldr r0, [pc, #16] @ (80006c4 ) + 80006b4: f000 fade bl 8000c74 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80006b8: bf00 nop + 80006ba: 3720 adds r7, #32 + 80006bc: 46bd mov sp, r7 + 80006be: bd80 pop {r7, pc} + 80006c0: 40023800 .word 0x40023800 + 80006c4: 40020800 .word 0x40020800 + +080006c8 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 80006c8: b480 push {r7} + 80006ca: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 80006cc: b672 cpsid i +} + 80006ce: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 80006d0: bf00 nop + 80006d2: e7fd b.n 80006d0 + +080006d4 : +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 80006d4: b480 push {r7} + 80006d6: b085 sub sp, #20 + 80006d8: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 80006da: 4b14 ldr r3, [pc, #80] @ (800072c ) + 80006dc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80006de: 4a13 ldr r2, [pc, #76] @ (800072c ) + 80006e0: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80006e4: 6253 str r3, [r2, #36] @ 0x24 + 80006e6: 4b11 ldr r3, [pc, #68] @ (800072c ) + 80006e8: 6a5b ldr r3, [r3, #36] @ 0x24 + 80006ea: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80006ee: 60fb str r3, [r7, #12] + 80006f0: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 80006f2: 4b0e ldr r3, [pc, #56] @ (800072c ) + 80006f4: 6a1b ldr r3, [r3, #32] + 80006f6: 4a0d ldr r2, [pc, #52] @ (800072c ) + 80006f8: f043 0301 orr.w r3, r3, #1 + 80006fc: 6213 str r3, [r2, #32] + 80006fe: 4b0b ldr r3, [pc, #44] @ (800072c ) + 8000700: 6a1b ldr r3, [r3, #32] + 8000702: f003 0301 and.w r3, r3, #1 + 8000706: 60bb str r3, [r7, #8] + 8000708: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800070a: 4b08 ldr r3, [pc, #32] @ (800072c ) + 800070c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800070e: 4a07 ldr r2, [pc, #28] @ (800072c ) + 8000710: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000714: 6253 str r3, [r2, #36] @ 0x24 + 8000716: 4b05 ldr r3, [pc, #20] @ (800072c ) + 8000718: 6a5b ldr r3, [r3, #36] @ 0x24 + 800071a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800071e: 607b str r3, [r7, #4] + 8000720: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000722: bf00 nop + 8000724: 3714 adds r7, #20 + 8000726: 46bd mov sp, r7 + 8000728: bc80 pop {r7} + 800072a: 4770 bx lr + 800072c: 40023800 .word 0x40023800 + +08000730 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000730: b580 push {r7, lr} + 8000732: b08a sub sp, #40 @ 0x28 + 8000734: af00 add r7, sp, #0 + 8000736: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000738: f107 0314 add.w r3, r7, #20 + 800073c: 2200 movs r2, #0 + 800073e: 601a str r2, [r3, #0] + 8000740: 605a str r2, [r3, #4] + 8000742: 609a str r2, [r3, #8] + 8000744: 60da str r2, [r3, #12] + 8000746: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 8000748: 687b ldr r3, [r7, #4] + 800074a: 681b ldr r3, [r3, #0] + 800074c: 4a17 ldr r2, [pc, #92] @ (80007ac ) + 800074e: 4293 cmp r3, r2 + 8000750: d127 bne.n 80007a2 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 8000752: 4b17 ldr r3, [pc, #92] @ (80007b0 ) + 8000754: 6a1b ldr r3, [r3, #32] + 8000756: 4a16 ldr r2, [pc, #88] @ (80007b0 ) + 8000758: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 800075c: 6213 str r3, [r2, #32] + 800075e: 4b14 ldr r3, [pc, #80] @ (80007b0 ) + 8000760: 6a1b ldr r3, [r3, #32] + 8000762: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8000766: 613b str r3, [r7, #16] + 8000768: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800076a: 4b11 ldr r3, [pc, #68] @ (80007b0 ) + 800076c: 69db ldr r3, [r3, #28] + 800076e: 4a10 ldr r2, [pc, #64] @ (80007b0 ) + 8000770: f043 0301 orr.w r3, r3, #1 + 8000774: 61d3 str r3, [r2, #28] + 8000776: 4b0e ldr r3, [pc, #56] @ (80007b0 ) + 8000778: 69db ldr r3, [r3, #28] + 800077a: f003 0301 and.w r3, r3, #1 + 800077e: 60fb str r3, [r7, #12] + 8000780: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 8000782: 23e0 movs r3, #224 @ 0xe0 + 8000784: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000786: 2302 movs r3, #2 + 8000788: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800078a: 2300 movs r3, #0 + 800078c: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 800078e: 2303 movs r3, #3 + 8000790: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 8000792: 2305 movs r3, #5 + 8000794: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000796: f107 0314 add.w r3, r7, #20 + 800079a: 4619 mov r1, r3 + 800079c: 4805 ldr r0, [pc, #20] @ (80007b4 ) + 800079e: f000 fa69 bl 8000c74 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 80007a2: bf00 nop + 80007a4: 3728 adds r7, #40 @ 0x28 + 80007a6: 46bd mov sp, r7 + 80007a8: bd80 pop {r7, pc} + 80007aa: bf00 nop + 80007ac: 40013000 .word 0x40013000 + 80007b0: 40023800 .word 0x40023800 + 80007b4: 40020000 .word 0x40020000 + +080007b8 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 80007b8: b480 push {r7} + 80007ba: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 80007bc: bf00 nop + 80007be: e7fd b.n 80007bc + +080007c0 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 80007c0: b480 push {r7} + 80007c2: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 80007c4: bf00 nop + 80007c6: e7fd b.n 80007c4 + +080007c8 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 80007c8: b480 push {r7} + 80007ca: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 80007cc: bf00 nop + 80007ce: e7fd b.n 80007cc + +080007d0 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 80007d0: b480 push {r7} + 80007d2: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 80007d4: bf00 nop + 80007d6: e7fd b.n 80007d4 + +080007d8 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 80007d8: b480 push {r7} + 80007da: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 80007dc: bf00 nop + 80007de: e7fd b.n 80007dc + +080007e0 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 80007e0: b480 push {r7} + 80007e2: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 80007e4: bf00 nop + 80007e6: 46bd mov sp, r7 + 80007e8: bc80 pop {r7} + 80007ea: 4770 bx lr + +080007ec : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 80007ec: b480 push {r7} + 80007ee: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 80007f0: bf00 nop + 80007f2: 46bd mov sp, r7 + 80007f4: bc80 pop {r7} + 80007f6: 4770 bx lr + +080007f8 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 80007f8: b480 push {r7} + 80007fa: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 80007fc: bf00 nop + 80007fe: 46bd mov sp, r7 + 8000800: bc80 pop {r7} + 8000802: 4770 bx lr + +08000804 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000804: b580 push {r7, lr} + 8000806: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000808: f000 f912 bl 8000a30 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 800080c: bf00 nop + 800080e: bd80 pop {r7, pc} + +08000810 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000810: b480 push {r7} + 8000812: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000814: bf00 nop + 8000816: 46bd mov sp, r7 + 8000818: bc80 pop {r7} + 800081a: 4770 bx lr + +0800081c : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 800081c: f7ff fff8 bl 8000810 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000820: 480b ldr r0, [pc, #44] @ (8000850 ) + ldr r1, =_edata + 8000822: 490c ldr r1, [pc, #48] @ (8000854 ) + ldr r2, =_sidata + 8000824: 4a0c ldr r2, [pc, #48] @ (8000858 ) + movs r3, #0 + 8000826: 2300 movs r3, #0 + b LoopCopyDataInit + 8000828: e002 b.n 8000830 + +0800082a : + +CopyDataInit: + ldr r4, [r2, r3] + 800082a: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 800082c: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 800082e: 3304 adds r3, #4 + +08000830 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000830: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000832: 428c cmp r4, r1 + bcc CopyDataInit + 8000834: d3f9 bcc.n 800082a + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000836: 4a09 ldr r2, [pc, #36] @ (800085c ) + ldr r4, =_ebss + 8000838: 4c09 ldr r4, [pc, #36] @ (8000860 ) + movs r3, #0 + 800083a: 2300 movs r3, #0 + b LoopFillZerobss + 800083c: e001 b.n 8000842 + +0800083e : + +FillZerobss: + str r3, [r2] + 800083e: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000840: 3204 adds r2, #4 + +08000842 : + +LoopFillZerobss: + cmp r2, r4 + 8000842: 42a2 cmp r2, r4 + bcc FillZerobss + 8000844: d3fb bcc.n 800083e + +/* Call static constructors */ + bl __libc_init_array + 8000846: f001 fbf1 bl 800202c <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 800084a: f7ff fe61 bl 8000510
+ bx lr + 800084e: 4770 bx lr + ldr r0, =_sdata + 8000850: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000854: 2000000c .word 0x2000000c + ldr r2, =_sidata + 8000858: 080020c8 .word 0x080020c8 + ldr r2, =_sbss + 800085c: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000860: 20000084 .word 0x20000084 + +08000864 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000864: e7fe b.n 8000864 + +08000866 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000866: b580 push {r7, lr} + 8000868: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 800086a: 2107 movs r1, #7 + 800086c: 200b movs r0, #11 + 800086e: f000 f85d bl 800092c + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000872: 2100 movs r1, #0 + 8000874: 2009 movs r0, #9 + 8000876: f000 f859 bl 800092c + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 800087a: f000 f809 bl 8000890 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 800087e: f000 f80f bl 80008a0 + MAX7219_Clear(); // clear all digits + 8000882: f000 f827 bl 80008d4 + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000886: 200f movs r0, #15 + 8000888: f000 f812 bl 80008b0 +} + 800088c: bf00 nop + 800088e: bd80 pop {r7, pc} + +08000890 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000890: b580 push {r7, lr} + 8000892: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000894: 2101 movs r1, #1 + 8000896: 200c movs r0, #12 + 8000898: f000 f848 bl 800092c +} + 800089c: bf00 nop + 800089e: bd80 pop {r7, pc} + +080008a0 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 80008a0: b580 push {r7, lr} + 80008a2: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 80008a4: 2100 movs r1, #0 + 80008a6: 200f movs r0, #15 + 80008a8: f000 f840 bl 800092c +} + 80008ac: bf00 nop + 80008ae: bd80 pop {r7, pc} + +080008b0 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 80008b0: b580 push {r7, lr} + 80008b2: b082 sub sp, #8 + 80008b4: af00 add r7, sp, #0 + 80008b6: 4603 mov r3, r0 + 80008b8: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 80008ba: 79fb ldrb r3, [r7, #7] + 80008bc: f003 030f and.w r3, r3, #15 + 80008c0: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 80008c2: 79fb ldrb r3, [r7, #7] + 80008c4: 4619 mov r1, r3 + 80008c6: 200a movs r0, #10 + 80008c8: f000 f830 bl 800092c +} + 80008cc: bf00 nop + 80008ce: 3708 adds r7, #8 + 80008d0: 46bd mov sp, r7 + 80008d2: bd80 pop {r7, pc} + +080008d4 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 80008d4: b580 push {r7, lr} + 80008d6: b082 sub sp, #8 + 80008d8: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 80008da: 2300 movs r3, #0 + 80008dc: 71fb strb r3, [r7, #7] + 80008de: e007 b.n 80008f0 + MAX7219_Write(i, 0x00); // turn all segments off + 80008e0: 79fb ldrb r3, [r7, #7] + 80008e2: 2100 movs r1, #0 + 80008e4: 4618 mov r0, r3 + 80008e6: f000 f821 bl 800092c + for (i=0; i < 8; i++) + 80008ea: 79fb ldrb r3, [r7, #7] + 80008ec: 3301 adds r3, #1 + 80008ee: 71fb strb r3, [r7, #7] + 80008f0: 79fb ldrb r3, [r7, #7] + 80008f2: 2b07 cmp r3, #7 + 80008f4: d9f4 bls.n 80008e0 +} + 80008f6: bf00 nop + 80008f8: bf00 nop + 80008fa: 3708 adds r7, #8 + 80008fc: 46bd mov sp, r7 + 80008fe: bd80 pop {r7, pc} + +08000900 : +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + 8000900: b580 push {r7, lr} + 8000902: b082 sub sp, #8 + 8000904: af00 add r7, sp, #0 + 8000906: 4603 mov r3, r0 + 8000908: 460a mov r2, r1 + 800090a: 71fb strb r3, [r7, #7] + 800090c: 4613 mov r3, r2 + 800090e: 71bb strb r3, [r7, #6] + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); + 8000910: 79bb ldrb r3, [r7, #6] + 8000912: 4a05 ldr r2, [pc, #20] @ (8000928 ) + 8000914: 5cd2 ldrb r2, [r2, r3] + 8000916: 79fb ldrb r3, [r7, #7] + 8000918: 4611 mov r1, r2 + 800091a: 4618 mov r0, r3 + 800091c: f000 f806 bl 800092c +} + 8000920: bf00 nop + 8000922: 3708 adds r7, #8 + 8000924: 46bd mov sp, r7 + 8000926: bd80 pop {r7, pc} + 8000928: 080020a8 .word 0x080020a8 + +0800092c : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 800092c: b580 push {r7, lr} + 800092e: b082 sub sp, #8 + 8000930: af00 add r7, sp, #0 + 8000932: 4603 mov r3, r0 + 8000934: 460a mov r2, r1 + 8000936: 71fb strb r3, [r7, #7] + 8000938: 4613 mov r3, r2 + 800093a: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 800093c: 4b09 ldr r3, [pc, #36] @ (8000964 ) + 800093e: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000942: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000944: 79fb ldrb r3, [r7, #7] + 8000946: 4618 mov r0, r3 + 8000948: f000 f80e bl 8000968 + MAX7219_SendByte(dataout); // write data to MAX7219 + 800094c: 79bb ldrb r3, [r7, #6] + 800094e: 4618 mov r0, r3 + 8000950: f000 f80a bl 8000968 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000954: 4b03 ldr r3, [pc, #12] @ (8000964 ) + 8000956: 2201 movs r2, #1 + 8000958: 619a str r2, [r3, #24] + } + 800095a: bf00 nop + 800095c: 3708 adds r7, #8 + 800095e: 46bd mov sp, r7 + 8000960: bd80 pop {r7, pc} + 8000962: bf00 nop + 8000964: 40020800 .word 0x40020800 + +08000968 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000968: b580 push {r7, lr} + 800096a: b082 sub sp, #8 + 800096c: af00 add r7, sp, #0 + 800096e: 4603 mov r3, r0 + 8000970: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000972: 1df9 adds r1, r7, #7 + 8000974: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000978: 2201 movs r2, #1 + 800097a: 4803 ldr r0, [pc, #12] @ (8000988 ) + 800097c: f001 f92d bl 8001bda + +} + 8000980: bf00 nop + 8000982: 3708 adds r7, #8 + 8000984: 46bd mov sp, r7 + 8000986: bd80 pop {r7, pc} + 8000988: 20000028 .word 0x20000028 + +0800098c : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 800098c: b580 push {r7, lr} + 800098e: b082 sub sp, #8 + 8000990: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000992: 2300 movs r3, #0 + 8000994: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000996: 2003 movs r0, #3 + 8000998: f000 f938 bl 8000c0c + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 800099c: 200f movs r0, #15 + 800099e: f000 f80d bl 80009bc + 80009a2: 4603 mov r3, r0 + 80009a4: 2b00 cmp r3, #0 + 80009a6: d002 beq.n 80009ae + { + status = HAL_ERROR; + 80009a8: 2301 movs r3, #1 + 80009aa: 71fb strb r3, [r7, #7] + 80009ac: e001 b.n 80009b2 + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 80009ae: f7ff fe91 bl 80006d4 + } + + /* Return function status */ + return status; + 80009b2: 79fb ldrb r3, [r7, #7] +} + 80009b4: 4618 mov r0, r3 + 80009b6: 3708 adds r7, #8 + 80009b8: 46bd mov sp, r7 + 80009ba: bd80 pop {r7, pc} + +080009bc : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 80009bc: b580 push {r7, lr} + 80009be: b084 sub sp, #16 + 80009c0: af00 add r7, sp, #0 + 80009c2: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 80009c4: 2300 movs r3, #0 + 80009c6: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 80009c8: 4b16 ldr r3, [pc, #88] @ (8000a24 ) + 80009ca: 681b ldr r3, [r3, #0] + 80009cc: 2b00 cmp r3, #0 + 80009ce: d022 beq.n 8000a16 + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 80009d0: 4b15 ldr r3, [pc, #84] @ (8000a28 ) + 80009d2: 681a ldr r2, [r3, #0] + 80009d4: 4b13 ldr r3, [pc, #76] @ (8000a24 ) + 80009d6: 681b ldr r3, [r3, #0] + 80009d8: f44f 717a mov.w r1, #1000 @ 0x3e8 + 80009dc: fbb1 f3f3 udiv r3, r1, r3 + 80009e0: fbb2 f3f3 udiv r3, r2, r3 + 80009e4: 4618 mov r0, r3 + 80009e6: f000 f938 bl 8000c5a + 80009ea: 4603 mov r3, r0 + 80009ec: 2b00 cmp r3, #0 + 80009ee: d10f bne.n 8000a10 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 80009f0: 687b ldr r3, [r7, #4] + 80009f2: 2b0f cmp r3, #15 + 80009f4: d809 bhi.n 8000a0a + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 80009f6: 2200 movs r2, #0 + 80009f8: 6879 ldr r1, [r7, #4] + 80009fa: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 80009fe: f000 f910 bl 8000c22 + uwTickPrio = TickPriority; + 8000a02: 4a0a ldr r2, [pc, #40] @ (8000a2c ) + 8000a04: 687b ldr r3, [r7, #4] + 8000a06: 6013 str r3, [r2, #0] + 8000a08: e007 b.n 8000a1a + } + else + { + status = HAL_ERROR; + 8000a0a: 2301 movs r3, #1 + 8000a0c: 73fb strb r3, [r7, #15] + 8000a0e: e004 b.n 8000a1a + } + } + else + { + status = HAL_ERROR; + 8000a10: 2301 movs r3, #1 + 8000a12: 73fb strb r3, [r7, #15] + 8000a14: e001 b.n 8000a1a + } + } + else + { + status = HAL_ERROR; + 8000a16: 2301 movs r3, #1 + 8000a18: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000a1a: 7bfb ldrb r3, [r7, #15] +} + 8000a1c: 4618 mov r0, r3 + 8000a1e: 3710 adds r7, #16 + 8000a20: 46bd mov sp, r7 + 8000a22: bd80 pop {r7, pc} + 8000a24: 20000008 .word 0x20000008 + 8000a28: 20000000 .word 0x20000000 + 8000a2c: 20000004 .word 0x20000004 + +08000a30 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000a30: b480 push {r7} + 8000a32: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000a34: 4b05 ldr r3, [pc, #20] @ (8000a4c ) + 8000a36: 681a ldr r2, [r3, #0] + 8000a38: 4b05 ldr r3, [pc, #20] @ (8000a50 ) + 8000a3a: 681b ldr r3, [r3, #0] + 8000a3c: 4413 add r3, r2 + 8000a3e: 4a03 ldr r2, [pc, #12] @ (8000a4c ) + 8000a40: 6013 str r3, [r2, #0] +} + 8000a42: bf00 nop + 8000a44: 46bd mov sp, r7 + 8000a46: bc80 pop {r7} + 8000a48: 4770 bx lr + 8000a4a: bf00 nop + 8000a4c: 20000080 .word 0x20000080 + 8000a50: 20000008 .word 0x20000008 + +08000a54 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000a54: b480 push {r7} + 8000a56: af00 add r7, sp, #0 + return uwTick; + 8000a58: 4b02 ldr r3, [pc, #8] @ (8000a64 ) + 8000a5a: 681b ldr r3, [r3, #0] +} + 8000a5c: 4618 mov r0, r3 + 8000a5e: 46bd mov sp, r7 + 8000a60: bc80 pop {r7} + 8000a62: 4770 bx lr + 8000a64: 20000080 .word 0x20000080 + +08000a68 : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 8000a68: b580 push {r7, lr} + 8000a6a: b084 sub sp, #16 + 8000a6c: af00 add r7, sp, #0 + 8000a6e: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000a70: f7ff fff0 bl 8000a54 + 8000a74: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 8000a76: 687b ldr r3, [r7, #4] + 8000a78: 60fb str r3, [r7, #12] + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + 8000a7a: 68fb ldr r3, [r7, #12] + 8000a7c: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8000a80: d004 beq.n 8000a8c + { + wait += (uint32_t)(uwTickFreq); + 8000a82: 4b09 ldr r3, [pc, #36] @ (8000aa8 ) + 8000a84: 681b ldr r3, [r3, #0] + 8000a86: 68fa ldr r2, [r7, #12] + 8000a88: 4413 add r3, r2 + 8000a8a: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8000a8c: bf00 nop + 8000a8e: f7ff ffe1 bl 8000a54 + 8000a92: 4602 mov r2, r0 + 8000a94: 68bb ldr r3, [r7, #8] + 8000a96: 1ad3 subs r3, r2, r3 + 8000a98: 68fa ldr r2, [r7, #12] + 8000a9a: 429a cmp r2, r3 + 8000a9c: d8f7 bhi.n 8000a8e + { + } +} + 8000a9e: bf00 nop + 8000aa0: bf00 nop + 8000aa2: 3710 adds r7, #16 + 8000aa4: 46bd mov sp, r7 + 8000aa6: bd80 pop {r7, pc} + 8000aa8: 20000008 .word 0x20000008 + +08000aac <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000aac: b480 push {r7} + 8000aae: b085 sub sp, #20 + 8000ab0: af00 add r7, sp, #0 + 8000ab2: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000ab4: 687b ldr r3, [r7, #4] + 8000ab6: f003 0307 and.w r3, r3, #7 + 8000aba: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000abc: 4b0c ldr r3, [pc, #48] @ (8000af0 <__NVIC_SetPriorityGrouping+0x44>) + 8000abe: 68db ldr r3, [r3, #12] + 8000ac0: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000ac2: 68ba ldr r2, [r7, #8] + 8000ac4: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000ac8: 4013 ands r3, r2 + 8000aca: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000acc: 68fb ldr r3, [r7, #12] + 8000ace: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000ad0: 68bb ldr r3, [r7, #8] + 8000ad2: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000ad4: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000ad8: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000adc: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000ade: 4a04 ldr r2, [pc, #16] @ (8000af0 <__NVIC_SetPriorityGrouping+0x44>) + 8000ae0: 68bb ldr r3, [r7, #8] + 8000ae2: 60d3 str r3, [r2, #12] +} + 8000ae4: bf00 nop + 8000ae6: 3714 adds r7, #20 + 8000ae8: 46bd mov sp, r7 + 8000aea: bc80 pop {r7} + 8000aec: 4770 bx lr + 8000aee: bf00 nop + 8000af0: e000ed00 .word 0xe000ed00 + +08000af4 <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000af4: b480 push {r7} + 8000af6: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000af8: 4b04 ldr r3, [pc, #16] @ (8000b0c <__NVIC_GetPriorityGrouping+0x18>) + 8000afa: 68db ldr r3, [r3, #12] + 8000afc: 0a1b lsrs r3, r3, #8 + 8000afe: f003 0307 and.w r3, r3, #7 +} + 8000b02: 4618 mov r0, r3 + 8000b04: 46bd mov sp, r7 + 8000b06: bc80 pop {r7} + 8000b08: 4770 bx lr + 8000b0a: bf00 nop + 8000b0c: e000ed00 .word 0xe000ed00 + +08000b10 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000b10: b480 push {r7} + 8000b12: b083 sub sp, #12 + 8000b14: af00 add r7, sp, #0 + 8000b16: 4603 mov r3, r0 + 8000b18: 6039 str r1, [r7, #0] + 8000b1a: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000b1c: f997 3007 ldrsb.w r3, [r7, #7] + 8000b20: 2b00 cmp r3, #0 + 8000b22: db0a blt.n 8000b3a <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000b24: 683b ldr r3, [r7, #0] + 8000b26: b2da uxtb r2, r3 + 8000b28: 490c ldr r1, [pc, #48] @ (8000b5c <__NVIC_SetPriority+0x4c>) + 8000b2a: f997 3007 ldrsb.w r3, [r7, #7] + 8000b2e: 0112 lsls r2, r2, #4 + 8000b30: b2d2 uxtb r2, r2 + 8000b32: 440b add r3, r1 + 8000b34: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000b38: e00a b.n 8000b50 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000b3a: 683b ldr r3, [r7, #0] + 8000b3c: b2da uxtb r2, r3 + 8000b3e: 4908 ldr r1, [pc, #32] @ (8000b60 <__NVIC_SetPriority+0x50>) + 8000b40: 79fb ldrb r3, [r7, #7] + 8000b42: f003 030f and.w r3, r3, #15 + 8000b46: 3b04 subs r3, #4 + 8000b48: 0112 lsls r2, r2, #4 + 8000b4a: b2d2 uxtb r2, r2 + 8000b4c: 440b add r3, r1 + 8000b4e: 761a strb r2, [r3, #24] +} + 8000b50: bf00 nop + 8000b52: 370c adds r7, #12 + 8000b54: 46bd mov sp, r7 + 8000b56: bc80 pop {r7} + 8000b58: 4770 bx lr + 8000b5a: bf00 nop + 8000b5c: e000e100 .word 0xe000e100 + 8000b60: e000ed00 .word 0xe000ed00 + +08000b64 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000b64: b480 push {r7} + 8000b66: b089 sub sp, #36 @ 0x24 + 8000b68: af00 add r7, sp, #0 + 8000b6a: 60f8 str r0, [r7, #12] + 8000b6c: 60b9 str r1, [r7, #8] + 8000b6e: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000b70: 68fb ldr r3, [r7, #12] + 8000b72: f003 0307 and.w r3, r3, #7 + 8000b76: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000b78: 69fb ldr r3, [r7, #28] + 8000b7a: f1c3 0307 rsb r3, r3, #7 + 8000b7e: 2b04 cmp r3, #4 + 8000b80: bf28 it cs + 8000b82: 2304 movcs r3, #4 + 8000b84: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000b86: 69fb ldr r3, [r7, #28] + 8000b88: 3304 adds r3, #4 + 8000b8a: 2b06 cmp r3, #6 + 8000b8c: d902 bls.n 8000b94 + 8000b8e: 69fb ldr r3, [r7, #28] + 8000b90: 3b03 subs r3, #3 + 8000b92: e000 b.n 8000b96 + 8000b94: 2300 movs r3, #0 + 8000b96: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000b98: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000b9c: 69bb ldr r3, [r7, #24] + 8000b9e: fa02 f303 lsl.w r3, r2, r3 + 8000ba2: 43da mvns r2, r3 + 8000ba4: 68bb ldr r3, [r7, #8] + 8000ba6: 401a ands r2, r3 + 8000ba8: 697b ldr r3, [r7, #20] + 8000baa: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000bac: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000bb0: 697b ldr r3, [r7, #20] + 8000bb2: fa01 f303 lsl.w r3, r1, r3 + 8000bb6: 43d9 mvns r1, r3 + 8000bb8: 687b ldr r3, [r7, #4] + 8000bba: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000bbc: 4313 orrs r3, r2 + ); +} + 8000bbe: 4618 mov r0, r3 + 8000bc0: 3724 adds r7, #36 @ 0x24 + 8000bc2: 46bd mov sp, r7 + 8000bc4: bc80 pop {r7} + 8000bc6: 4770 bx lr + +08000bc8 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000bc8: b580 push {r7, lr} + 8000bca: b082 sub sp, #8 + 8000bcc: af00 add r7, sp, #0 + 8000bce: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000bd0: 687b ldr r3, [r7, #4] + 8000bd2: 3b01 subs r3, #1 + 8000bd4: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000bd8: d301 bcc.n 8000bde + { + return (1UL); /* Reload value impossible */ + 8000bda: 2301 movs r3, #1 + 8000bdc: e00f b.n 8000bfe + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000bde: 4a0a ldr r2, [pc, #40] @ (8000c08 ) + 8000be0: 687b ldr r3, [r7, #4] + 8000be2: 3b01 subs r3, #1 + 8000be4: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000be6: 210f movs r1, #15 + 8000be8: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000bec: f7ff ff90 bl 8000b10 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000bf0: 4b05 ldr r3, [pc, #20] @ (8000c08 ) + 8000bf2: 2200 movs r2, #0 + 8000bf4: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000bf6: 4b04 ldr r3, [pc, #16] @ (8000c08 ) + 8000bf8: 2207 movs r2, #7 + 8000bfa: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000bfc: 2300 movs r3, #0 +} + 8000bfe: 4618 mov r0, r3 + 8000c00: 3708 adds r7, #8 + 8000c02: 46bd mov sp, r7 + 8000c04: bd80 pop {r7, pc} + 8000c06: bf00 nop + 8000c08: e000e010 .word 0xe000e010 + +08000c0c : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000c0c: b580 push {r7, lr} + 8000c0e: b082 sub sp, #8 + 8000c10: af00 add r7, sp, #0 + 8000c12: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000c14: 6878 ldr r0, [r7, #4] + 8000c16: f7ff ff49 bl 8000aac <__NVIC_SetPriorityGrouping> +} + 8000c1a: bf00 nop + 8000c1c: 3708 adds r7, #8 + 8000c1e: 46bd mov sp, r7 + 8000c20: bd80 pop {r7, pc} + +08000c22 : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000c22: b580 push {r7, lr} + 8000c24: b086 sub sp, #24 + 8000c26: af00 add r7, sp, #0 + 8000c28: 4603 mov r3, r0 + 8000c2a: 60b9 str r1, [r7, #8] + 8000c2c: 607a str r2, [r7, #4] + 8000c2e: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000c30: 2300 movs r3, #0 + 8000c32: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000c34: f7ff ff5e bl 8000af4 <__NVIC_GetPriorityGrouping> + 8000c38: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000c3a: 687a ldr r2, [r7, #4] + 8000c3c: 68b9 ldr r1, [r7, #8] + 8000c3e: 6978 ldr r0, [r7, #20] + 8000c40: f7ff ff90 bl 8000b64 + 8000c44: 4602 mov r2, r0 + 8000c46: f997 300f ldrsb.w r3, [r7, #15] + 8000c4a: 4611 mov r1, r2 + 8000c4c: 4618 mov r0, r3 + 8000c4e: f7ff ff5f bl 8000b10 <__NVIC_SetPriority> +} + 8000c52: bf00 nop + 8000c54: 3718 adds r7, #24 + 8000c56: 46bd mov sp, r7 + 8000c58: bd80 pop {r7, pc} + +08000c5a : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000c5a: b580 push {r7, lr} + 8000c5c: b082 sub sp, #8 + 8000c5e: af00 add r7, sp, #0 + 8000c60: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000c62: 6878 ldr r0, [r7, #4] + 8000c64: f7ff ffb0 bl 8000bc8 + 8000c68: 4603 mov r3, r0 +} + 8000c6a: 4618 mov r0, r3 + 8000c6c: 3708 adds r7, #8 + 8000c6e: 46bd mov sp, r7 + 8000c70: bd80 pop {r7, pc} + ... + +08000c74 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000c74: b480 push {r7} + 8000c76: b087 sub sp, #28 + 8000c78: af00 add r7, sp, #0 + 8000c7a: 6078 str r0, [r7, #4] + 8000c7c: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000c7e: 2300 movs r3, #0 + 8000c80: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000c82: 2300 movs r3, #0 + 8000c84: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8000c86: 2300 movs r3, #0 + 8000c88: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8000c8a: e160 b.n 8000f4e + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8000c8c: 683b ldr r3, [r7, #0] + 8000c8e: 681a ldr r2, [r3, #0] + 8000c90: 2101 movs r1, #1 + 8000c92: 697b ldr r3, [r7, #20] + 8000c94: fa01 f303 lsl.w r3, r1, r3 + 8000c98: 4013 ands r3, r2 + 8000c9a: 60fb str r3, [r7, #12] + + if (iocurrent) + 8000c9c: 68fb ldr r3, [r7, #12] + 8000c9e: 2b00 cmp r3, #0 + 8000ca0: f000 8152 beq.w 8000f48 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000ca4: 683b ldr r3, [r7, #0] + 8000ca6: 685b ldr r3, [r3, #4] + 8000ca8: f003 0303 and.w r3, r3, #3 + 8000cac: 2b01 cmp r3, #1 + 8000cae: d005 beq.n 8000cbc + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8000cb0: 683b ldr r3, [r7, #0] + 8000cb2: 685b ldr r3, [r3, #4] + 8000cb4: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000cb8: 2b02 cmp r3, #2 + 8000cba: d130 bne.n 8000d1e + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8000cbc: 687b ldr r3, [r7, #4] + 8000cbe: 689b ldr r3, [r3, #8] + 8000cc0: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 8000cc2: 697b ldr r3, [r7, #20] + 8000cc4: 005b lsls r3, r3, #1 + 8000cc6: 2203 movs r2, #3 + 8000cc8: fa02 f303 lsl.w r3, r2, r3 + 8000ccc: 43db mvns r3, r3 + 8000cce: 693a ldr r2, [r7, #16] + 8000cd0: 4013 ands r3, r2 + 8000cd2: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8000cd4: 683b ldr r3, [r7, #0] + 8000cd6: 68da ldr r2, [r3, #12] + 8000cd8: 697b ldr r3, [r7, #20] + 8000cda: 005b lsls r3, r3, #1 + 8000cdc: fa02 f303 lsl.w r3, r2, r3 + 8000ce0: 693a ldr r2, [r7, #16] + 8000ce2: 4313 orrs r3, r2 + 8000ce4: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8000ce6: 687b ldr r3, [r7, #4] + 8000ce8: 693a ldr r2, [r7, #16] + 8000cea: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8000cec: 687b ldr r3, [r7, #4] + 8000cee: 685b ldr r3, [r3, #4] + 8000cf0: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 8000cf2: 2201 movs r2, #1 + 8000cf4: 697b ldr r3, [r7, #20] + 8000cf6: fa02 f303 lsl.w r3, r2, r3 + 8000cfa: 43db mvns r3, r3 + 8000cfc: 693a ldr r2, [r7, #16] + 8000cfe: 4013 ands r3, r2 + 8000d00: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8000d02: 683b ldr r3, [r7, #0] + 8000d04: 685b ldr r3, [r3, #4] + 8000d06: 091b lsrs r3, r3, #4 + 8000d08: f003 0201 and.w r2, r3, #1 + 8000d0c: 697b ldr r3, [r7, #20] + 8000d0e: fa02 f303 lsl.w r3, r2, r3 + 8000d12: 693a ldr r2, [r7, #16] + 8000d14: 4313 orrs r3, r2 + 8000d16: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8000d18: 687b ldr r3, [r7, #4] + 8000d1a: 693a ldr r2, [r7, #16] + 8000d1c: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8000d1e: 683b ldr r3, [r7, #0] + 8000d20: 685b ldr r3, [r3, #4] + 8000d22: f003 0303 and.w r3, r3, #3 + 8000d26: 2b03 cmp r3, #3 + 8000d28: d017 beq.n 8000d5a + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8000d2a: 687b ldr r3, [r7, #4] + 8000d2c: 68db ldr r3, [r3, #12] + 8000d2e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 8000d30: 697b ldr r3, [r7, #20] + 8000d32: 005b lsls r3, r3, #1 + 8000d34: 2203 movs r2, #3 + 8000d36: fa02 f303 lsl.w r3, r2, r3 + 8000d3a: 43db mvns r3, r3 + 8000d3c: 693a ldr r2, [r7, #16] + 8000d3e: 4013 ands r3, r2 + 8000d40: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 8000d42: 683b ldr r3, [r7, #0] + 8000d44: 689a ldr r2, [r3, #8] + 8000d46: 697b ldr r3, [r7, #20] + 8000d48: 005b lsls r3, r3, #1 + 8000d4a: fa02 f303 lsl.w r3, r2, r3 + 8000d4e: 693a ldr r2, [r7, #16] + 8000d50: 4313 orrs r3, r2 + 8000d52: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8000d54: 687b ldr r3, [r7, #4] + 8000d56: 693a ldr r2, [r7, #16] + 8000d58: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8000d5a: 683b ldr r3, [r7, #0] + 8000d5c: 685b ldr r3, [r3, #4] + 8000d5e: f003 0303 and.w r3, r3, #3 + 8000d62: 2b02 cmp r3, #2 + 8000d64: d123 bne.n 8000dae + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 8000d66: 697b ldr r3, [r7, #20] + 8000d68: 08da lsrs r2, r3, #3 + 8000d6a: 687b ldr r3, [r7, #4] + 8000d6c: 3208 adds r2, #8 + 8000d6e: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000d72: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 8000d74: 697b ldr r3, [r7, #20] + 8000d76: f003 0307 and.w r3, r3, #7 + 8000d7a: 009b lsls r3, r3, #2 + 8000d7c: 220f movs r2, #15 + 8000d7e: fa02 f303 lsl.w r3, r2, r3 + 8000d82: 43db mvns r3, r3 + 8000d84: 693a ldr r2, [r7, #16] + 8000d86: 4013 ands r3, r2 + 8000d88: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8000d8a: 683b ldr r3, [r7, #0] + 8000d8c: 691a ldr r2, [r3, #16] + 8000d8e: 697b ldr r3, [r7, #20] + 8000d90: f003 0307 and.w r3, r3, #7 + 8000d94: 009b lsls r3, r3, #2 + 8000d96: fa02 f303 lsl.w r3, r2, r3 + 8000d9a: 693a ldr r2, [r7, #16] + 8000d9c: 4313 orrs r3, r2 + 8000d9e: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8000da0: 697b ldr r3, [r7, #20] + 8000da2: 08da lsrs r2, r3, #3 + 8000da4: 687b ldr r3, [r7, #4] + 8000da6: 3208 adds r2, #8 + 8000da8: 6939 ldr r1, [r7, #16] + 8000daa: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8000dae: 687b ldr r3, [r7, #4] + 8000db0: 681b ldr r3, [r3, #0] + 8000db2: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8000db4: 697b ldr r3, [r7, #20] + 8000db6: 005b lsls r3, r3, #1 + 8000db8: 2203 movs r2, #3 + 8000dba: fa02 f303 lsl.w r3, r2, r3 + 8000dbe: 43db mvns r3, r3 + 8000dc0: 693a ldr r2, [r7, #16] + 8000dc2: 4013 ands r3, r2 + 8000dc4: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8000dc6: 683b ldr r3, [r7, #0] + 8000dc8: 685b ldr r3, [r3, #4] + 8000dca: f003 0203 and.w r2, r3, #3 + 8000dce: 697b ldr r3, [r7, #20] + 8000dd0: 005b lsls r3, r3, #1 + 8000dd2: fa02 f303 lsl.w r3, r2, r3 + 8000dd6: 693a ldr r2, [r7, #16] + 8000dd8: 4313 orrs r3, r2 + 8000dda: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8000ddc: 687b ldr r3, [r7, #4] + 8000dde: 693a ldr r2, [r7, #16] + 8000de0: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 8000de2: 683b ldr r3, [r7, #0] + 8000de4: 685b ldr r3, [r3, #4] + 8000de6: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8000dea: 2b00 cmp r3, #0 + 8000dec: f000 80ac beq.w 8000f48 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000df0: 4b5e ldr r3, [pc, #376] @ (8000f6c ) + 8000df2: 6a1b ldr r3, [r3, #32] + 8000df4: 4a5d ldr r2, [pc, #372] @ (8000f6c ) + 8000df6: f043 0301 orr.w r3, r3, #1 + 8000dfa: 6213 str r3, [r2, #32] + 8000dfc: 4b5b ldr r3, [pc, #364] @ (8000f6c ) + 8000dfe: 6a1b ldr r3, [r3, #32] + 8000e00: f003 0301 and.w r3, r3, #1 + 8000e04: 60bb str r3, [r7, #8] + 8000e06: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8000e08: 4a59 ldr r2, [pc, #356] @ (8000f70 ) + 8000e0a: 697b ldr r3, [r7, #20] + 8000e0c: 089b lsrs r3, r3, #2 + 8000e0e: 3302 adds r3, #2 + 8000e10: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000e14: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8000e16: 697b ldr r3, [r7, #20] + 8000e18: f003 0303 and.w r3, r3, #3 + 8000e1c: 009b lsls r3, r3, #2 + 8000e1e: 220f movs r2, #15 + 8000e20: fa02 f303 lsl.w r3, r2, r3 + 8000e24: 43db mvns r3, r3 + 8000e26: 693a ldr r2, [r7, #16] + 8000e28: 4013 ands r3, r2 + 8000e2a: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8000e2c: 687b ldr r3, [r7, #4] + 8000e2e: 4a51 ldr r2, [pc, #324] @ (8000f74 ) + 8000e30: 4293 cmp r3, r2 + 8000e32: d025 beq.n 8000e80 + 8000e34: 687b ldr r3, [r7, #4] + 8000e36: 4a50 ldr r2, [pc, #320] @ (8000f78 ) + 8000e38: 4293 cmp r3, r2 + 8000e3a: d01f beq.n 8000e7c + 8000e3c: 687b ldr r3, [r7, #4] + 8000e3e: 4a4f ldr r2, [pc, #316] @ (8000f7c ) + 8000e40: 4293 cmp r3, r2 + 8000e42: d019 beq.n 8000e78 + 8000e44: 687b ldr r3, [r7, #4] + 8000e46: 4a4e ldr r2, [pc, #312] @ (8000f80 ) + 8000e48: 4293 cmp r3, r2 + 8000e4a: d013 beq.n 8000e74 + 8000e4c: 687b ldr r3, [r7, #4] + 8000e4e: 4a4d ldr r2, [pc, #308] @ (8000f84 ) + 8000e50: 4293 cmp r3, r2 + 8000e52: d00d beq.n 8000e70 + 8000e54: 687b ldr r3, [r7, #4] + 8000e56: 4a4c ldr r2, [pc, #304] @ (8000f88 ) + 8000e58: 4293 cmp r3, r2 + 8000e5a: d007 beq.n 8000e6c + 8000e5c: 687b ldr r3, [r7, #4] + 8000e5e: 4a4b ldr r2, [pc, #300] @ (8000f8c ) + 8000e60: 4293 cmp r3, r2 + 8000e62: d101 bne.n 8000e68 + 8000e64: 2306 movs r3, #6 + 8000e66: e00c b.n 8000e82 + 8000e68: 2307 movs r3, #7 + 8000e6a: e00a b.n 8000e82 + 8000e6c: 2305 movs r3, #5 + 8000e6e: e008 b.n 8000e82 + 8000e70: 2304 movs r3, #4 + 8000e72: e006 b.n 8000e82 + 8000e74: 2303 movs r3, #3 + 8000e76: e004 b.n 8000e82 + 8000e78: 2302 movs r3, #2 + 8000e7a: e002 b.n 8000e82 + 8000e7c: 2301 movs r3, #1 + 8000e7e: e000 b.n 8000e82 + 8000e80: 2300 movs r3, #0 + 8000e82: 697a ldr r2, [r7, #20] + 8000e84: f002 0203 and.w r2, r2, #3 + 8000e88: 0092 lsls r2, r2, #2 + 8000e8a: 4093 lsls r3, r2 + 8000e8c: 693a ldr r2, [r7, #16] + 8000e8e: 4313 orrs r3, r2 + 8000e90: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 8000e92: 4937 ldr r1, [pc, #220] @ (8000f70 ) + 8000e94: 697b ldr r3, [r7, #20] + 8000e96: 089b lsrs r3, r3, #2 + 8000e98: 3302 adds r3, #2 + 8000e9a: 693a ldr r2, [r7, #16] + 8000e9c: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 8000ea0: 4b3b ldr r3, [pc, #236] @ (8000f90 ) + 8000ea2: 689b ldr r3, [r3, #8] + 8000ea4: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000ea6: 68fb ldr r3, [r7, #12] + 8000ea8: 43db mvns r3, r3 + 8000eaa: 693a ldr r2, [r7, #16] + 8000eac: 4013 ands r3, r2 + 8000eae: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 8000eb0: 683b ldr r3, [r7, #0] + 8000eb2: 685b ldr r3, [r3, #4] + 8000eb4: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8000eb8: 2b00 cmp r3, #0 + 8000eba: d003 beq.n 8000ec4 + { + SET_BIT(temp, iocurrent); + 8000ebc: 693a ldr r2, [r7, #16] + 8000ebe: 68fb ldr r3, [r7, #12] + 8000ec0: 4313 orrs r3, r2 + 8000ec2: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8000ec4: 4a32 ldr r2, [pc, #200] @ (8000f90 ) + 8000ec6: 693b ldr r3, [r7, #16] + 8000ec8: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8000eca: 4b31 ldr r3, [pc, #196] @ (8000f90 ) + 8000ecc: 68db ldr r3, [r3, #12] + 8000ece: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000ed0: 68fb ldr r3, [r7, #12] + 8000ed2: 43db mvns r3, r3 + 8000ed4: 693a ldr r2, [r7, #16] + 8000ed6: 4013 ands r3, r2 + 8000ed8: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8000eda: 683b ldr r3, [r7, #0] + 8000edc: 685b ldr r3, [r3, #4] + 8000ede: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8000ee2: 2b00 cmp r3, #0 + 8000ee4: d003 beq.n 8000eee + { + SET_BIT(temp, iocurrent); + 8000ee6: 693a ldr r2, [r7, #16] + 8000ee8: 68fb ldr r3, [r7, #12] + 8000eea: 4313 orrs r3, r2 + 8000eec: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 8000eee: 4a28 ldr r2, [pc, #160] @ (8000f90 ) + 8000ef0: 693b ldr r3, [r7, #16] + 8000ef2: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8000ef4: 4b26 ldr r3, [pc, #152] @ (8000f90 ) + 8000ef6: 685b ldr r3, [r3, #4] + 8000ef8: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000efa: 68fb ldr r3, [r7, #12] + 8000efc: 43db mvns r3, r3 + 8000efe: 693a ldr r2, [r7, #16] + 8000f00: 4013 ands r3, r2 + 8000f02: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8000f04: 683b ldr r3, [r7, #0] + 8000f06: 685b ldr r3, [r3, #4] + 8000f08: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8000f0c: 2b00 cmp r3, #0 + 8000f0e: d003 beq.n 8000f18 + { + SET_BIT(temp, iocurrent); + 8000f10: 693a ldr r2, [r7, #16] + 8000f12: 68fb ldr r3, [r7, #12] + 8000f14: 4313 orrs r3, r2 + 8000f16: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8000f18: 4a1d ldr r2, [pc, #116] @ (8000f90 ) + 8000f1a: 693b ldr r3, [r7, #16] + 8000f1c: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 8000f1e: 4b1c ldr r3, [pc, #112] @ (8000f90 ) + 8000f20: 681b ldr r3, [r3, #0] + 8000f22: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000f24: 68fb ldr r3, [r7, #12] + 8000f26: 43db mvns r3, r3 + 8000f28: 693a ldr r2, [r7, #16] + 8000f2a: 4013 ands r3, r2 + 8000f2c: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 8000f2e: 683b ldr r3, [r7, #0] + 8000f30: 685b ldr r3, [r3, #4] + 8000f32: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8000f36: 2b00 cmp r3, #0 + 8000f38: d003 beq.n 8000f42 + { + SET_BIT(temp, iocurrent); + 8000f3a: 693a ldr r2, [r7, #16] + 8000f3c: 68fb ldr r3, [r7, #12] + 8000f3e: 4313 orrs r3, r2 + 8000f40: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 8000f42: 4a13 ldr r2, [pc, #76] @ (8000f90 ) + 8000f44: 693b ldr r3, [r7, #16] + 8000f46: 6013 str r3, [r2, #0] + } + } + + position++; + 8000f48: 697b ldr r3, [r7, #20] + 8000f4a: 3301 adds r3, #1 + 8000f4c: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 8000f4e: 683b ldr r3, [r7, #0] + 8000f50: 681a ldr r2, [r3, #0] + 8000f52: 697b ldr r3, [r7, #20] + 8000f54: fa22 f303 lsr.w r3, r2, r3 + 8000f58: 2b00 cmp r3, #0 + 8000f5a: f47f ae97 bne.w 8000c8c + } +} + 8000f5e: bf00 nop + 8000f60: bf00 nop + 8000f62: 371c adds r7, #28 + 8000f64: 46bd mov sp, r7 + 8000f66: bc80 pop {r7} + 8000f68: 4770 bx lr + 8000f6a: bf00 nop + 8000f6c: 40023800 .word 0x40023800 + 8000f70: 40010000 .word 0x40010000 + 8000f74: 40020000 .word 0x40020000 + 8000f78: 40020400 .word 0x40020400 + 8000f7c: 40020800 .word 0x40020800 + 8000f80: 40020c00 .word 0x40020c00 + 8000f84: 40021000 .word 0x40021000 + 8000f88: 40021400 .word 0x40021400 + 8000f8c: 40021800 .word 0x40021800 + 8000f90: 40010400 .word 0x40010400 + +08000f94 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 8000f94: b480 push {r7} + 8000f96: b083 sub sp, #12 + 8000f98: af00 add r7, sp, #0 + 8000f9a: 6078 str r0, [r7, #4] + 8000f9c: 460b mov r3, r1 + 8000f9e: 807b strh r3, [r7, #2] + 8000fa0: 4613 mov r3, r2 + 8000fa2: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8000fa4: 787b ldrb r3, [r7, #1] + 8000fa6: 2b00 cmp r3, #0 + 8000fa8: d003 beq.n 8000fb2 + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8000faa: 887a ldrh r2, [r7, #2] + 8000fac: 687b ldr r3, [r7, #4] + 8000fae: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8000fb0: e003 b.n 8000fba + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 8000fb2: 887b ldrh r3, [r7, #2] + 8000fb4: 041a lsls r2, r3, #16 + 8000fb6: 687b ldr r3, [r7, #4] + 8000fb8: 619a str r2, [r3, #24] +} + 8000fba: bf00 nop + 8000fbc: 370c adds r7, #12 + 8000fbe: 46bd mov sp, r7 + 8000fc0: bc80 pop {r7} + 8000fc2: 4770 bx lr + +08000fc4 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8000fc4: b580 push {r7, lr} + 8000fc6: b088 sub sp, #32 + 8000fc8: af00 add r7, sp, #0 + 8000fca: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8000fcc: 687b ldr r3, [r7, #4] + 8000fce: 2b00 cmp r3, #0 + 8000fd0: d101 bne.n 8000fd6 + { + return HAL_ERROR; + 8000fd2: 2301 movs r3, #1 + 8000fd4: e31d b.n 8001612 + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8000fd6: 4b94 ldr r3, [pc, #592] @ (8001228 ) + 8000fd8: 689b ldr r3, [r3, #8] + 8000fda: f003 030c and.w r3, r3, #12 + 8000fde: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 8000fe0: 4b91 ldr r3, [pc, #580] @ (8001228 ) + 8000fe2: 689b ldr r3, [r3, #8] + 8000fe4: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8000fe8: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8000fea: 687b ldr r3, [r7, #4] + 8000fec: 681b ldr r3, [r3, #0] + 8000fee: f003 0301 and.w r3, r3, #1 + 8000ff2: 2b00 cmp r3, #0 + 8000ff4: d07b beq.n 80010ee + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 8000ff6: 69bb ldr r3, [r7, #24] + 8000ff8: 2b08 cmp r3, #8 + 8000ffa: d006 beq.n 800100a + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8000ffc: 69bb ldr r3, [r7, #24] + 8000ffe: 2b0c cmp r3, #12 + 8001000: d10f bne.n 8001022 + 8001002: 697b ldr r3, [r7, #20] + 8001004: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8001008: d10b bne.n 8001022 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 800100a: 4b87 ldr r3, [pc, #540] @ (8001228 ) + 800100c: 681b ldr r3, [r3, #0] + 800100e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001012: 2b00 cmp r3, #0 + 8001014: d06a beq.n 80010ec + 8001016: 687b ldr r3, [r7, #4] + 8001018: 685b ldr r3, [r3, #4] + 800101a: 2b00 cmp r3, #0 + 800101c: d166 bne.n 80010ec + { + return HAL_ERROR; + 800101e: 2301 movs r3, #1 + 8001020: e2f7 b.n 8001612 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 8001022: 687b ldr r3, [r7, #4] + 8001024: 685b ldr r3, [r3, #4] + 8001026: 2b01 cmp r3, #1 + 8001028: d106 bne.n 8001038 + 800102a: 4b7f ldr r3, [pc, #508] @ (8001228 ) + 800102c: 681b ldr r3, [r3, #0] + 800102e: 4a7e ldr r2, [pc, #504] @ (8001228 ) + 8001030: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001034: 6013 str r3, [r2, #0] + 8001036: e02d b.n 8001094 + 8001038: 687b ldr r3, [r7, #4] + 800103a: 685b ldr r3, [r3, #4] + 800103c: 2b00 cmp r3, #0 + 800103e: d10c bne.n 800105a + 8001040: 4b79 ldr r3, [pc, #484] @ (8001228 ) + 8001042: 681b ldr r3, [r3, #0] + 8001044: 4a78 ldr r2, [pc, #480] @ (8001228 ) + 8001046: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800104a: 6013 str r3, [r2, #0] + 800104c: 4b76 ldr r3, [pc, #472] @ (8001228 ) + 800104e: 681b ldr r3, [r3, #0] + 8001050: 4a75 ldr r2, [pc, #468] @ (8001228 ) + 8001052: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001056: 6013 str r3, [r2, #0] + 8001058: e01c b.n 8001094 + 800105a: 687b ldr r3, [r7, #4] + 800105c: 685b ldr r3, [r3, #4] + 800105e: 2b05 cmp r3, #5 + 8001060: d10c bne.n 800107c + 8001062: 4b71 ldr r3, [pc, #452] @ (8001228 ) + 8001064: 681b ldr r3, [r3, #0] + 8001066: 4a70 ldr r2, [pc, #448] @ (8001228 ) + 8001068: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 800106c: 6013 str r3, [r2, #0] + 800106e: 4b6e ldr r3, [pc, #440] @ (8001228 ) + 8001070: 681b ldr r3, [r3, #0] + 8001072: 4a6d ldr r2, [pc, #436] @ (8001228 ) + 8001074: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001078: 6013 str r3, [r2, #0] + 800107a: e00b b.n 8001094 + 800107c: 4b6a ldr r3, [pc, #424] @ (8001228 ) + 800107e: 681b ldr r3, [r3, #0] + 8001080: 4a69 ldr r2, [pc, #420] @ (8001228 ) + 8001082: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001086: 6013 str r3, [r2, #0] + 8001088: 4b67 ldr r3, [pc, #412] @ (8001228 ) + 800108a: 681b ldr r3, [r3, #0] + 800108c: 4a66 ldr r2, [pc, #408] @ (8001228 ) + 800108e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001092: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8001094: 687b ldr r3, [r7, #4] + 8001096: 685b ldr r3, [r3, #4] + 8001098: 2b00 cmp r3, #0 + 800109a: d013 beq.n 80010c4 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800109c: f7ff fcda bl 8000a54 + 80010a0: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80010a2: e008 b.n 80010b6 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 80010a4: f7ff fcd6 bl 8000a54 + 80010a8: 4602 mov r2, r0 + 80010aa: 693b ldr r3, [r7, #16] + 80010ac: 1ad3 subs r3, r2, r3 + 80010ae: 2b64 cmp r3, #100 @ 0x64 + 80010b0: d901 bls.n 80010b6 + { + return HAL_TIMEOUT; + 80010b2: 2303 movs r3, #3 + 80010b4: e2ad b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80010b6: 4b5c ldr r3, [pc, #368] @ (8001228 ) + 80010b8: 681b ldr r3, [r3, #0] + 80010ba: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80010be: 2b00 cmp r3, #0 + 80010c0: d0f0 beq.n 80010a4 + 80010c2: e014 b.n 80010ee + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80010c4: f7ff fcc6 bl 8000a54 + 80010c8: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80010ca: e008 b.n 80010de + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 80010cc: f7ff fcc2 bl 8000a54 + 80010d0: 4602 mov r2, r0 + 80010d2: 693b ldr r3, [r7, #16] + 80010d4: 1ad3 subs r3, r2, r3 + 80010d6: 2b64 cmp r3, #100 @ 0x64 + 80010d8: d901 bls.n 80010de + { + return HAL_TIMEOUT; + 80010da: 2303 movs r3, #3 + 80010dc: e299 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80010de: 4b52 ldr r3, [pc, #328] @ (8001228 ) + 80010e0: 681b ldr r3, [r3, #0] + 80010e2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80010e6: 2b00 cmp r3, #0 + 80010e8: d1f0 bne.n 80010cc + 80010ea: e000 b.n 80010ee + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80010ec: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80010ee: 687b ldr r3, [r7, #4] + 80010f0: 681b ldr r3, [r3, #0] + 80010f2: f003 0302 and.w r3, r3, #2 + 80010f6: 2b00 cmp r3, #0 + 80010f8: d05a beq.n 80011b0 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 80010fa: 69bb ldr r3, [r7, #24] + 80010fc: 2b04 cmp r3, #4 + 80010fe: d005 beq.n 800110c + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 8001100: 69bb ldr r3, [r7, #24] + 8001102: 2b0c cmp r3, #12 + 8001104: d119 bne.n 800113a + 8001106: 697b ldr r3, [r7, #20] + 8001108: 2b00 cmp r3, #0 + 800110a: d116 bne.n 800113a + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 800110c: 4b46 ldr r3, [pc, #280] @ (8001228 ) + 800110e: 681b ldr r3, [r3, #0] + 8001110: f003 0302 and.w r3, r3, #2 + 8001114: 2b00 cmp r3, #0 + 8001116: d005 beq.n 8001124 + 8001118: 687b ldr r3, [r7, #4] + 800111a: 68db ldr r3, [r3, #12] + 800111c: 2b01 cmp r3, #1 + 800111e: d001 beq.n 8001124 + { + return HAL_ERROR; + 8001120: 2301 movs r3, #1 + 8001122: e276 b.n 8001612 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001124: 4b40 ldr r3, [pc, #256] @ (8001228 ) + 8001126: 685b ldr r3, [r3, #4] + 8001128: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 800112c: 687b ldr r3, [r7, #4] + 800112e: 691b ldr r3, [r3, #16] + 8001130: 021b lsls r3, r3, #8 + 8001132: 493d ldr r1, [pc, #244] @ (8001228 ) + 8001134: 4313 orrs r3, r2 + 8001136: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001138: e03a b.n 80011b0 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 800113a: 687b ldr r3, [r7, #4] + 800113c: 68db ldr r3, [r3, #12] + 800113e: 2b00 cmp r3, #0 + 8001140: d020 beq.n 8001184 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 8001142: 4b3a ldr r3, [pc, #232] @ (800122c ) + 8001144: 2201 movs r2, #1 + 8001146: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001148: f7ff fc84 bl 8000a54 + 800114c: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800114e: e008 b.n 8001162 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001150: f7ff fc80 bl 8000a54 + 8001154: 4602 mov r2, r0 + 8001156: 693b ldr r3, [r7, #16] + 8001158: 1ad3 subs r3, r2, r3 + 800115a: 2b02 cmp r3, #2 + 800115c: d901 bls.n 8001162 + { + return HAL_TIMEOUT; + 800115e: 2303 movs r3, #3 + 8001160: e257 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001162: 4b31 ldr r3, [pc, #196] @ (8001228 ) + 8001164: 681b ldr r3, [r3, #0] + 8001166: f003 0302 and.w r3, r3, #2 + 800116a: 2b00 cmp r3, #0 + 800116c: d0f0 beq.n 8001150 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800116e: 4b2e ldr r3, [pc, #184] @ (8001228 ) + 8001170: 685b ldr r3, [r3, #4] + 8001172: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001176: 687b ldr r3, [r7, #4] + 8001178: 691b ldr r3, [r3, #16] + 800117a: 021b lsls r3, r3, #8 + 800117c: 492a ldr r1, [pc, #168] @ (8001228 ) + 800117e: 4313 orrs r3, r2 + 8001180: 604b str r3, [r1, #4] + 8001182: e015 b.n 80011b0 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8001184: 4b29 ldr r3, [pc, #164] @ (800122c ) + 8001186: 2200 movs r2, #0 + 8001188: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800118a: f7ff fc63 bl 8000a54 + 800118e: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001190: e008 b.n 80011a4 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001192: f7ff fc5f bl 8000a54 + 8001196: 4602 mov r2, r0 + 8001198: 693b ldr r3, [r7, #16] + 800119a: 1ad3 subs r3, r2, r3 + 800119c: 2b02 cmp r3, #2 + 800119e: d901 bls.n 80011a4 + { + return HAL_TIMEOUT; + 80011a0: 2303 movs r3, #3 + 80011a2: e236 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 80011a4: 4b20 ldr r3, [pc, #128] @ (8001228 ) + 80011a6: 681b ldr r3, [r3, #0] + 80011a8: f003 0302 and.w r3, r3, #2 + 80011ac: 2b00 cmp r3, #0 + 80011ae: d1f0 bne.n 8001192 + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 80011b0: 687b ldr r3, [r7, #4] + 80011b2: 681b ldr r3, [r3, #0] + 80011b4: f003 0310 and.w r3, r3, #16 + 80011b8: 2b00 cmp r3, #0 + 80011ba: f000 80b8 beq.w 800132e + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 80011be: 69bb ldr r3, [r7, #24] + 80011c0: 2b00 cmp r3, #0 + 80011c2: d170 bne.n 80012a6 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 80011c4: 4b18 ldr r3, [pc, #96] @ (8001228 ) + 80011c6: 681b ldr r3, [r3, #0] + 80011c8: f403 7300 and.w r3, r3, #512 @ 0x200 + 80011cc: 2b00 cmp r3, #0 + 80011ce: d005 beq.n 80011dc + 80011d0: 687b ldr r3, [r7, #4] + 80011d2: 699b ldr r3, [r3, #24] + 80011d4: 2b00 cmp r3, #0 + 80011d6: d101 bne.n 80011dc + { + return HAL_ERROR; + 80011d8: 2301 movs r3, #1 + 80011da: e21a b.n 8001612 + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 80011dc: 687b ldr r3, [r7, #4] + 80011de: 6a1a ldr r2, [r3, #32] + 80011e0: 4b11 ldr r3, [pc, #68] @ (8001228 ) + 80011e2: 685b ldr r3, [r3, #4] + 80011e4: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80011e8: 429a cmp r2, r3 + 80011ea: d921 bls.n 8001230 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80011ec: 687b ldr r3, [r7, #4] + 80011ee: 6a1b ldr r3, [r3, #32] + 80011f0: 4618 mov r0, r3 + 80011f2: f000 fc09 bl 8001a08 + 80011f6: 4603 mov r3, r0 + 80011f8: 2b00 cmp r3, #0 + 80011fa: d001 beq.n 8001200 + { + return HAL_ERROR; + 80011fc: 2301 movs r3, #1 + 80011fe: e208 b.n 8001612 + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001200: 4b09 ldr r3, [pc, #36] @ (8001228 ) + 8001202: 685b ldr r3, [r3, #4] + 8001204: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001208: 687b ldr r3, [r7, #4] + 800120a: 6a1b ldr r3, [r3, #32] + 800120c: 4906 ldr r1, [pc, #24] @ (8001228 ) + 800120e: 4313 orrs r3, r2 + 8001210: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001212: 4b05 ldr r3, [pc, #20] @ (8001228 ) + 8001214: 685b ldr r3, [r3, #4] + 8001216: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 800121a: 687b ldr r3, [r7, #4] + 800121c: 69db ldr r3, [r3, #28] + 800121e: 061b lsls r3, r3, #24 + 8001220: 4901 ldr r1, [pc, #4] @ (8001228 ) + 8001222: 4313 orrs r3, r2 + 8001224: 604b str r3, [r1, #4] + 8001226: e020 b.n 800126a + 8001228: 40023800 .word 0x40023800 + 800122c: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001230: 4b99 ldr r3, [pc, #612] @ (8001498 ) + 8001232: 685b ldr r3, [r3, #4] + 8001234: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001238: 687b ldr r3, [r7, #4] + 800123a: 6a1b ldr r3, [r3, #32] + 800123c: 4996 ldr r1, [pc, #600] @ (8001498 ) + 800123e: 4313 orrs r3, r2 + 8001240: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001242: 4b95 ldr r3, [pc, #596] @ (8001498 ) + 8001244: 685b ldr r3, [r3, #4] + 8001246: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 800124a: 687b ldr r3, [r7, #4] + 800124c: 69db ldr r3, [r3, #28] + 800124e: 061b lsls r3, r3, #24 + 8001250: 4991 ldr r1, [pc, #580] @ (8001498 ) + 8001252: 4313 orrs r3, r2 + 8001254: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001256: 687b ldr r3, [r7, #4] + 8001258: 6a1b ldr r3, [r3, #32] + 800125a: 4618 mov r0, r3 + 800125c: f000 fbd4 bl 8001a08 + 8001260: 4603 mov r3, r0 + 8001262: 2b00 cmp r3, #0 + 8001264: d001 beq.n 800126a + { + return HAL_ERROR; + 8001266: 2301 movs r3, #1 + 8001268: e1d3 b.n 8001612 + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800126a: 687b ldr r3, [r7, #4] + 800126c: 6a1b ldr r3, [r3, #32] + 800126e: 0b5b lsrs r3, r3, #13 + 8001270: 3301 adds r3, #1 + 8001272: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001276: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 800127a: 4a87 ldr r2, [pc, #540] @ (8001498 ) + 800127c: 6892 ldr r2, [r2, #8] + 800127e: 0912 lsrs r2, r2, #4 + 8001280: f002 020f and.w r2, r2, #15 + 8001284: 4985 ldr r1, [pc, #532] @ (800149c ) + 8001286: 5c8a ldrb r2, [r1, r2] + 8001288: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800128a: 4a85 ldr r2, [pc, #532] @ (80014a0 ) + 800128c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 800128e: 4b85 ldr r3, [pc, #532] @ (80014a4 ) + 8001290: 681b ldr r3, [r3, #0] + 8001292: 4618 mov r0, r3 + 8001294: f7ff fb92 bl 80009bc + 8001298: 4603 mov r3, r0 + 800129a: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 800129c: 7bfb ldrb r3, [r7, #15] + 800129e: 2b00 cmp r3, #0 + 80012a0: d045 beq.n 800132e + { + return status; + 80012a2: 7bfb ldrb r3, [r7, #15] + 80012a4: e1b5 b.n 8001612 + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 80012a6: 687b ldr r3, [r7, #4] + 80012a8: 699b ldr r3, [r3, #24] + 80012aa: 2b00 cmp r3, #0 + 80012ac: d029 beq.n 8001302 + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 80012ae: 4b7e ldr r3, [pc, #504] @ (80014a8 ) + 80012b0: 2201 movs r2, #1 + 80012b2: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012b4: f7ff fbce bl 8000a54 + 80012b8: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80012ba: e008 b.n 80012ce + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80012bc: f7ff fbca bl 8000a54 + 80012c0: 4602 mov r2, r0 + 80012c2: 693b ldr r3, [r7, #16] + 80012c4: 1ad3 subs r3, r2, r3 + 80012c6: 2b02 cmp r3, #2 + 80012c8: d901 bls.n 80012ce + { + return HAL_TIMEOUT; + 80012ca: 2303 movs r3, #3 + 80012cc: e1a1 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80012ce: 4b72 ldr r3, [pc, #456] @ (8001498 ) + 80012d0: 681b ldr r3, [r3, #0] + 80012d2: f403 7300 and.w r3, r3, #512 @ 0x200 + 80012d6: 2b00 cmp r3, #0 + 80012d8: d0f0 beq.n 80012bc + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80012da: 4b6f ldr r3, [pc, #444] @ (8001498 ) + 80012dc: 685b ldr r3, [r3, #4] + 80012de: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80012e2: 687b ldr r3, [r7, #4] + 80012e4: 6a1b ldr r3, [r3, #32] + 80012e6: 496c ldr r1, [pc, #432] @ (8001498 ) + 80012e8: 4313 orrs r3, r2 + 80012ea: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80012ec: 4b6a ldr r3, [pc, #424] @ (8001498 ) + 80012ee: 685b ldr r3, [r3, #4] + 80012f0: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80012f4: 687b ldr r3, [r7, #4] + 80012f6: 69db ldr r3, [r3, #28] + 80012f8: 061b lsls r3, r3, #24 + 80012fa: 4967 ldr r1, [pc, #412] @ (8001498 ) + 80012fc: 4313 orrs r3, r2 + 80012fe: 604b str r3, [r1, #4] + 8001300: e015 b.n 800132e + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 8001302: 4b69 ldr r3, [pc, #420] @ (80014a8 ) + 8001304: 2200 movs r2, #0 + 8001306: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001308: f7ff fba4 bl 8000a54 + 800130c: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 800130e: e008 b.n 8001322 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001310: f7ff fba0 bl 8000a54 + 8001314: 4602 mov r2, r0 + 8001316: 693b ldr r3, [r7, #16] + 8001318: 1ad3 subs r3, r2, r3 + 800131a: 2b02 cmp r3, #2 + 800131c: d901 bls.n 8001322 + { + return HAL_TIMEOUT; + 800131e: 2303 movs r3, #3 + 8001320: e177 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 8001322: 4b5d ldr r3, [pc, #372] @ (8001498 ) + 8001324: 681b ldr r3, [r3, #0] + 8001326: f403 7300 and.w r3, r3, #512 @ 0x200 + 800132a: 2b00 cmp r3, #0 + 800132c: d1f0 bne.n 8001310 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 800132e: 687b ldr r3, [r7, #4] + 8001330: 681b ldr r3, [r3, #0] + 8001332: f003 0308 and.w r3, r3, #8 + 8001336: 2b00 cmp r3, #0 + 8001338: d030 beq.n 800139c + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 800133a: 687b ldr r3, [r7, #4] + 800133c: 695b ldr r3, [r3, #20] + 800133e: 2b00 cmp r3, #0 + 8001340: d016 beq.n 8001370 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8001342: 4b5a ldr r3, [pc, #360] @ (80014ac ) + 8001344: 2201 movs r2, #1 + 8001346: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001348: f7ff fb84 bl 8000a54 + 800134c: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800134e: e008 b.n 8001362 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001350: f7ff fb80 bl 8000a54 + 8001354: 4602 mov r2, r0 + 8001356: 693b ldr r3, [r7, #16] + 8001358: 1ad3 subs r3, r2, r3 + 800135a: 2b02 cmp r3, #2 + 800135c: d901 bls.n 8001362 + { + return HAL_TIMEOUT; + 800135e: 2303 movs r3, #3 + 8001360: e157 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001362: 4b4d ldr r3, [pc, #308] @ (8001498 ) + 8001364: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001366: f003 0302 and.w r3, r3, #2 + 800136a: 2b00 cmp r3, #0 + 800136c: d0f0 beq.n 8001350 + 800136e: e015 b.n 800139c + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001370: 4b4e ldr r3, [pc, #312] @ (80014ac ) + 8001372: 2200 movs r2, #0 + 8001374: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001376: f7ff fb6d bl 8000a54 + 800137a: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 800137c: e008 b.n 8001390 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800137e: f7ff fb69 bl 8000a54 + 8001382: 4602 mov r2, r0 + 8001384: 693b ldr r3, [r7, #16] + 8001386: 1ad3 subs r3, r2, r3 + 8001388: 2b02 cmp r3, #2 + 800138a: d901 bls.n 8001390 + { + return HAL_TIMEOUT; + 800138c: 2303 movs r3, #3 + 800138e: e140 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001390: 4b41 ldr r3, [pc, #260] @ (8001498 ) + 8001392: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001394: f003 0302 and.w r3, r3, #2 + 8001398: 2b00 cmp r3, #0 + 800139a: d1f0 bne.n 800137e + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 800139c: 687b ldr r3, [r7, #4] + 800139e: 681b ldr r3, [r3, #0] + 80013a0: f003 0304 and.w r3, r3, #4 + 80013a4: 2b00 cmp r3, #0 + 80013a6: f000 80b5 beq.w 8001514 + { + FlagStatus pwrclkchanged = RESET; + 80013aa: 2300 movs r3, #0 + 80013ac: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 80013ae: 4b3a ldr r3, [pc, #232] @ (8001498 ) + 80013b0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80013b2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80013b6: 2b00 cmp r3, #0 + 80013b8: d10d bne.n 80013d6 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80013ba: 4b37 ldr r3, [pc, #220] @ (8001498 ) + 80013bc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80013be: 4a36 ldr r2, [pc, #216] @ (8001498 ) + 80013c0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80013c4: 6253 str r3, [r2, #36] @ 0x24 + 80013c6: 4b34 ldr r3, [pc, #208] @ (8001498 ) + 80013c8: 6a5b ldr r3, [r3, #36] @ 0x24 + 80013ca: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80013ce: 60bb str r3, [r7, #8] + 80013d0: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 80013d2: 2301 movs r3, #1 + 80013d4: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80013d6: 4b36 ldr r3, [pc, #216] @ (80014b0 ) + 80013d8: 681b ldr r3, [r3, #0] + 80013da: f403 7380 and.w r3, r3, #256 @ 0x100 + 80013de: 2b00 cmp r3, #0 + 80013e0: d118 bne.n 8001414 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80013e2: 4b33 ldr r3, [pc, #204] @ (80014b0 ) + 80013e4: 681b ldr r3, [r3, #0] + 80013e6: 4a32 ldr r2, [pc, #200] @ (80014b0 ) + 80013e8: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80013ec: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80013ee: f7ff fb31 bl 8000a54 + 80013f2: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80013f4: e008 b.n 8001408 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80013f6: f7ff fb2d bl 8000a54 + 80013fa: 4602 mov r2, r0 + 80013fc: 693b ldr r3, [r7, #16] + 80013fe: 1ad3 subs r3, r2, r3 + 8001400: 2b64 cmp r3, #100 @ 0x64 + 8001402: d901 bls.n 8001408 + { + return HAL_TIMEOUT; + 8001404: 2303 movs r3, #3 + 8001406: e104 b.n 8001612 + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001408: 4b29 ldr r3, [pc, #164] @ (80014b0 ) + 800140a: 681b ldr r3, [r3, #0] + 800140c: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001410: 2b00 cmp r3, #0 + 8001412: d0f0 beq.n 80013f6 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8001414: 687b ldr r3, [r7, #4] + 8001416: 689b ldr r3, [r3, #8] + 8001418: 2b01 cmp r3, #1 + 800141a: d106 bne.n 800142a + 800141c: 4b1e ldr r3, [pc, #120] @ (8001498 ) + 800141e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001420: 4a1d ldr r2, [pc, #116] @ (8001498 ) + 8001422: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001426: 6353 str r3, [r2, #52] @ 0x34 + 8001428: e02d b.n 8001486 + 800142a: 687b ldr r3, [r7, #4] + 800142c: 689b ldr r3, [r3, #8] + 800142e: 2b00 cmp r3, #0 + 8001430: d10c bne.n 800144c + 8001432: 4b19 ldr r3, [pc, #100] @ (8001498 ) + 8001434: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001436: 4a18 ldr r2, [pc, #96] @ (8001498 ) + 8001438: f423 7380 bic.w r3, r3, #256 @ 0x100 + 800143c: 6353 str r3, [r2, #52] @ 0x34 + 800143e: 4b16 ldr r3, [pc, #88] @ (8001498 ) + 8001440: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001442: 4a15 ldr r2, [pc, #84] @ (8001498 ) + 8001444: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001448: 6353 str r3, [r2, #52] @ 0x34 + 800144a: e01c b.n 8001486 + 800144c: 687b ldr r3, [r7, #4] + 800144e: 689b ldr r3, [r3, #8] + 8001450: 2b05 cmp r3, #5 + 8001452: d10c bne.n 800146e + 8001454: 4b10 ldr r3, [pc, #64] @ (8001498 ) + 8001456: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001458: 4a0f ldr r2, [pc, #60] @ (8001498 ) + 800145a: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 800145e: 6353 str r3, [r2, #52] @ 0x34 + 8001460: 4b0d ldr r3, [pc, #52] @ (8001498 ) + 8001462: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001464: 4a0c ldr r2, [pc, #48] @ (8001498 ) + 8001466: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800146a: 6353 str r3, [r2, #52] @ 0x34 + 800146c: e00b b.n 8001486 + 800146e: 4b0a ldr r3, [pc, #40] @ (8001498 ) + 8001470: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001472: 4a09 ldr r2, [pc, #36] @ (8001498 ) + 8001474: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001478: 6353 str r3, [r2, #52] @ 0x34 + 800147a: 4b07 ldr r3, [pc, #28] @ (8001498 ) + 800147c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800147e: 4a06 ldr r2, [pc, #24] @ (8001498 ) + 8001480: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001484: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8001486: 687b ldr r3, [r7, #4] + 8001488: 689b ldr r3, [r3, #8] + 800148a: 2b00 cmp r3, #0 + 800148c: d024 beq.n 80014d8 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800148e: f7ff fae1 bl 8000a54 + 8001492: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001494: e019 b.n 80014ca + 8001496: bf00 nop + 8001498: 40023800 .word 0x40023800 + 800149c: 08002098 .word 0x08002098 + 80014a0: 20000000 .word 0x20000000 + 80014a4: 20000004 .word 0x20000004 + 80014a8: 42470020 .word 0x42470020 + 80014ac: 42470680 .word 0x42470680 + 80014b0: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80014b4: f7ff face bl 8000a54 + 80014b8: 4602 mov r2, r0 + 80014ba: 693b ldr r3, [r7, #16] + 80014bc: 1ad3 subs r3, r2, r3 + 80014be: f241 3288 movw r2, #5000 @ 0x1388 + 80014c2: 4293 cmp r3, r2 + 80014c4: d901 bls.n 80014ca + { + return HAL_TIMEOUT; + 80014c6: 2303 movs r3, #3 + 80014c8: e0a3 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 80014ca: 4b54 ldr r3, [pc, #336] @ (800161c ) + 80014cc: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014ce: f403 7300 and.w r3, r3, #512 @ 0x200 + 80014d2: 2b00 cmp r3, #0 + 80014d4: d0ee beq.n 80014b4 + 80014d6: e014 b.n 8001502 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80014d8: f7ff fabc bl 8000a54 + 80014dc: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80014de: e00a b.n 80014f6 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80014e0: f7ff fab8 bl 8000a54 + 80014e4: 4602 mov r2, r0 + 80014e6: 693b ldr r3, [r7, #16] + 80014e8: 1ad3 subs r3, r2, r3 + 80014ea: f241 3288 movw r2, #5000 @ 0x1388 + 80014ee: 4293 cmp r3, r2 + 80014f0: d901 bls.n 80014f6 + { + return HAL_TIMEOUT; + 80014f2: 2303 movs r3, #3 + 80014f4: e08d b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80014f6: 4b49 ldr r3, [pc, #292] @ (800161c ) + 80014f8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014fa: f403 7300 and.w r3, r3, #512 @ 0x200 + 80014fe: 2b00 cmp r3, #0 + 8001500: d1ee bne.n 80014e0 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 8001502: 7ffb ldrb r3, [r7, #31] + 8001504: 2b01 cmp r3, #1 + 8001506: d105 bne.n 8001514 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8001508: 4b44 ldr r3, [pc, #272] @ (800161c ) + 800150a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800150c: 4a43 ldr r2, [pc, #268] @ (800161c ) + 800150e: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001512: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 8001514: 687b ldr r3, [r7, #4] + 8001516: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001518: 2b00 cmp r3, #0 + 800151a: d079 beq.n 8001610 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800151c: 69bb ldr r3, [r7, #24] + 800151e: 2b0c cmp r3, #12 + 8001520: d056 beq.n 80015d0 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 8001522: 687b ldr r3, [r7, #4] + 8001524: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001526: 2b02 cmp r3, #2 + 8001528: d13b bne.n 80015a2 + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 800152a: 4b3d ldr r3, [pc, #244] @ (8001620 ) + 800152c: 2200 movs r2, #0 + 800152e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001530: f7ff fa90 bl 8000a54 + 8001534: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001536: e008 b.n 800154a + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001538: f7ff fa8c bl 8000a54 + 800153c: 4602 mov r2, r0 + 800153e: 693b ldr r3, [r7, #16] + 8001540: 1ad3 subs r3, r2, r3 + 8001542: 2b02 cmp r3, #2 + 8001544: d901 bls.n 800154a + { + return HAL_TIMEOUT; + 8001546: 2303 movs r3, #3 + 8001548: e063 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800154a: 4b34 ldr r3, [pc, #208] @ (800161c ) + 800154c: 681b ldr r3, [r3, #0] + 800154e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001552: 2b00 cmp r3, #0 + 8001554: d1f0 bne.n 8001538 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8001556: 4b31 ldr r3, [pc, #196] @ (800161c ) + 8001558: 689b ldr r3, [r3, #8] + 800155a: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 800155e: 687b ldr r3, [r7, #4] + 8001560: 6a99 ldr r1, [r3, #40] @ 0x28 + 8001562: 687b ldr r3, [r7, #4] + 8001564: 6adb ldr r3, [r3, #44] @ 0x2c + 8001566: 4319 orrs r1, r3 + 8001568: 687b ldr r3, [r7, #4] + 800156a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800156c: 430b orrs r3, r1 + 800156e: 492b ldr r1, [pc, #172] @ (800161c ) + 8001570: 4313 orrs r3, r2 + 8001572: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8001574: 4b2a ldr r3, [pc, #168] @ (8001620 ) + 8001576: 2201 movs r2, #1 + 8001578: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800157a: f7ff fa6b bl 8000a54 + 800157e: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001580: e008 b.n 8001594 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001582: f7ff fa67 bl 8000a54 + 8001586: 4602 mov r2, r0 + 8001588: 693b ldr r3, [r7, #16] + 800158a: 1ad3 subs r3, r2, r3 + 800158c: 2b02 cmp r3, #2 + 800158e: d901 bls.n 8001594 + { + return HAL_TIMEOUT; + 8001590: 2303 movs r3, #3 + 8001592: e03e b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001594: 4b21 ldr r3, [pc, #132] @ (800161c ) + 8001596: 681b ldr r3, [r3, #0] + 8001598: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800159c: 2b00 cmp r3, #0 + 800159e: d0f0 beq.n 8001582 + 80015a0: e036 b.n 8001610 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80015a2: 4b1f ldr r3, [pc, #124] @ (8001620 ) + 80015a4: 2200 movs r2, #0 + 80015a6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80015a8: f7ff fa54 bl 8000a54 + 80015ac: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80015ae: e008 b.n 80015c2 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80015b0: f7ff fa50 bl 8000a54 + 80015b4: 4602 mov r2, r0 + 80015b6: 693b ldr r3, [r7, #16] + 80015b8: 1ad3 subs r3, r2, r3 + 80015ba: 2b02 cmp r3, #2 + 80015bc: d901 bls.n 80015c2 + { + return HAL_TIMEOUT; + 80015be: 2303 movs r3, #3 + 80015c0: e027 b.n 8001612 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80015c2: 4b16 ldr r3, [pc, #88] @ (800161c ) + 80015c4: 681b ldr r3, [r3, #0] + 80015c6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80015ca: 2b00 cmp r3, #0 + 80015cc: d1f0 bne.n 80015b0 + 80015ce: e01f b.n 8001610 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 80015d0: 687b ldr r3, [r7, #4] + 80015d2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80015d4: 2b01 cmp r3, #1 + 80015d6: d101 bne.n 80015dc + { + return HAL_ERROR; + 80015d8: 2301 movs r3, #1 + 80015da: e01a b.n 8001612 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 80015dc: 4b0f ldr r3, [pc, #60] @ (800161c ) + 80015de: 689b ldr r3, [r3, #8] + 80015e0: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80015e2: 697b ldr r3, [r7, #20] + 80015e4: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 80015e8: 687b ldr r3, [r7, #4] + 80015ea: 6a9b ldr r3, [r3, #40] @ 0x28 + 80015ec: 429a cmp r2, r3 + 80015ee: d10d bne.n 800160c + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80015f0: 697b ldr r3, [r7, #20] + 80015f2: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 80015f6: 687b ldr r3, [r7, #4] + 80015f8: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80015fa: 429a cmp r2, r3 + 80015fc: d106 bne.n 800160c + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 80015fe: 697b ldr r3, [r7, #20] + 8001600: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 8001604: 687b ldr r3, [r7, #4] + 8001606: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001608: 429a cmp r2, r3 + 800160a: d001 beq.n 8001610 + { + return HAL_ERROR; + 800160c: 2301 movs r3, #1 + 800160e: e000 b.n 8001612 + } + } + } + } + + return HAL_OK; + 8001610: 2300 movs r3, #0 +} + 8001612: 4618 mov r0, r3 + 8001614: 3720 adds r7, #32 + 8001616: 46bd mov sp, r7 + 8001618: bd80 pop {r7, pc} + 800161a: bf00 nop + 800161c: 40023800 .word 0x40023800 + 8001620: 42470060 .word 0x42470060 + +08001624 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 8001624: b580 push {r7, lr} + 8001626: b084 sub sp, #16 + 8001628: af00 add r7, sp, #0 + 800162a: 6078 str r0, [r7, #4] + 800162c: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 800162e: 687b ldr r3, [r7, #4] + 8001630: 2b00 cmp r3, #0 + 8001632: d101 bne.n 8001638 + { + return HAL_ERROR; + 8001634: 2301 movs r3, #1 + 8001636: e11a b.n 800186e + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001638: 4b8f ldr r3, [pc, #572] @ (8001878 ) + 800163a: 681b ldr r3, [r3, #0] + 800163c: f003 0301 and.w r3, r3, #1 + 8001640: 683a ldr r2, [r7, #0] + 8001642: 429a cmp r2, r3 + 8001644: d919 bls.n 800167a + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001646: 683b ldr r3, [r7, #0] + 8001648: 2b01 cmp r3, #1 + 800164a: d105 bne.n 8001658 + 800164c: 4b8a ldr r3, [pc, #552] @ (8001878 ) + 800164e: 681b ldr r3, [r3, #0] + 8001650: 4a89 ldr r2, [pc, #548] @ (8001878 ) + 8001652: f043 0304 orr.w r3, r3, #4 + 8001656: 6013 str r3, [r2, #0] + 8001658: 4b87 ldr r3, [pc, #540] @ (8001878 ) + 800165a: 681b ldr r3, [r3, #0] + 800165c: f023 0201 bic.w r2, r3, #1 + 8001660: 4985 ldr r1, [pc, #532] @ (8001878 ) + 8001662: 683b ldr r3, [r7, #0] + 8001664: 4313 orrs r3, r2 + 8001666: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001668: 4b83 ldr r3, [pc, #524] @ (8001878 ) + 800166a: 681b ldr r3, [r3, #0] + 800166c: f003 0301 and.w r3, r3, #1 + 8001670: 683a ldr r2, [r7, #0] + 8001672: 429a cmp r2, r3 + 8001674: d001 beq.n 800167a + { + return HAL_ERROR; + 8001676: 2301 movs r3, #1 + 8001678: e0f9 b.n 800186e + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 800167a: 687b ldr r3, [r7, #4] + 800167c: 681b ldr r3, [r3, #0] + 800167e: f003 0302 and.w r3, r3, #2 + 8001682: 2b00 cmp r3, #0 + 8001684: d008 beq.n 8001698 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8001686: 4b7d ldr r3, [pc, #500] @ (800187c ) + 8001688: 689b ldr r3, [r3, #8] + 800168a: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 800168e: 687b ldr r3, [r7, #4] + 8001690: 689b ldr r3, [r3, #8] + 8001692: 497a ldr r1, [pc, #488] @ (800187c ) + 8001694: 4313 orrs r3, r2 + 8001696: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001698: 687b ldr r3, [r7, #4] + 800169a: 681b ldr r3, [r3, #0] + 800169c: f003 0301 and.w r3, r3, #1 + 80016a0: 2b00 cmp r3, #0 + 80016a2: f000 808e beq.w 80017c2 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80016a6: 687b ldr r3, [r7, #4] + 80016a8: 685b ldr r3, [r3, #4] + 80016aa: 2b02 cmp r3, #2 + 80016ac: d107 bne.n 80016be + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80016ae: 4b73 ldr r3, [pc, #460] @ (800187c ) + 80016b0: 681b ldr r3, [r3, #0] + 80016b2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80016b6: 2b00 cmp r3, #0 + 80016b8: d121 bne.n 80016fe + { + return HAL_ERROR; + 80016ba: 2301 movs r3, #1 + 80016bc: e0d7 b.n 800186e + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80016be: 687b ldr r3, [r7, #4] + 80016c0: 685b ldr r3, [r3, #4] + 80016c2: 2b03 cmp r3, #3 + 80016c4: d107 bne.n 80016d6 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 80016c6: 4b6d ldr r3, [pc, #436] @ (800187c ) + 80016c8: 681b ldr r3, [r3, #0] + 80016ca: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80016ce: 2b00 cmp r3, #0 + 80016d0: d115 bne.n 80016fe + { + return HAL_ERROR; + 80016d2: 2301 movs r3, #1 + 80016d4: e0cb b.n 800186e + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 80016d6: 687b ldr r3, [r7, #4] + 80016d8: 685b ldr r3, [r3, #4] + 80016da: 2b01 cmp r3, #1 + 80016dc: d107 bne.n 80016ee + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80016de: 4b67 ldr r3, [pc, #412] @ (800187c ) + 80016e0: 681b ldr r3, [r3, #0] + 80016e2: f003 0302 and.w r3, r3, #2 + 80016e6: 2b00 cmp r3, #0 + 80016e8: d109 bne.n 80016fe + { + return HAL_ERROR; + 80016ea: 2301 movs r3, #1 + 80016ec: e0bf b.n 800186e + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80016ee: 4b63 ldr r3, [pc, #396] @ (800187c ) + 80016f0: 681b ldr r3, [r3, #0] + 80016f2: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016f6: 2b00 cmp r3, #0 + 80016f8: d101 bne.n 80016fe + { + return HAL_ERROR; + 80016fa: 2301 movs r3, #1 + 80016fc: e0b7 b.n 800186e + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 80016fe: 4b5f ldr r3, [pc, #380] @ (800187c ) + 8001700: 689b ldr r3, [r3, #8] + 8001702: f023 0203 bic.w r2, r3, #3 + 8001706: 687b ldr r3, [r7, #4] + 8001708: 685b ldr r3, [r3, #4] + 800170a: 495c ldr r1, [pc, #368] @ (800187c ) + 800170c: 4313 orrs r3, r2 + 800170e: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001710: f7ff f9a0 bl 8000a54 + 8001714: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001716: 687b ldr r3, [r7, #4] + 8001718: 685b ldr r3, [r3, #4] + 800171a: 2b02 cmp r3, #2 + 800171c: d112 bne.n 8001744 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 800171e: e00a b.n 8001736 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001720: f7ff f998 bl 8000a54 + 8001724: 4602 mov r2, r0 + 8001726: 68fb ldr r3, [r7, #12] + 8001728: 1ad3 subs r3, r2, r3 + 800172a: f241 3288 movw r2, #5000 @ 0x1388 + 800172e: 4293 cmp r3, r2 + 8001730: d901 bls.n 8001736 + { + return HAL_TIMEOUT; + 8001732: 2303 movs r3, #3 + 8001734: e09b b.n 800186e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001736: 4b51 ldr r3, [pc, #324] @ (800187c ) + 8001738: 689b ldr r3, [r3, #8] + 800173a: f003 030c and.w r3, r3, #12 + 800173e: 2b08 cmp r3, #8 + 8001740: d1ee bne.n 8001720 + 8001742: e03e b.n 80017c2 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001744: 687b ldr r3, [r7, #4] + 8001746: 685b ldr r3, [r3, #4] + 8001748: 2b03 cmp r3, #3 + 800174a: d112 bne.n 8001772 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800174c: e00a b.n 8001764 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 800174e: f7ff f981 bl 8000a54 + 8001752: 4602 mov r2, r0 + 8001754: 68fb ldr r3, [r7, #12] + 8001756: 1ad3 subs r3, r2, r3 + 8001758: f241 3288 movw r2, #5000 @ 0x1388 + 800175c: 4293 cmp r3, r2 + 800175e: d901 bls.n 8001764 + { + return HAL_TIMEOUT; + 8001760: 2303 movs r3, #3 + 8001762: e084 b.n 800186e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001764: 4b45 ldr r3, [pc, #276] @ (800187c ) + 8001766: 689b ldr r3, [r3, #8] + 8001768: f003 030c and.w r3, r3, #12 + 800176c: 2b0c cmp r3, #12 + 800176e: d1ee bne.n 800174e + 8001770: e027 b.n 80017c2 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001772: 687b ldr r3, [r7, #4] + 8001774: 685b ldr r3, [r3, #4] + 8001776: 2b01 cmp r3, #1 + 8001778: d11d bne.n 80017b6 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 800177a: e00a b.n 8001792 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 800177c: f7ff f96a bl 8000a54 + 8001780: 4602 mov r2, r0 + 8001782: 68fb ldr r3, [r7, #12] + 8001784: 1ad3 subs r3, r2, r3 + 8001786: f241 3288 movw r2, #5000 @ 0x1388 + 800178a: 4293 cmp r3, r2 + 800178c: d901 bls.n 8001792 + { + return HAL_TIMEOUT; + 800178e: 2303 movs r3, #3 + 8001790: e06d b.n 800186e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001792: 4b3a ldr r3, [pc, #232] @ (800187c ) + 8001794: 689b ldr r3, [r3, #8] + 8001796: f003 030c and.w r3, r3, #12 + 800179a: 2b04 cmp r3, #4 + 800179c: d1ee bne.n 800177c + 800179e: e010 b.n 80017c2 + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80017a0: f7ff f958 bl 8000a54 + 80017a4: 4602 mov r2, r0 + 80017a6: 68fb ldr r3, [r7, #12] + 80017a8: 1ad3 subs r3, r2, r3 + 80017aa: f241 3288 movw r2, #5000 @ 0x1388 + 80017ae: 4293 cmp r3, r2 + 80017b0: d901 bls.n 80017b6 + { + return HAL_TIMEOUT; + 80017b2: 2303 movs r3, #3 + 80017b4: e05b b.n 800186e + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 80017b6: 4b31 ldr r3, [pc, #196] @ (800187c ) + 80017b8: 689b ldr r3, [r3, #8] + 80017ba: f003 030c and.w r3, r3, #12 + 80017be: 2b00 cmp r3, #0 + 80017c0: d1ee bne.n 80017a0 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 80017c2: 4b2d ldr r3, [pc, #180] @ (8001878 ) + 80017c4: 681b ldr r3, [r3, #0] + 80017c6: f003 0301 and.w r3, r3, #1 + 80017ca: 683a ldr r2, [r7, #0] + 80017cc: 429a cmp r2, r3 + 80017ce: d219 bcs.n 8001804 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80017d0: 683b ldr r3, [r7, #0] + 80017d2: 2b01 cmp r3, #1 + 80017d4: d105 bne.n 80017e2 + 80017d6: 4b28 ldr r3, [pc, #160] @ (8001878 ) + 80017d8: 681b ldr r3, [r3, #0] + 80017da: 4a27 ldr r2, [pc, #156] @ (8001878 ) + 80017dc: f043 0304 orr.w r3, r3, #4 + 80017e0: 6013 str r3, [r2, #0] + 80017e2: 4b25 ldr r3, [pc, #148] @ (8001878 ) + 80017e4: 681b ldr r3, [r3, #0] + 80017e6: f023 0201 bic.w r2, r3, #1 + 80017ea: 4923 ldr r1, [pc, #140] @ (8001878 ) + 80017ec: 683b ldr r3, [r7, #0] + 80017ee: 4313 orrs r3, r2 + 80017f0: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 80017f2: 4b21 ldr r3, [pc, #132] @ (8001878 ) + 80017f4: 681b ldr r3, [r3, #0] + 80017f6: f003 0301 and.w r3, r3, #1 + 80017fa: 683a ldr r2, [r7, #0] + 80017fc: 429a cmp r2, r3 + 80017fe: d001 beq.n 8001804 + { + return HAL_ERROR; + 8001800: 2301 movs r3, #1 + 8001802: e034 b.n 800186e + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001804: 687b ldr r3, [r7, #4] + 8001806: 681b ldr r3, [r3, #0] + 8001808: f003 0304 and.w r3, r3, #4 + 800180c: 2b00 cmp r3, #0 + 800180e: d008 beq.n 8001822 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001810: 4b1a ldr r3, [pc, #104] @ (800187c ) + 8001812: 689b ldr r3, [r3, #8] + 8001814: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001818: 687b ldr r3, [r7, #4] + 800181a: 68db ldr r3, [r3, #12] + 800181c: 4917 ldr r1, [pc, #92] @ (800187c ) + 800181e: 4313 orrs r3, r2 + 8001820: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001822: 687b ldr r3, [r7, #4] + 8001824: 681b ldr r3, [r3, #0] + 8001826: f003 0308 and.w r3, r3, #8 + 800182a: 2b00 cmp r3, #0 + 800182c: d009 beq.n 8001842 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 800182e: 4b13 ldr r3, [pc, #76] @ (800187c ) + 8001830: 689b ldr r3, [r3, #8] + 8001832: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001836: 687b ldr r3, [r7, #4] + 8001838: 691b ldr r3, [r3, #16] + 800183a: 00db lsls r3, r3, #3 + 800183c: 490f ldr r1, [pc, #60] @ (800187c ) + 800183e: 4313 orrs r3, r2 + 8001840: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001842: f000 f823 bl 800188c + 8001846: 4602 mov r2, r0 + 8001848: 4b0c ldr r3, [pc, #48] @ (800187c ) + 800184a: 689b ldr r3, [r3, #8] + 800184c: 091b lsrs r3, r3, #4 + 800184e: f003 030f and.w r3, r3, #15 + 8001852: 490b ldr r1, [pc, #44] @ (8001880 ) + 8001854: 5ccb ldrb r3, [r1, r3] + 8001856: fa22 f303 lsr.w r3, r2, r3 + 800185a: 4a0a ldr r2, [pc, #40] @ (8001884 ) + 800185c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 800185e: 4b0a ldr r3, [pc, #40] @ (8001888 ) + 8001860: 681b ldr r3, [r3, #0] + 8001862: 4618 mov r0, r3 + 8001864: f7ff f8aa bl 80009bc + 8001868: 4603 mov r3, r0 + 800186a: 72fb strb r3, [r7, #11] + + return status; + 800186c: 7afb ldrb r3, [r7, #11] +} + 800186e: 4618 mov r0, r3 + 8001870: 3710 adds r7, #16 + 8001872: 46bd mov sp, r7 + 8001874: bd80 pop {r7, pc} + 8001876: bf00 nop + 8001878: 40023c00 .word 0x40023c00 + 800187c: 40023800 .word 0x40023800 + 8001880: 08002098 .word 0x08002098 + 8001884: 20000000 .word 0x20000000 + 8001888: 20000004 .word 0x20000004 + +0800188c : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 800188c: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001890: b08e sub sp, #56 @ 0x38 + 8001892: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001894: 4b58 ldr r3, [pc, #352] @ (80019f8 ) + 8001896: 689b ldr r3, [r3, #8] + 8001898: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 800189a: 6afb ldr r3, [r7, #44] @ 0x2c + 800189c: f003 030c and.w r3, r3, #12 + 80018a0: 2b0c cmp r3, #12 + 80018a2: d00d beq.n 80018c0 + 80018a4: 2b0c cmp r3, #12 + 80018a6: f200 8092 bhi.w 80019ce + 80018aa: 2b04 cmp r3, #4 + 80018ac: d002 beq.n 80018b4 + 80018ae: 2b08 cmp r3, #8 + 80018b0: d003 beq.n 80018ba + 80018b2: e08c b.n 80019ce + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 80018b4: 4b51 ldr r3, [pc, #324] @ (80019fc ) + 80018b6: 633b str r3, [r7, #48] @ 0x30 + break; + 80018b8: e097 b.n 80019ea + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 80018ba: 4b51 ldr r3, [pc, #324] @ (8001a00 ) + 80018bc: 633b str r3, [r7, #48] @ 0x30 + break; + 80018be: e094 b.n 80019ea + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 80018c0: 6afb ldr r3, [r7, #44] @ 0x2c + 80018c2: 0c9b lsrs r3, r3, #18 + 80018c4: f003 020f and.w r2, r3, #15 + 80018c8: 4b4e ldr r3, [pc, #312] @ (8001a04 ) + 80018ca: 5c9b ldrb r3, [r3, r2] + 80018cc: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 80018ce: 6afb ldr r3, [r7, #44] @ 0x2c + 80018d0: 0d9b lsrs r3, r3, #22 + 80018d2: f003 0303 and.w r3, r3, #3 + 80018d6: 3301 adds r3, #1 + 80018d8: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 80018da: 4b47 ldr r3, [pc, #284] @ (80019f8 ) + 80018dc: 689b ldr r3, [r3, #8] + 80018de: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80018e2: 2b00 cmp r3, #0 + 80018e4: d021 beq.n 800192a + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 80018e6: 6abb ldr r3, [r7, #40] @ 0x28 + 80018e8: 2200 movs r2, #0 + 80018ea: 61bb str r3, [r7, #24] + 80018ec: 61fa str r2, [r7, #28] + 80018ee: 4b44 ldr r3, [pc, #272] @ (8001a00 ) + 80018f0: e9d7 8906 ldrd r8, r9, [r7, #24] + 80018f4: 464a mov r2, r9 + 80018f6: fb03 f202 mul.w r2, r3, r2 + 80018fa: 2300 movs r3, #0 + 80018fc: 4644 mov r4, r8 + 80018fe: fb04 f303 mul.w r3, r4, r3 + 8001902: 4413 add r3, r2 + 8001904: 4a3e ldr r2, [pc, #248] @ (8001a00 ) + 8001906: 4644 mov r4, r8 + 8001908: fba4 0102 umull r0, r1, r4, r2 + 800190c: 440b add r3, r1 + 800190e: 4619 mov r1, r3 + 8001910: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001912: 2200 movs r2, #0 + 8001914: 613b str r3, [r7, #16] + 8001916: 617a str r2, [r7, #20] + 8001918: e9d7 2304 ldrd r2, r3, [r7, #16] + 800191c: f7fe fc2e bl 800017c <__aeabi_uldivmod> + 8001920: 4602 mov r2, r0 + 8001922: 460b mov r3, r1 + 8001924: 4613 mov r3, r2 + 8001926: 637b str r3, [r7, #52] @ 0x34 + 8001928: e04e b.n 80019c8 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 800192a: 6abb ldr r3, [r7, #40] @ 0x28 + 800192c: 2200 movs r2, #0 + 800192e: 469a mov sl, r3 + 8001930: 4693 mov fp, r2 + 8001932: 4652 mov r2, sl + 8001934: 465b mov r3, fp + 8001936: f04f 0000 mov.w r0, #0 + 800193a: f04f 0100 mov.w r1, #0 + 800193e: 0159 lsls r1, r3, #5 + 8001940: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001944: 0150 lsls r0, r2, #5 + 8001946: 4602 mov r2, r0 + 8001948: 460b mov r3, r1 + 800194a: ebb2 080a subs.w r8, r2, sl + 800194e: eb63 090b sbc.w r9, r3, fp + 8001952: f04f 0200 mov.w r2, #0 + 8001956: f04f 0300 mov.w r3, #0 + 800195a: ea4f 1389 mov.w r3, r9, lsl #6 + 800195e: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001962: ea4f 1288 mov.w r2, r8, lsl #6 + 8001966: ebb2 0408 subs.w r4, r2, r8 + 800196a: eb63 0509 sbc.w r5, r3, r9 + 800196e: f04f 0200 mov.w r2, #0 + 8001972: f04f 0300 mov.w r3, #0 + 8001976: 00eb lsls r3, r5, #3 + 8001978: ea43 7354 orr.w r3, r3, r4, lsr #29 + 800197c: 00e2 lsls r2, r4, #3 + 800197e: 4614 mov r4, r2 + 8001980: 461d mov r5, r3 + 8001982: eb14 030a adds.w r3, r4, sl + 8001986: 603b str r3, [r7, #0] + 8001988: eb45 030b adc.w r3, r5, fp + 800198c: 607b str r3, [r7, #4] + 800198e: f04f 0200 mov.w r2, #0 + 8001992: f04f 0300 mov.w r3, #0 + 8001996: e9d7 4500 ldrd r4, r5, [r7] + 800199a: 4629 mov r1, r5 + 800199c: 028b lsls r3, r1, #10 + 800199e: 4620 mov r0, r4 + 80019a0: 4629 mov r1, r5 + 80019a2: 4604 mov r4, r0 + 80019a4: ea43 5394 orr.w r3, r3, r4, lsr #22 + 80019a8: 4601 mov r1, r0 + 80019aa: 028a lsls r2, r1, #10 + 80019ac: 4610 mov r0, r2 + 80019ae: 4619 mov r1, r3 + 80019b0: 6a7b ldr r3, [r7, #36] @ 0x24 + 80019b2: 2200 movs r2, #0 + 80019b4: 60bb str r3, [r7, #8] + 80019b6: 60fa str r2, [r7, #12] + 80019b8: e9d7 2302 ldrd r2, r3, [r7, #8] + 80019bc: f7fe fbde bl 800017c <__aeabi_uldivmod> + 80019c0: 4602 mov r2, r0 + 80019c2: 460b mov r3, r1 + 80019c4: 4613 mov r3, r2 + 80019c6: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 80019c8: 6b7b ldr r3, [r7, #52] @ 0x34 + 80019ca: 633b str r3, [r7, #48] @ 0x30 + break; + 80019cc: e00d b.n 80019ea + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 80019ce: 4b0a ldr r3, [pc, #40] @ (80019f8 ) + 80019d0: 685b ldr r3, [r3, #4] + 80019d2: 0b5b lsrs r3, r3, #13 + 80019d4: f003 0307 and.w r3, r3, #7 + 80019d8: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 80019da: 6a3b ldr r3, [r7, #32] + 80019dc: 3301 adds r3, #1 + 80019de: f44f 4200 mov.w r2, #32768 @ 0x8000 + 80019e2: fa02 f303 lsl.w r3, r2, r3 + 80019e6: 633b str r3, [r7, #48] @ 0x30 + break; + 80019e8: bf00 nop + } + } + return sysclockfreq; + 80019ea: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 80019ec: 4618 mov r0, r3 + 80019ee: 3738 adds r7, #56 @ 0x38 + 80019f0: 46bd mov sp, r7 + 80019f2: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 80019f6: bf00 nop + 80019f8: 40023800 .word 0x40023800 + 80019fc: 00f42400 .word 0x00f42400 + 8001a00: 016e3600 .word 0x016e3600 + 8001a04: 0800208c .word 0x0800208c + +08001a08 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001a08: b480 push {r7} + 8001a0a: b087 sub sp, #28 + 8001a0c: af00 add r7, sp, #0 + 8001a0e: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001a10: 2300 movs r3, #0 + 8001a12: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001a14: 4b29 ldr r3, [pc, #164] @ (8001abc ) + 8001a16: 689b ldr r3, [r3, #8] + 8001a18: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001a1c: 2b00 cmp r3, #0 + 8001a1e: d12c bne.n 8001a7a + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001a20: 4b26 ldr r3, [pc, #152] @ (8001abc ) + 8001a22: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a24: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001a28: 2b00 cmp r3, #0 + 8001a2a: d005 beq.n 8001a38 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001a2c: 4b24 ldr r3, [pc, #144] @ (8001ac0 ) + 8001a2e: 681b ldr r3, [r3, #0] + 8001a30: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001a34: 617b str r3, [r7, #20] + 8001a36: e016 b.n 8001a66 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001a38: 4b20 ldr r3, [pc, #128] @ (8001abc ) + 8001a3a: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a3c: 4a1f ldr r2, [pc, #124] @ (8001abc ) + 8001a3e: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001a42: 6253 str r3, [r2, #36] @ 0x24 + 8001a44: 4b1d ldr r3, [pc, #116] @ (8001abc ) + 8001a46: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a48: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001a4c: 60fb str r3, [r7, #12] + 8001a4e: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001a50: 4b1b ldr r3, [pc, #108] @ (8001ac0 ) + 8001a52: 681b ldr r3, [r3, #0] + 8001a54: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001a58: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001a5a: 4b18 ldr r3, [pc, #96] @ (8001abc ) + 8001a5c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a5e: 4a17 ldr r2, [pc, #92] @ (8001abc ) + 8001a60: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001a64: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001a66: 697b ldr r3, [r7, #20] + 8001a68: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001a6c: d105 bne.n 8001a7a + 8001a6e: 687b ldr r3, [r7, #4] + 8001a70: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001a74: d101 bne.n 8001a7a + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001a76: 2301 movs r3, #1 + 8001a78: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001a7a: 693b ldr r3, [r7, #16] + 8001a7c: 2b01 cmp r3, #1 + 8001a7e: d105 bne.n 8001a8c + 8001a80: 4b10 ldr r3, [pc, #64] @ (8001ac4 ) + 8001a82: 681b ldr r3, [r3, #0] + 8001a84: 4a0f ldr r2, [pc, #60] @ (8001ac4 ) + 8001a86: f043 0304 orr.w r3, r3, #4 + 8001a8a: 6013 str r3, [r2, #0] + 8001a8c: 4b0d ldr r3, [pc, #52] @ (8001ac4 ) + 8001a8e: 681b ldr r3, [r3, #0] + 8001a90: f023 0201 bic.w r2, r3, #1 + 8001a94: 490b ldr r1, [pc, #44] @ (8001ac4 ) + 8001a96: 693b ldr r3, [r7, #16] + 8001a98: 4313 orrs r3, r2 + 8001a9a: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001a9c: 4b09 ldr r3, [pc, #36] @ (8001ac4 ) + 8001a9e: 681b ldr r3, [r3, #0] + 8001aa0: f003 0301 and.w r3, r3, #1 + 8001aa4: 693a ldr r2, [r7, #16] + 8001aa6: 429a cmp r2, r3 + 8001aa8: d001 beq.n 8001aae + { + return HAL_ERROR; + 8001aaa: 2301 movs r3, #1 + 8001aac: e000 b.n 8001ab0 + } + + return HAL_OK; + 8001aae: 2300 movs r3, #0 +} + 8001ab0: 4618 mov r0, r3 + 8001ab2: 371c adds r7, #28 + 8001ab4: 46bd mov sp, r7 + 8001ab6: bc80 pop {r7} + 8001ab8: 4770 bx lr + 8001aba: bf00 nop + 8001abc: 40023800 .word 0x40023800 + 8001ac0: 40007000 .word 0x40007000 + 8001ac4: 40023c00 .word 0x40023c00 + +08001ac8 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001ac8: b580 push {r7, lr} + 8001aca: b082 sub sp, #8 + 8001acc: af00 add r7, sp, #0 + 8001ace: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001ad0: 687b ldr r3, [r7, #4] + 8001ad2: 2b00 cmp r3, #0 + 8001ad4: d101 bne.n 8001ada + { + return HAL_ERROR; + 8001ad6: 2301 movs r3, #1 + 8001ad8: e07b b.n 8001bd2 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001ada: 687b ldr r3, [r7, #4] + 8001adc: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ade: 2b00 cmp r3, #0 + 8001ae0: d108 bne.n 8001af4 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001ae2: 687b ldr r3, [r7, #4] + 8001ae4: 685b ldr r3, [r3, #4] + 8001ae6: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001aea: d009 beq.n 8001b00 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001aec: 687b ldr r3, [r7, #4] + 8001aee: 2200 movs r2, #0 + 8001af0: 61da str r2, [r3, #28] + 8001af2: e005 b.n 8001b00 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001af4: 687b ldr r3, [r7, #4] + 8001af6: 2200 movs r2, #0 + 8001af8: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001afa: 687b ldr r3, [r7, #4] + 8001afc: 2200 movs r2, #0 + 8001afe: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001b00: 687b ldr r3, [r7, #4] + 8001b02: 2200 movs r2, #0 + 8001b04: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001b06: 687b ldr r3, [r7, #4] + 8001b08: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001b0c: b2db uxtb r3, r3 + 8001b0e: 2b00 cmp r3, #0 + 8001b10: d106 bne.n 8001b20 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001b12: 687b ldr r3, [r7, #4] + 8001b14: 2200 movs r2, #0 + 8001b16: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001b1a: 6878 ldr r0, [r7, #4] + 8001b1c: f7fe fe08 bl 8000730 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001b20: 687b ldr r3, [r7, #4] + 8001b22: 2202 movs r2, #2 + 8001b24: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001b28: 687b ldr r3, [r7, #4] + 8001b2a: 681b ldr r3, [r3, #0] + 8001b2c: 681a ldr r2, [r3, #0] + 8001b2e: 687b ldr r3, [r7, #4] + 8001b30: 681b ldr r3, [r3, #0] + 8001b32: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001b36: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001b38: 687b ldr r3, [r7, #4] + 8001b3a: 685b ldr r3, [r3, #4] + 8001b3c: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001b40: 687b ldr r3, [r7, #4] + 8001b42: 689b ldr r3, [r3, #8] + 8001b44: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001b48: 431a orrs r2, r3 + 8001b4a: 687b ldr r3, [r7, #4] + 8001b4c: 68db ldr r3, [r3, #12] + 8001b4e: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001b52: 431a orrs r2, r3 + 8001b54: 687b ldr r3, [r7, #4] + 8001b56: 691b ldr r3, [r3, #16] + 8001b58: f003 0302 and.w r3, r3, #2 + 8001b5c: 431a orrs r2, r3 + 8001b5e: 687b ldr r3, [r7, #4] + 8001b60: 695b ldr r3, [r3, #20] + 8001b62: f003 0301 and.w r3, r3, #1 + 8001b66: 431a orrs r2, r3 + 8001b68: 687b ldr r3, [r7, #4] + 8001b6a: 699b ldr r3, [r3, #24] + 8001b6c: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001b70: 431a orrs r2, r3 + 8001b72: 687b ldr r3, [r7, #4] + 8001b74: 69db ldr r3, [r3, #28] + 8001b76: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001b7a: 431a orrs r2, r3 + 8001b7c: 687b ldr r3, [r7, #4] + 8001b7e: 6a1b ldr r3, [r3, #32] + 8001b80: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001b84: ea42 0103 orr.w r1, r2, r3 + 8001b88: 687b ldr r3, [r7, #4] + 8001b8a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001b8c: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001b90: 687b ldr r3, [r7, #4] + 8001b92: 681b ldr r3, [r3, #0] + 8001b94: 430a orrs r2, r1 + 8001b96: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001b98: 687b ldr r3, [r7, #4] + 8001b9a: 699b ldr r3, [r3, #24] + 8001b9c: 0c1b lsrs r3, r3, #16 + 8001b9e: f003 0104 and.w r1, r3, #4 + 8001ba2: 687b ldr r3, [r7, #4] + 8001ba4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ba6: f003 0210 and.w r2, r3, #16 + 8001baa: 687b ldr r3, [r7, #4] + 8001bac: 681b ldr r3, [r3, #0] + 8001bae: 430a orrs r2, r1 + 8001bb0: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001bb2: 687b ldr r3, [r7, #4] + 8001bb4: 681b ldr r3, [r3, #0] + 8001bb6: 69da ldr r2, [r3, #28] + 8001bb8: 687b ldr r3, [r7, #4] + 8001bba: 681b ldr r3, [r3, #0] + 8001bbc: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001bc0: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001bc2: 687b ldr r3, [r7, #4] + 8001bc4: 2200 movs r2, #0 + 8001bc6: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001bc8: 687b ldr r3, [r7, #4] + 8001bca: 2201 movs r2, #1 + 8001bcc: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001bd0: 2300 movs r3, #0 +} + 8001bd2: 4618 mov r0, r3 + 8001bd4: 3708 adds r7, #8 + 8001bd6: 46bd mov sp, r7 + 8001bd8: bd80 pop {r7, pc} + +08001bda : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001bda: b580 push {r7, lr} + 8001bdc: b088 sub sp, #32 + 8001bde: af00 add r7, sp, #0 + 8001be0: 60f8 str r0, [r7, #12] + 8001be2: 60b9 str r1, [r7, #8] + 8001be4: 603b str r3, [r7, #0] + 8001be6: 4613 mov r3, r2 + 8001be8: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001bea: f7fe ff33 bl 8000a54 + 8001bee: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001bf0: 88fb ldrh r3, [r7, #6] + 8001bf2: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001bf4: 68fb ldr r3, [r7, #12] + 8001bf6: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001bfa: b2db uxtb r3, r3 + 8001bfc: 2b01 cmp r3, #1 + 8001bfe: d001 beq.n 8001c04 + { + return HAL_BUSY; + 8001c00: 2302 movs r3, #2 + 8001c02: e12a b.n 8001e5a + } + + if ((pData == NULL) || (Size == 0U)) + 8001c04: 68bb ldr r3, [r7, #8] + 8001c06: 2b00 cmp r3, #0 + 8001c08: d002 beq.n 8001c10 + 8001c0a: 88fb ldrh r3, [r7, #6] + 8001c0c: 2b00 cmp r3, #0 + 8001c0e: d101 bne.n 8001c14 + { + return HAL_ERROR; + 8001c10: 2301 movs r3, #1 + 8001c12: e122 b.n 8001e5a + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001c14: 68fb ldr r3, [r7, #12] + 8001c16: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001c1a: 2b01 cmp r3, #1 + 8001c1c: d101 bne.n 8001c22 + 8001c1e: 2302 movs r3, #2 + 8001c20: e11b b.n 8001e5a + 8001c22: 68fb ldr r3, [r7, #12] + 8001c24: 2201 movs r2, #1 + 8001c26: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001c2a: 68fb ldr r3, [r7, #12] + 8001c2c: 2203 movs r2, #3 + 8001c2e: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001c32: 68fb ldr r3, [r7, #12] + 8001c34: 2200 movs r2, #0 + 8001c36: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001c38: 68fb ldr r3, [r7, #12] + 8001c3a: 68ba ldr r2, [r7, #8] + 8001c3c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001c3e: 68fb ldr r3, [r7, #12] + 8001c40: 88fa ldrh r2, [r7, #6] + 8001c42: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8001c44: 68fb ldr r3, [r7, #12] + 8001c46: 88fa ldrh r2, [r7, #6] + 8001c48: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8001c4a: 68fb ldr r3, [r7, #12] + 8001c4c: 2200 movs r2, #0 + 8001c4e: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8001c50: 68fb ldr r3, [r7, #12] + 8001c52: 2200 movs r2, #0 + 8001c54: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8001c56: 68fb ldr r3, [r7, #12] + 8001c58: 2200 movs r2, #0 + 8001c5a: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8001c5c: 68fb ldr r3, [r7, #12] + 8001c5e: 2200 movs r2, #0 + 8001c60: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8001c62: 68fb ldr r3, [r7, #12] + 8001c64: 2200 movs r2, #0 + 8001c66: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001c68: 68fb ldr r3, [r7, #12] + 8001c6a: 689b ldr r3, [r3, #8] + 8001c6c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001c70: d10f bne.n 8001c92 + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8001c72: 68fb ldr r3, [r7, #12] + 8001c74: 681b ldr r3, [r3, #0] + 8001c76: 681a ldr r2, [r3, #0] + 8001c78: 68fb ldr r3, [r7, #12] + 8001c7a: 681b ldr r3, [r3, #0] + 8001c7c: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001c80: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8001c82: 68fb ldr r3, [r7, #12] + 8001c84: 681b ldr r3, [r3, #0] + 8001c86: 681a ldr r2, [r3, #0] + 8001c88: 68fb ldr r3, [r7, #12] + 8001c8a: 681b ldr r3, [r3, #0] + 8001c8c: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8001c90: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8001c92: 68fb ldr r3, [r7, #12] + 8001c94: 681b ldr r3, [r3, #0] + 8001c96: 681b ldr r3, [r3, #0] + 8001c98: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001c9c: 2b40 cmp r3, #64 @ 0x40 + 8001c9e: d007 beq.n 8001cb0 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8001ca0: 68fb ldr r3, [r7, #12] + 8001ca2: 681b ldr r3, [r3, #0] + 8001ca4: 681a ldr r2, [r3, #0] + 8001ca6: 68fb ldr r3, [r7, #12] + 8001ca8: 681b ldr r3, [r3, #0] + 8001caa: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8001cae: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8001cb0: 68fb ldr r3, [r7, #12] + 8001cb2: 68db ldr r3, [r3, #12] + 8001cb4: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8001cb8: d152 bne.n 8001d60 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001cba: 68fb ldr r3, [r7, #12] + 8001cbc: 685b ldr r3, [r3, #4] + 8001cbe: 2b00 cmp r3, #0 + 8001cc0: d002 beq.n 8001cc8 + 8001cc2: 8b7b ldrh r3, [r7, #26] + 8001cc4: 2b01 cmp r3, #1 + 8001cc6: d145 bne.n 8001d54 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001cc8: 68fb ldr r3, [r7, #12] + 8001cca: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001ccc: 881a ldrh r2, [r3, #0] + 8001cce: 68fb ldr r3, [r7, #12] + 8001cd0: 681b ldr r3, [r3, #0] + 8001cd2: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001cd4: 68fb ldr r3, [r7, #12] + 8001cd6: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001cd8: 1c9a adds r2, r3, #2 + 8001cda: 68fb ldr r3, [r7, #12] + 8001cdc: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001cde: 68fb ldr r3, [r7, #12] + 8001ce0: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001ce2: b29b uxth r3, r3 + 8001ce4: 3b01 subs r3, #1 + 8001ce6: b29a uxth r2, r3 + 8001ce8: 68fb ldr r3, [r7, #12] + 8001cea: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8001cec: e032 b.n 8001d54 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001cee: 68fb ldr r3, [r7, #12] + 8001cf0: 681b ldr r3, [r3, #0] + 8001cf2: 689b ldr r3, [r3, #8] + 8001cf4: f003 0302 and.w r3, r3, #2 + 8001cf8: 2b02 cmp r3, #2 + 8001cfa: d112 bne.n 8001d22 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001cfc: 68fb ldr r3, [r7, #12] + 8001cfe: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001d00: 881a ldrh r2, [r3, #0] + 8001d02: 68fb ldr r3, [r7, #12] + 8001d04: 681b ldr r3, [r3, #0] + 8001d06: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001d08: 68fb ldr r3, [r7, #12] + 8001d0a: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001d0c: 1c9a adds r2, r3, #2 + 8001d0e: 68fb ldr r3, [r7, #12] + 8001d10: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001d12: 68fb ldr r3, [r7, #12] + 8001d14: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d16: b29b uxth r3, r3 + 8001d18: 3b01 subs r3, #1 + 8001d1a: b29a uxth r2, r3 + 8001d1c: 68fb ldr r3, [r7, #12] + 8001d1e: 86da strh r2, [r3, #54] @ 0x36 + 8001d20: e018 b.n 8001d54 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001d22: f7fe fe97 bl 8000a54 + 8001d26: 4602 mov r2, r0 + 8001d28: 69fb ldr r3, [r7, #28] + 8001d2a: 1ad3 subs r3, r2, r3 + 8001d2c: 683a ldr r2, [r7, #0] + 8001d2e: 429a cmp r2, r3 + 8001d30: d803 bhi.n 8001d3a + 8001d32: 683b ldr r3, [r7, #0] + 8001d34: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001d38: d102 bne.n 8001d40 + 8001d3a: 683b ldr r3, [r7, #0] + 8001d3c: 2b00 cmp r3, #0 + 8001d3e: d109 bne.n 8001d54 + { + hspi->State = HAL_SPI_STATE_READY; + 8001d40: 68fb ldr r3, [r7, #12] + 8001d42: 2201 movs r2, #1 + 8001d44: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001d48: 68fb ldr r3, [r7, #12] + 8001d4a: 2200 movs r2, #0 + 8001d4c: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001d50: 2303 movs r3, #3 + 8001d52: e082 b.n 8001e5a + while (hspi->TxXferCount > 0U) + 8001d54: 68fb ldr r3, [r7, #12] + 8001d56: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d58: b29b uxth r3, r3 + 8001d5a: 2b00 cmp r3, #0 + 8001d5c: d1c7 bne.n 8001cee + 8001d5e: e053 b.n 8001e08 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001d60: 68fb ldr r3, [r7, #12] + 8001d62: 685b ldr r3, [r3, #4] + 8001d64: 2b00 cmp r3, #0 + 8001d66: d002 beq.n 8001d6e + 8001d68: 8b7b ldrh r3, [r7, #26] + 8001d6a: 2b01 cmp r3, #1 + 8001d6c: d147 bne.n 8001dfe + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001d6e: 68fb ldr r3, [r7, #12] + 8001d70: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001d72: 68fb ldr r3, [r7, #12] + 8001d74: 681b ldr r3, [r3, #0] + 8001d76: 330c adds r3, #12 + 8001d78: 7812 ldrb r2, [r2, #0] + 8001d7a: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001d7c: 68fb ldr r3, [r7, #12] + 8001d7e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001d80: 1c5a adds r2, r3, #1 + 8001d82: 68fb ldr r3, [r7, #12] + 8001d84: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001d86: 68fb ldr r3, [r7, #12] + 8001d88: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d8a: b29b uxth r3, r3 + 8001d8c: 3b01 subs r3, #1 + 8001d8e: b29a uxth r2, r3 + 8001d90: 68fb ldr r3, [r7, #12] + 8001d92: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8001d94: e033 b.n 8001dfe + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001d96: 68fb ldr r3, [r7, #12] + 8001d98: 681b ldr r3, [r3, #0] + 8001d9a: 689b ldr r3, [r3, #8] + 8001d9c: f003 0302 and.w r3, r3, #2 + 8001da0: 2b02 cmp r3, #2 + 8001da2: d113 bne.n 8001dcc + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001da4: 68fb ldr r3, [r7, #12] + 8001da6: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001da8: 68fb ldr r3, [r7, #12] + 8001daa: 681b ldr r3, [r3, #0] + 8001dac: 330c adds r3, #12 + 8001dae: 7812 ldrb r2, [r2, #0] + 8001db0: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001db2: 68fb ldr r3, [r7, #12] + 8001db4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001db6: 1c5a adds r2, r3, #1 + 8001db8: 68fb ldr r3, [r7, #12] + 8001dba: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001dbc: 68fb ldr r3, [r7, #12] + 8001dbe: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001dc0: b29b uxth r3, r3 + 8001dc2: 3b01 subs r3, #1 + 8001dc4: b29a uxth r2, r3 + 8001dc6: 68fb ldr r3, [r7, #12] + 8001dc8: 86da strh r2, [r3, #54] @ 0x36 + 8001dca: e018 b.n 8001dfe + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001dcc: f7fe fe42 bl 8000a54 + 8001dd0: 4602 mov r2, r0 + 8001dd2: 69fb ldr r3, [r7, #28] + 8001dd4: 1ad3 subs r3, r2, r3 + 8001dd6: 683a ldr r2, [r7, #0] + 8001dd8: 429a cmp r2, r3 + 8001dda: d803 bhi.n 8001de4 + 8001ddc: 683b ldr r3, [r7, #0] + 8001dde: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001de2: d102 bne.n 8001dea + 8001de4: 683b ldr r3, [r7, #0] + 8001de6: 2b00 cmp r3, #0 + 8001de8: d109 bne.n 8001dfe + { + hspi->State = HAL_SPI_STATE_READY; + 8001dea: 68fb ldr r3, [r7, #12] + 8001dec: 2201 movs r2, #1 + 8001dee: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001df2: 68fb ldr r3, [r7, #12] + 8001df4: 2200 movs r2, #0 + 8001df6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001dfa: 2303 movs r3, #3 + 8001dfc: e02d b.n 8001e5a + while (hspi->TxXferCount > 0U) + 8001dfe: 68fb ldr r3, [r7, #12] + 8001e00: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001e02: b29b uxth r3, r3 + 8001e04: 2b00 cmp r3, #0 + 8001e06: d1c6 bne.n 8001d96 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8001e08: 69fa ldr r2, [r7, #28] + 8001e0a: 6839 ldr r1, [r7, #0] + 8001e0c: 68f8 ldr r0, [r7, #12] + 8001e0e: f000 f8b1 bl 8001f74 + 8001e12: 4603 mov r3, r0 + 8001e14: 2b00 cmp r3, #0 + 8001e16: d002 beq.n 8001e1e + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8001e18: 68fb ldr r3, [r7, #12] + 8001e1a: 2220 movs r2, #32 + 8001e1c: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 8001e1e: 68fb ldr r3, [r7, #12] + 8001e20: 689b ldr r3, [r3, #8] + 8001e22: 2b00 cmp r3, #0 + 8001e24: d10a bne.n 8001e3c + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 8001e26: 2300 movs r3, #0 + 8001e28: 617b str r3, [r7, #20] + 8001e2a: 68fb ldr r3, [r7, #12] + 8001e2c: 681b ldr r3, [r3, #0] + 8001e2e: 68db ldr r3, [r3, #12] + 8001e30: 617b str r3, [r7, #20] + 8001e32: 68fb ldr r3, [r7, #12] + 8001e34: 681b ldr r3, [r3, #0] + 8001e36: 689b ldr r3, [r3, #8] + 8001e38: 617b str r3, [r7, #20] + 8001e3a: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 8001e3c: 68fb ldr r3, [r7, #12] + 8001e3e: 2201 movs r2, #1 + 8001e40: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8001e44: 68fb ldr r3, [r7, #12] + 8001e46: 2200 movs r2, #0 + 8001e48: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8001e4c: 68fb ldr r3, [r7, #12] + 8001e4e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001e50: 2b00 cmp r3, #0 + 8001e52: d001 beq.n 8001e58 + { + return HAL_ERROR; + 8001e54: 2301 movs r3, #1 + 8001e56: e000 b.n 8001e5a + } + else + { + return HAL_OK; + 8001e58: 2300 movs r3, #0 + } +} + 8001e5a: 4618 mov r0, r3 + 8001e5c: 3720 adds r7, #32 + 8001e5e: 46bd mov sp, r7 + 8001e60: bd80 pop {r7, pc} + ... + +08001e64 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8001e64: b580 push {r7, lr} + 8001e66: b088 sub sp, #32 + 8001e68: af00 add r7, sp, #0 + 8001e6a: 60f8 str r0, [r7, #12] + 8001e6c: 60b9 str r1, [r7, #8] + 8001e6e: 603b str r3, [r7, #0] + 8001e70: 4613 mov r3, r2 + 8001e72: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8001e74: f7fe fdee bl 8000a54 + 8001e78: 4602 mov r2, r0 + 8001e7a: 6abb ldr r3, [r7, #40] @ 0x28 + 8001e7c: 1a9b subs r3, r3, r2 + 8001e7e: 683a ldr r2, [r7, #0] + 8001e80: 4413 add r3, r2 + 8001e82: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8001e84: f7fe fde6 bl 8000a54 + 8001e88: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8001e8a: 4b39 ldr r3, [pc, #228] @ (8001f70 ) + 8001e8c: 681b ldr r3, [r3, #0] + 8001e8e: 015b lsls r3, r3, #5 + 8001e90: 0d1b lsrs r3, r3, #20 + 8001e92: 69fa ldr r2, [r7, #28] + 8001e94: fb02 f303 mul.w r3, r2, r3 + 8001e98: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8001e9a: e054 b.n 8001f46 + { + if (Timeout != HAL_MAX_DELAY) + 8001e9c: 683b ldr r3, [r7, #0] + 8001e9e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001ea2: d050 beq.n 8001f46 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8001ea4: f7fe fdd6 bl 8000a54 + 8001ea8: 4602 mov r2, r0 + 8001eaa: 69bb ldr r3, [r7, #24] + 8001eac: 1ad3 subs r3, r2, r3 + 8001eae: 69fa ldr r2, [r7, #28] + 8001eb0: 429a cmp r2, r3 + 8001eb2: d902 bls.n 8001eba + 8001eb4: 69fb ldr r3, [r7, #28] + 8001eb6: 2b00 cmp r3, #0 + 8001eb8: d13d bne.n 8001f36 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8001eba: 68fb ldr r3, [r7, #12] + 8001ebc: 681b ldr r3, [r3, #0] + 8001ebe: 685a ldr r2, [r3, #4] + 8001ec0: 68fb ldr r3, [r7, #12] + 8001ec2: 681b ldr r3, [r3, #0] + 8001ec4: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8001ec8: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001eca: 68fb ldr r3, [r7, #12] + 8001ecc: 685b ldr r3, [r3, #4] + 8001ece: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001ed2: d111 bne.n 8001ef8 + 8001ed4: 68fb ldr r3, [r7, #12] + 8001ed6: 689b ldr r3, [r3, #8] + 8001ed8: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001edc: d004 beq.n 8001ee8 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 8001ede: 68fb ldr r3, [r7, #12] + 8001ee0: 689b ldr r3, [r3, #8] + 8001ee2: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8001ee6: d107 bne.n 8001ef8 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001ee8: 68fb ldr r3, [r7, #12] + 8001eea: 681b ldr r3, [r3, #0] + 8001eec: 681a ldr r2, [r3, #0] + 8001eee: 68fb ldr r3, [r7, #12] + 8001ef0: 681b ldr r3, [r3, #0] + 8001ef2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001ef6: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8001ef8: 68fb ldr r3, [r7, #12] + 8001efa: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001efc: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8001f00: d10f bne.n 8001f22 + { + SPI_RESET_CRC(hspi); + 8001f02: 68fb ldr r3, [r7, #12] + 8001f04: 681b ldr r3, [r3, #0] + 8001f06: 681a ldr r2, [r3, #0] + 8001f08: 68fb ldr r3, [r7, #12] + 8001f0a: 681b ldr r3, [r3, #0] + 8001f0c: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8001f10: 601a str r2, [r3, #0] + 8001f12: 68fb ldr r3, [r7, #12] + 8001f14: 681b ldr r3, [r3, #0] + 8001f16: 681a ldr r2, [r3, #0] + 8001f18: 68fb ldr r3, [r7, #12] + 8001f1a: 681b ldr r3, [r3, #0] + 8001f1c: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8001f20: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 8001f22: 68fb ldr r3, [r7, #12] + 8001f24: 2201 movs r2, #1 + 8001f26: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8001f2a: 68fb ldr r3, [r7, #12] + 8001f2c: 2200 movs r2, #0 + 8001f2e: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 8001f32: 2303 movs r3, #3 + 8001f34: e017 b.n 8001f66 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 8001f36: 697b ldr r3, [r7, #20] + 8001f38: 2b00 cmp r3, #0 + 8001f3a: d101 bne.n 8001f40 + { + tmp_timeout = 0U; + 8001f3c: 2300 movs r3, #0 + 8001f3e: 61fb str r3, [r7, #28] + } + count--; + 8001f40: 697b ldr r3, [r7, #20] + 8001f42: 3b01 subs r3, #1 + 8001f44: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8001f46: 68fb ldr r3, [r7, #12] + 8001f48: 681b ldr r3, [r3, #0] + 8001f4a: 689a ldr r2, [r3, #8] + 8001f4c: 68bb ldr r3, [r7, #8] + 8001f4e: 4013 ands r3, r2 + 8001f50: 68ba ldr r2, [r7, #8] + 8001f52: 429a cmp r2, r3 + 8001f54: bf0c ite eq + 8001f56: 2301 moveq r3, #1 + 8001f58: 2300 movne r3, #0 + 8001f5a: b2db uxtb r3, r3 + 8001f5c: 461a mov r2, r3 + 8001f5e: 79fb ldrb r3, [r7, #7] + 8001f60: 429a cmp r2, r3 + 8001f62: d19b bne.n 8001e9c + } + } + + return HAL_OK; + 8001f64: 2300 movs r3, #0 +} + 8001f66: 4618 mov r0, r3 + 8001f68: 3720 adds r7, #32 + 8001f6a: 46bd mov sp, r7 + 8001f6c: bd80 pop {r7, pc} + 8001f6e: bf00 nop + 8001f70: 20000000 .word 0x20000000 + +08001f74 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8001f74: b580 push {r7, lr} + 8001f76: b088 sub sp, #32 + 8001f78: af02 add r7, sp, #8 + 8001f7a: 60f8 str r0, [r7, #12] + 8001f7c: 60b9 str r1, [r7, #8] + 8001f7e: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8001f80: 687b ldr r3, [r7, #4] + 8001f82: 9300 str r3, [sp, #0] + 8001f84: 68bb ldr r3, [r7, #8] + 8001f86: 2201 movs r2, #1 + 8001f88: 2102 movs r1, #2 + 8001f8a: 68f8 ldr r0, [r7, #12] + 8001f8c: f7ff ff6a bl 8001e64 + 8001f90: 4603 mov r3, r0 + 8001f92: 2b00 cmp r3, #0 + 8001f94: d007 beq.n 8001fa6 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8001f96: 68fb ldr r3, [r7, #12] + 8001f98: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001f9a: f043 0220 orr.w r2, r3, #32 + 8001f9e: 68fb ldr r3, [r7, #12] + 8001fa0: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8001fa2: 2303 movs r3, #3 + 8001fa4: e032 b.n 800200c + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8001fa6: 4b1b ldr r3, [pc, #108] @ (8002014 ) + 8001fa8: 681b ldr r3, [r3, #0] + 8001faa: 4a1b ldr r2, [pc, #108] @ (8002018 ) + 8001fac: fba2 2303 umull r2, r3, r2, r3 + 8001fb0: 0d5b lsrs r3, r3, #21 + 8001fb2: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8001fb6: fb02 f303 mul.w r3, r2, r3 + 8001fba: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001fbc: 68fb ldr r3, [r7, #12] + 8001fbe: 685b ldr r3, [r3, #4] + 8001fc0: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001fc4: d112 bne.n 8001fec + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8001fc6: 687b ldr r3, [r7, #4] + 8001fc8: 9300 str r3, [sp, #0] + 8001fca: 68bb ldr r3, [r7, #8] + 8001fcc: 2200 movs r2, #0 + 8001fce: 2180 movs r1, #128 @ 0x80 + 8001fd0: 68f8 ldr r0, [r7, #12] + 8001fd2: f7ff ff47 bl 8001e64 + 8001fd6: 4603 mov r3, r0 + 8001fd8: 2b00 cmp r3, #0 + 8001fda: d016 beq.n 800200a + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8001fdc: 68fb ldr r3, [r7, #12] + 8001fde: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001fe0: f043 0220 orr.w r2, r3, #32 + 8001fe4: 68fb ldr r3, [r7, #12] + 8001fe6: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8001fe8: 2303 movs r3, #3 + 8001fea: e00f b.n 800200c + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 8001fec: 697b ldr r3, [r7, #20] + 8001fee: 2b00 cmp r3, #0 + 8001ff0: d00a beq.n 8002008 + { + break; + } + count--; + 8001ff2: 697b ldr r3, [r7, #20] + 8001ff4: 3b01 subs r3, #1 + 8001ff6: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8001ff8: 68fb ldr r3, [r7, #12] + 8001ffa: 681b ldr r3, [r3, #0] + 8001ffc: 689b ldr r3, [r3, #8] + 8001ffe: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002002: 2b80 cmp r3, #128 @ 0x80 + 8002004: d0f2 beq.n 8001fec + 8002006: e000 b.n 800200a + break; + 8002008: bf00 nop + } + + return HAL_OK; + 800200a: 2300 movs r3, #0 +} + 800200c: 4618 mov r0, r3 + 800200e: 3718 adds r7, #24 + 8002010: 46bd mov sp, r7 + 8002012: bd80 pop {r7, pc} + 8002014: 20000000 .word 0x20000000 + 8002018: 165e9f81 .word 0x165e9f81 + +0800201c : + 800201c: 4603 mov r3, r0 + 800201e: 4402 add r2, r0 + 8002020: 4293 cmp r3, r2 + 8002022: d100 bne.n 8002026 + 8002024: 4770 bx lr + 8002026: f803 1b01 strb.w r1, [r3], #1 + 800202a: e7f9 b.n 8002020 + +0800202c <__libc_init_array>: + 800202c: b570 push {r4, r5, r6, lr} + 800202e: 2600 movs r6, #0 + 8002030: 4d0c ldr r5, [pc, #48] @ (8002064 <__libc_init_array+0x38>) + 8002032: 4c0d ldr r4, [pc, #52] @ (8002068 <__libc_init_array+0x3c>) + 8002034: 1b64 subs r4, r4, r5 + 8002036: 10a4 asrs r4, r4, #2 + 8002038: 42a6 cmp r6, r4 + 800203a: d109 bne.n 8002050 <__libc_init_array+0x24> + 800203c: f000 f81a bl 8002074 <_init> + 8002040: 2600 movs r6, #0 + 8002042: 4d0a ldr r5, [pc, #40] @ (800206c <__libc_init_array+0x40>) + 8002044: 4c0a ldr r4, [pc, #40] @ (8002070 <__libc_init_array+0x44>) + 8002046: 1b64 subs r4, r4, r5 + 8002048: 10a4 asrs r4, r4, #2 + 800204a: 42a6 cmp r6, r4 + 800204c: d105 bne.n 800205a <__libc_init_array+0x2e> + 800204e: bd70 pop {r4, r5, r6, pc} + 8002050: f855 3b04 ldr.w r3, [r5], #4 + 8002054: 4798 blx r3 + 8002056: 3601 adds r6, #1 + 8002058: e7ee b.n 8002038 <__libc_init_array+0xc> + 800205a: f855 3b04 ldr.w r3, [r5], #4 + 800205e: 4798 blx r3 + 8002060: 3601 adds r6, #1 + 8002062: e7f2 b.n 800204a <__libc_init_array+0x1e> + 8002064: 080020c0 .word 0x080020c0 + 8002068: 080020c0 .word 0x080020c0 + 800206c: 080020c0 .word 0x080020c0 + 8002070: 080020c4 .word 0x080020c4 + +08002074 <_init>: + 8002074: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002076: bf00 nop + 8002078: bcf8 pop {r3, r4, r5, r6, r7} + 800207a: bc08 pop {r3} + 800207c: 469e mov lr, r3 + 800207e: 4770 bx lr + +08002080 <_fini>: + 8002080: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002082: bf00 nop + 8002084: bcf8 pop {r3, r4, r5, r6, r7} + 8002086: bc08 pop {r3} + 8002088: 469e mov lr, r3 + 800208a: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.map b/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.map new file mode 100644 index 0000000..2dfbcb3 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.map @@ -0,0 +1,2896 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x109 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x109 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_EnableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbc1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x7f97d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x989 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x7f72e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x19c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x987 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x7f7f7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x7fc53 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x945 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x7f880 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x963 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x7f88c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x894 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x7f66b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x8ee ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x7f79b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x1f50 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.affiche 0x080004b0 0x60 ./Core/Src/main.o + 0x080004b0 affiche + .text.main 0x08000510 0x44 ./Core/Src/main.o + 0x08000510 main + .text.SystemClock_Config + 0x08000554 0x8c ./Core/Src/main.o + 0x08000554 SystemClock_Config + .text.MX_SPI1_Init + 0x080005e0 0x6c ./Core/Src/main.o + .text.MX_GPIO_Init + 0x0800064c 0x7c ./Core/Src/main.o + .text.Error_Handler + 0x080006c8 0xc ./Core/Src/main.o + 0x080006c8 Error_Handler + .text.HAL_MspInit + 0x080006d4 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x080006d4 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000730 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000730 HAL_SPI_MspInit + .text.NMI_Handler + 0x080007b8 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007b8 NMI_Handler + .text.HardFault_Handler + 0x080007c0 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007c0 HardFault_Handler + .text.MemManage_Handler + 0x080007c8 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007c8 MemManage_Handler + .text.BusFault_Handler + 0x080007d0 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007d0 BusFault_Handler + .text.UsageFault_Handler + 0x080007d8 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007d8 UsageFault_Handler + .text.SVC_Handler + 0x080007e0 0xc ./Core/Src/stm32l1xx_it.o + 0x080007e0 SVC_Handler + .text.DebugMon_Handler + 0x080007ec 0xc ./Core/Src/stm32l1xx_it.o + 0x080007ec DebugMon_Handler + .text.PendSV_Handler + 0x080007f8 0xc ./Core/Src/stm32l1xx_it.o + 0x080007f8 PendSV_Handler + .text.SysTick_Handler + 0x08000804 0xc ./Core/Src/stm32l1xx_it.o + 0x08000804 SysTick_Handler + .text.SystemInit + 0x08000810 0xc ./Core/Src/system_stm32l1xx.o + 0x08000810 SystemInit + .text.Reset_Handler + 0x0800081c 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x0800081c Reset_Handler + .text.Default_Handler + 0x08000864 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000864 DMA2_Channel3_IRQHandler + 0x08000864 EXTI2_IRQHandler + 0x08000864 COMP_ACQ_IRQHandler + 0x08000864 TIM10_IRQHandler + 0x08000864 USB_HP_IRQHandler + 0x08000864 TIM6_IRQHandler + 0x08000864 PVD_IRQHandler + 0x08000864 EXTI3_IRQHandler + 0x08000864 EXTI0_IRQHandler + 0x08000864 I2C2_EV_IRQHandler + 0x08000864 SPI1_IRQHandler + 0x08000864 USB_FS_WKUP_IRQHandler + 0x08000864 DMA2_Channel2_IRQHandler + 0x08000864 DMA1_Channel4_IRQHandler + 0x08000864 ADC1_IRQHandler + 0x08000864 USART3_IRQHandler + 0x08000864 DMA1_Channel7_IRQHandler + 0x08000864 LCD_IRQHandler + 0x08000864 UART5_IRQHandler + 0x08000864 TIM4_IRQHandler + 0x08000864 DMA2_Channel1_IRQHandler + 0x08000864 I2C1_EV_IRQHandler + 0x08000864 DMA1_Channel6_IRQHandler + 0x08000864 UART4_IRQHandler + 0x08000864 DMA2_Channel4_IRQHandler + 0x08000864 TIM3_IRQHandler + 0x08000864 RCC_IRQHandler + 0x08000864 DMA1_Channel1_IRQHandler + 0x08000864 Default_Handler + 0x08000864 EXTI15_10_IRQHandler + 0x08000864 TIM7_IRQHandler + 0x08000864 TIM5_IRQHandler + 0x08000864 EXTI9_5_IRQHandler + 0x08000864 TIM9_IRQHandler + 0x08000864 TAMPER_STAMP_IRQHandler + 0x08000864 RTC_WKUP_IRQHandler + 0x08000864 SPI2_IRQHandler + 0x08000864 DMA2_Channel5_IRQHandler + 0x08000864 DMA1_Channel5_IRQHandler + 0x08000864 USB_LP_IRQHandler + 0x08000864 EXTI4_IRQHandler + 0x08000864 DMA1_Channel3_IRQHandler + 0x08000864 COMP_IRQHandler + 0x08000864 WWDG_IRQHandler + 0x08000864 TIM2_IRQHandler + 0x08000864 DAC_IRQHandler + 0x08000864 EXTI1_IRQHandler + 0x08000864 TIM11_IRQHandler + 0x08000864 USART2_IRQHandler + 0x08000864 I2C2_ER_IRQHandler + 0x08000864 DMA1_Channel2_IRQHandler + 0x08000864 FLASH_IRQHandler + 0x08000864 USART1_IRQHandler + 0x08000864 SPI3_IRQHandler + 0x08000864 I2C1_ER_IRQHandler + 0x08000864 RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000866 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000866 MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000890 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000890 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x080008a0 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x080008a0 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x080008b0 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x080008b0 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x080008d4 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x080008d4 MAX7219_Clear + .text.MAX7219_DisplayChar + 0x08000900 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000900 MAX7219_DisplayChar + .text.MAX7219_Write + 0x0800092c 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x0800092c MAX7219_Write + .text.MAX7219_SendByte + 0x08000968 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x0800098c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x0800098c HAL_Init + .text.HAL_InitTick + 0x080009bc 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x080009bc HAL_InitTick + .text.HAL_IncTick + 0x08000a30 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a30 HAL_IncTick + .text.HAL_GetTick + 0x08000a54 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a54 HAL_GetTick + .text.HAL_Delay + 0x08000a68 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a68 HAL_Delay + .text.__NVIC_SetPriorityGrouping + 0x08000aac 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000af4 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000b10 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000b64 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000bc8 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000c0c 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000c0c HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000c22 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000c22 HAL_NVIC_SetPriority + .text.HAL_SYSTICK_Config + 0x08000c5a 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000c5a HAL_SYSTICK_Config + *fill* 0x08000c72 0x2 + .text.HAL_GPIO_Init + 0x08000c74 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000c74 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x08000f94 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000f94 HAL_GPIO_WritePin + .text.HAL_RCC_OscConfig + 0x08000fc4 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08000fc4 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x08001624 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001624 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x0800188c 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x0800188c HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001a08 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001ac8 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001ac8 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001bda 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001bda HAL_SPI_Transmit + *fill* 0x08001e62 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08001e64 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08001f74 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.memset 0x0800201c 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x0800201c memset + .text.__libc_init_array + 0x0800202c 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x0800202c __libc_init_array + *(.glue_7) + .glue_7 0x08002074 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08002074 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08002074 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08002074 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002074 _init + .init 0x08002078 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002080 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002080 _fini + .fini 0x08002084 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x0800208c . = ALIGN (0x4) + 0x0800208c _etext = . + +.vfp11_veneer 0x0800208c 0x0 + .vfp11_veneer 0x0800208c 0x0 linker stubs + +.v4_bx 0x0800208c 0x0 + .v4_bx 0x0800208c 0x0 linker stubs + +.iplt 0x0800208c 0x0 + .iplt 0x0800208c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x0800208c 0x2c + 0x0800208c . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x0800208c 0x9 ./Core/Src/system_stm32l1xx.o + 0x0800208c PLLMulTable + *fill* 0x08002095 0x3 + .rodata.AHBPrescTable + 0x08002098 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002098 AHBPrescTable + .rodata.conv_7seg + 0x080020a8 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x080020a8 conv_7seg + 0x080020b8 . = ALIGN (0x4) + +.ARM.extab 0x080020b8 0x0 + 0x080020b8 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x080020b8 . = ALIGN (0x4) + +.ARM 0x080020b8 0x8 + 0x080020b8 . = ALIGN (0x4) + 0x080020b8 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x080020b8 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080020c0 __exidx_end = . + 0x080020c0 . = ALIGN (0x4) + +.preinit_array 0x080020c0 0x0 + 0x080020c0 . = ALIGN (0x4) + 0x080020c0 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x080020c0 PROVIDE (__preinit_array_end = .) + 0x080020c0 . = ALIGN (0x4) + +.init_array 0x080020c0 0x4 + 0x080020c0 . = ALIGN (0x4) + 0x080020c0 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x080020c0 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x080020c4 PROVIDE (__init_array_end = .) + 0x080020c4 . = ALIGN (0x4) + +.fini_array 0x080020c4 0x4 + 0x080020c4 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x080020c4 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x080020c8 . = ALIGN (0x4) + 0x080020c8 _sidata = LOADADDR (.data) + +.rel.dyn 0x080020c8 0x0 + .rel.iplt 0x080020c8 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x080020c8 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x080020d4 + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0x78 load address 0x080020d4 + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.uwTick 0x20000080 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000080 uwTick + *(COMMON) + 0x20000084 . = ALIGN (0x4) + 0x20000084 _ebss = . + 0x20000084 __bss_end__ = _ebss + +._user_heap_stack + 0x20000084 0x604 load address 0x080020d4 + 0x20000088 . = ALIGN (0x8) + *fill* 0x20000084 0x4 + [!provide] PROVIDE (end = .) + 0x20000088 PROVIDE (_end = .) + 0x20000288 . = (. + _Min_Heap_Size) + *fill* 0x20000088 0x200 + 0x20000688 . = (. + _Min_Stack_Size) + *fill* 0x20000288 0x400 + 0x20000688 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x0000025a 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x00000287 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002a4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x000002d1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x000002ee 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP2_INIT_DISPLAY.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x573e + .debug_info 0x00000000 0xb4f ./Core/Src/main.o + .debug_info 0x00000b4f 0x828 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00001377 0x113 ./Core/Src/stm32l1xx_it.o + .debug_info 0x0000148a 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x00001706 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x00001736 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x00001f44 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x00002633 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x00003318 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x000038ca 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x00004265 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_abbrev 0x00000000 0x145f + .debug_abbrev 0x00000000 0x27f ./Core/Src/main.o + .debug_abbrev 0x0000027f 0x1ad ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x0000042c 0x73 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x0000049f 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x000005bb 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x000005df 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x000007c8 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000a3d 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000d59 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x00000f2d 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x000011e5 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_aranges 0x00000000 0x660 + .debug_aranges + 0x00000000 0x48 ./Core/Src/main.o + .debug_aranges + 0x00000048 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x00000078 0x60 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x000000d8 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000100 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000128 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001a0 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x00000280 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003a8 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000400 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x00000490 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_rnglists + 0x00000000 0x4b4 + .debug_rnglists + 0x00000000 0x32 ./Core/Src/main.o + .debug_rnglists + 0x00000032 0x20 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000052 0x43 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x00000095 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000af 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000c8 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000011d 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001c0 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x00000299 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x000002d8 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000345 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_macro 0x00000000 0x1499e + .debug_macro 0x00000000 0x1b4 ./Core/Src/main.o + .debug_macro 0x000001b4 0xacc ./Core/Src/main.o + .debug_macro 0x00000c80 0x109 ./Core/Src/main.o + .debug_macro 0x00000d89 0x2e ./Core/Src/main.o + .debug_macro 0x00000db7 0x22 ./Core/Src/main.o + .debug_macro 0x00000dd9 0x22 ./Core/Src/main.o + .debug_macro 0x00000dfb 0x8e ./Core/Src/main.o + .debug_macro 0x00000e89 0x51 ./Core/Src/main.o + .debug_macro 0x00000eda 0x103 ./Core/Src/main.o + .debug_macro 0x00000fdd 0x6a ./Core/Src/main.o + .debug_macro 0x00001047 0x1df ./Core/Src/main.o + .debug_macro 0x00001226 0x1c ./Core/Src/main.o + .debug_macro 0x00001242 0x22 ./Core/Src/main.o + .debug_macro 0x00001264 0xbd ./Core/Src/main.o + .debug_macro 0x00001321 0xe49 ./Core/Src/main.o + .debug_macro 0x0000216a 0x11f ./Core/Src/main.o + .debug_macro 0x00002289 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da2a 0x6d ./Core/Src/main.o + .debug_macro 0x0000da97 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f78 0x190 ./Core/Src/main.o + .debug_macro 0x00011108 0x5b ./Core/Src/main.o + .debug_macro 0x00011163 0xe37 ./Core/Src/main.o + .debug_macro 0x00011f9a 0x35b ./Core/Src/main.o + .debug_macro 0x000122f5 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124ad 0xc5 ./Core/Src/main.o + .debug_macro 0x00012572 0x21e ./Core/Src/main.o + .debug_macro 0x00012790 0x236 ./Core/Src/main.o + .debug_macro 0x000129c6 0x115 ./Core/Src/main.o + .debug_macro 0x00012adb 0x567 ./Core/Src/main.o + .debug_macro 0x00013042 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001322b 0x22 ./Core/Src/main.o + .debug_macro 0x0001324d 0x225 ./Core/Src/main.o + .debug_macro 0x00013472 0x170 ./Core/Src/main.o + .debug_macro 0x000135e2 0x492 ./Core/Src/main.o + .debug_macro 0x00013a74 0x10 ./Core/Src/main.o + .debug_macro 0x00013a84 0x1a5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00013c29 0x1af ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00013dd8 0x19b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00013f73 0x1d8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x0001414b 0x1bf ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x0001430a 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x000144a5 0x1a2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014647 0x1ad ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000147f4 0x1aa ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_line 0x00000000 0x6fc2 + .debug_line 0x00000000 0x7c4 ./Core/Src/main.o + .debug_line 0x000007c4 0x6dd ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00000ea1 0x73e ./Core/Src/stm32l1xx_it.o + .debug_line 0x000015df 0x730 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001d0f 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001d88 0x7de ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002566 0x95b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00002ec1 0xc2a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003aeb 0x99f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x0000448a 0xf1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x000053a8 0x1c1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_str 0x00000000 0x81143 + .debug_str 0x00000000 0x81143 ./Core/Src/main.o + 0x7fc9a (size before relaxing) + .debug_str 0x00081143 0x7fa10 ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x00081143 0x7f5a7 ./Core/Src/stm32l1xx_it.o + .debug_str 0x00081143 0x7f5f8 ./Core/Src/system_stm32l1xx.o + .debug_str 0x00081143 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x00081143 0x7fb54 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x00081143 0x7fd20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x00081143 0x7fe2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x00081143 0x7f78b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x00081143 0x7fab4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x00081143 0x7ff1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_frame 0x00000000 0x18ac + .debug_frame 0x00000000 0xd0 ./Core/Src/main.o + .debug_frame 0x000000d0 0x80 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x00000150 0x104 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000254 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x000002ac 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000444 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000780 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000c68 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000db4 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x00000fd8 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x00001800 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00001820 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x0000184c 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00001878 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.list b/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.list new file mode 100644 index 0000000..e9f61c3 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.list @@ -0,0 +1,5427 @@ + +TP2_ISEN_DISPLAY.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00001f28 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000001c 08002064 08002064 00003064 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08002080 08002080 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08002080 08002080 00003080 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 08002088 08002088 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08002088 08002088 00003088 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 0800208c 0800208c 0000308c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 08002090 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 00000078 2000000c 0800209c 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 20000084 0800209c 00004084 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 000057a5 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 0000148d 00000000 00000000 000097da 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000660 00000000 00000000 0000ac68 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 000004b5 00000000 00000000 0000b2c8 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 00014998 00000000 00000000 0000b77d 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 00006fed 00000000 00000000 00020115 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 0008118d 00000000 00000000 00027102 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000a828f 2**0 + CONTENTS, READONLY + 20 .debug_frame 000018a4 00000000 00000000 000a82d4 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000a9b78 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 0800204c .word 0x0800204c + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 0800204c .word 0x0800204c + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void displayScrollingText() { + 80004b0: b580 push {r7, lr} + 80004b2: b086 sub sp, #24 + 80004b4: af00 add r7, sp, #0 + const uint8_t I = 0b00110000; // I + 80004b6: 2330 movs r3, #48 @ 0x30 + 80004b8: 73fb strb r3, [r7, #15] + const uint8_t S = 0b01011011; // S + 80004ba: 235b movs r3, #91 @ 0x5b + 80004bc: 73bb strb r3, [r7, #14] + const uint8_t E = 0b01001111; // E + 80004be: 234f movs r3, #79 @ 0x4f + 80004c0: 737b strb r3, [r7, #13] + const uint8_t N = 0b00110110; // N + 80004c2: 2336 movs r3, #54 @ 0x36 + 80004c4: 733b strb r3, [r7, #12] + const uint8_t SPACE = 0b00000000; // Espace + 80004c6: 2300 movs r3, #0 + 80004c8: 72fb strb r3, [r7, #11] + + const uint8_t symbols[] = {I, S, E, N, SPACE}; + 80004ca: 7bfb ldrb r3, [r7, #15] + 80004cc: 713b strb r3, [r7, #4] + 80004ce: 7bbb ldrb r3, [r7, #14] + 80004d0: 717b strb r3, [r7, #5] + 80004d2: 7b7b ldrb r3, [r7, #13] + 80004d4: 71bb strb r3, [r7, #6] + 80004d6: 7b3b ldrb r3, [r7, #12] + 80004d8: 71fb strb r3, [r7, #7] + 80004da: 7afb ldrb r3, [r7, #11] + 80004dc: 723b strb r3, [r7, #8] + const uint8_t numSymbols = sizeof(symbols) / sizeof(symbols[0]); + 80004de: 2305 movs r3, #5 + 80004e0: 72bb strb r3, [r7, #10] + + while (1) { + for (int i = 0; i < numSymbols; i++) { + 80004e2: 2300 movs r3, #0 + 80004e4: 617b str r3, [r7, #20] + 80004e6: e021 b.n 800052c + for (int j = 0; j < 4; j++) { + 80004e8: 2300 movs r3, #0 + 80004ea: 613b str r3, [r7, #16] + 80004ec: e014 b.n 8000518 + MAX7219_Write(j + 1, symbols[(i + j) % numSymbols]); + 80004ee: 693b ldr r3, [r7, #16] + 80004f0: 1c58 adds r0, r3, #1 + 80004f2: 697a ldr r2, [r7, #20] + 80004f4: 693b ldr r3, [r7, #16] + 80004f6: 4413 add r3, r2 + 80004f8: 7aba ldrb r2, [r7, #10] + 80004fa: fb93 f1f2 sdiv r1, r3, r2 + 80004fe: fb01 f202 mul.w r2, r1, r2 + 8000502: 1a9b subs r3, r3, r2 + 8000504: 3318 adds r3, #24 + 8000506: 443b add r3, r7 + 8000508: f813 3c14 ldrb.w r3, [r3, #-20] + 800050c: 4619 mov r1, r3 + 800050e: f000 f9f9 bl 8000904 + for (int j = 0; j < 4; j++) { + 8000512: 693b ldr r3, [r7, #16] + 8000514: 3301 adds r3, #1 + 8000516: 613b str r3, [r7, #16] + 8000518: 693b ldr r3, [r7, #16] + 800051a: 2b03 cmp r3, #3 + 800051c: dde7 ble.n 80004ee + } + HAL_Delay(500); + 800051e: f44f 70fa mov.w r0, #500 @ 0x1f4 + 8000522: f000 fa8d bl 8000a40 + for (int i = 0; i < numSymbols; i++) { + 8000526: 697b ldr r3, [r7, #20] + 8000528: 3301 adds r3, #1 + 800052a: 617b str r3, [r7, #20] + 800052c: 7abb ldrb r3, [r7, #10] + 800052e: 697a ldr r2, [r7, #20] + 8000530: 429a cmp r2, r3 + 8000532: dbd9 blt.n 80004e8 + 8000534: e7d5 b.n 80004e2 + +08000536
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 8000536: b580 push {r7, lr} + 8000538: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 800053a: f000 fa13 bl 8000964 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 800053e: f000 f80b bl 8000558 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 8000542: f000 f885 bl 8000650 + MX_SPI1_Init(); + 8000546: f000 f84d bl 80005e4 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 800054a: f000 f98e bl 800086a + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 800054e: f000 f9c3 bl 80008d8 + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + displayScrollingText(); + 8000552: f7ff ffad bl 80004b0 + 8000556: e7fc b.n 8000552 + +08000558 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000558: b580 push {r7, lr} + 800055a: b092 sub sp, #72 @ 0x48 + 800055c: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 800055e: f107 0314 add.w r3, r7, #20 + 8000562: 2234 movs r2, #52 @ 0x34 + 8000564: 2100 movs r1, #0 + 8000566: 4618 mov r0, r3 + 8000568: f001 fd44 bl 8001ff4 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 800056c: 463b mov r3, r7 + 800056e: 2200 movs r2, #0 + 8000570: 601a str r2, [r3, #0] + 8000572: 605a str r2, [r3, #4] + 8000574: 609a str r2, [r3, #8] + 8000576: 60da str r2, [r3, #12] + 8000578: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 800057a: 4b19 ldr r3, [pc, #100] @ (80005e0 ) + 800057c: 681b ldr r3, [r3, #0] + 800057e: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 8000582: 4a17 ldr r2, [pc, #92] @ (80005e0 ) + 8000584: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000588: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 800058a: 2302 movs r3, #2 + 800058c: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 800058e: 2301 movs r3, #1 + 8000590: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 8000592: 2310 movs r3, #16 + 8000594: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 8000596: 2300 movs r3, #0 + 8000598: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 800059a: f107 0314 add.w r3, r7, #20 + 800059e: 4618 mov r0, r3 + 80005a0: f000 fcfc bl 8000f9c + 80005a4: 4603 mov r3, r0 + 80005a6: 2b00 cmp r3, #0 + 80005a8: d001 beq.n 80005ae + { + Error_Handler(); + 80005aa: f000 f88f bl 80006cc + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 80005ae: 230f movs r3, #15 + 80005b0: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 80005b2: 2301 movs r3, #1 + 80005b4: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 80005b6: 2300 movs r3, #0 + 80005b8: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80005ba: 2300 movs r3, #0 + 80005bc: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80005be: 2300 movs r3, #0 + 80005c0: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 80005c2: 463b mov r3, r7 + 80005c4: 2100 movs r1, #0 + 80005c6: 4618 mov r0, r3 + 80005c8: f001 f818 bl 80015fc + 80005cc: 4603 mov r3, r0 + 80005ce: 2b00 cmp r3, #0 + 80005d0: d001 beq.n 80005d6 + { + Error_Handler(); + 80005d2: f000 f87b bl 80006cc + } +} + 80005d6: bf00 nop + 80005d8: 3748 adds r7, #72 @ 0x48 + 80005da: 46bd mov sp, r7 + 80005dc: bd80 pop {r7, pc} + 80005de: bf00 nop + 80005e0: 40007000 .word 0x40007000 + +080005e4 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 80005e4: b580 push {r7, lr} + 80005e6: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 80005e8: 4b17 ldr r3, [pc, #92] @ (8000648 ) + 80005ea: 4a18 ldr r2, [pc, #96] @ (800064c ) + 80005ec: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 80005ee: 4b16 ldr r3, [pc, #88] @ (8000648 ) + 80005f0: f44f 7282 mov.w r2, #260 @ 0x104 + 80005f4: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 80005f6: 4b14 ldr r3, [pc, #80] @ (8000648 ) + 80005f8: 2200 movs r2, #0 + 80005fa: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80005fc: 4b12 ldr r3, [pc, #72] @ (8000648 ) + 80005fe: 2200 movs r2, #0 + 8000600: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 8000602: 4b11 ldr r3, [pc, #68] @ (8000648 ) + 8000604: 2200 movs r2, #0 + 8000606: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 8000608: 4b0f ldr r3, [pc, #60] @ (8000648 ) + 800060a: 2200 movs r2, #0 + 800060c: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 800060e: 4b0e ldr r3, [pc, #56] @ (8000648 ) + 8000610: f44f 7200 mov.w r2, #512 @ 0x200 + 8000614: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8000616: 4b0c ldr r3, [pc, #48] @ (8000648 ) + 8000618: 2200 movs r2, #0 + 800061a: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 800061c: 4b0a ldr r3, [pc, #40] @ (8000648 ) + 800061e: 2200 movs r2, #0 + 8000620: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 8000622: 4b09 ldr r3, [pc, #36] @ (8000648 ) + 8000624: 2200 movs r2, #0 + 8000626: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8000628: 4b07 ldr r3, [pc, #28] @ (8000648 ) + 800062a: 2200 movs r2, #0 + 800062c: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 800062e: 4b06 ldr r3, [pc, #24] @ (8000648 ) + 8000630: 220a movs r2, #10 + 8000632: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 8000634: 4804 ldr r0, [pc, #16] @ (8000648 ) + 8000636: f001 fa33 bl 8001aa0 + 800063a: 4603 mov r3, r0 + 800063c: 2b00 cmp r3, #0 + 800063e: d001 beq.n 8000644 + { + Error_Handler(); + 8000640: f000 f844 bl 80006cc + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 8000644: bf00 nop + 8000646: bd80 pop {r7, pc} + 8000648: 20000028 .word 0x20000028 + 800064c: 40013000 .word 0x40013000 + +08000650 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000650: b580 push {r7, lr} + 8000652: b088 sub sp, #32 + 8000654: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000656: f107 030c add.w r3, r7, #12 + 800065a: 2200 movs r2, #0 + 800065c: 601a str r2, [r3, #0] + 800065e: 605a str r2, [r3, #4] + 8000660: 609a str r2, [r3, #8] + 8000662: 60da str r2, [r3, #12] + 8000664: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000666: 4b17 ldr r3, [pc, #92] @ (80006c4 ) + 8000668: 69db ldr r3, [r3, #28] + 800066a: 4a16 ldr r2, [pc, #88] @ (80006c4 ) + 800066c: f043 0304 orr.w r3, r3, #4 + 8000670: 61d3 str r3, [r2, #28] + 8000672: 4b14 ldr r3, [pc, #80] @ (80006c4 ) + 8000674: 69db ldr r3, [r3, #28] + 8000676: f003 0304 and.w r3, r3, #4 + 800067a: 60bb str r3, [r7, #8] + 800067c: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800067e: 4b11 ldr r3, [pc, #68] @ (80006c4 ) + 8000680: 69db ldr r3, [r3, #28] + 8000682: 4a10 ldr r2, [pc, #64] @ (80006c4 ) + 8000684: f043 0301 orr.w r3, r3, #1 + 8000688: 61d3 str r3, [r2, #28] + 800068a: 4b0e ldr r3, [pc, #56] @ (80006c4 ) + 800068c: 69db ldr r3, [r3, #28] + 800068e: f003 0301 and.w r3, r3, #1 + 8000692: 607b str r3, [r7, #4] + 8000694: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 8000696: 2200 movs r2, #0 + 8000698: 2101 movs r1, #1 + 800069a: 480b ldr r0, [pc, #44] @ (80006c8 ) + 800069c: f000 fc66 bl 8000f6c + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 80006a0: 2301 movs r3, #1 + 80006a2: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80006a4: 2301 movs r3, #1 + 80006a6: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80006a8: 2300 movs r3, #0 + 80006aa: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80006ac: 2300 movs r3, #0 + 80006ae: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80006b0: f107 030c add.w r3, r7, #12 + 80006b4: 4619 mov r1, r3 + 80006b6: 4804 ldr r0, [pc, #16] @ (80006c8 ) + 80006b8: f000 fac8 bl 8000c4c + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80006bc: bf00 nop + 80006be: 3720 adds r7, #32 + 80006c0: 46bd mov sp, r7 + 80006c2: bd80 pop {r7, pc} + 80006c4: 40023800 .word 0x40023800 + 80006c8: 40020800 .word 0x40020800 + +080006cc : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 80006cc: b480 push {r7} + 80006ce: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 80006d0: b672 cpsid i +} + 80006d2: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 80006d4: bf00 nop + 80006d6: e7fd b.n 80006d4 + +080006d8 : +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 80006d8: b480 push {r7} + 80006da: b085 sub sp, #20 + 80006dc: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 80006de: 4b14 ldr r3, [pc, #80] @ (8000730 ) + 80006e0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80006e2: 4a13 ldr r2, [pc, #76] @ (8000730 ) + 80006e4: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80006e8: 6253 str r3, [r2, #36] @ 0x24 + 80006ea: 4b11 ldr r3, [pc, #68] @ (8000730 ) + 80006ec: 6a5b ldr r3, [r3, #36] @ 0x24 + 80006ee: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80006f2: 60fb str r3, [r7, #12] + 80006f4: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 80006f6: 4b0e ldr r3, [pc, #56] @ (8000730 ) + 80006f8: 6a1b ldr r3, [r3, #32] + 80006fa: 4a0d ldr r2, [pc, #52] @ (8000730 ) + 80006fc: f043 0301 orr.w r3, r3, #1 + 8000700: 6213 str r3, [r2, #32] + 8000702: 4b0b ldr r3, [pc, #44] @ (8000730 ) + 8000704: 6a1b ldr r3, [r3, #32] + 8000706: f003 0301 and.w r3, r3, #1 + 800070a: 60bb str r3, [r7, #8] + 800070c: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800070e: 4b08 ldr r3, [pc, #32] @ (8000730 ) + 8000710: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000712: 4a07 ldr r2, [pc, #28] @ (8000730 ) + 8000714: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000718: 6253 str r3, [r2, #36] @ 0x24 + 800071a: 4b05 ldr r3, [pc, #20] @ (8000730 ) + 800071c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800071e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000722: 607b str r3, [r7, #4] + 8000724: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000726: bf00 nop + 8000728: 3714 adds r7, #20 + 800072a: 46bd mov sp, r7 + 800072c: bc80 pop {r7} + 800072e: 4770 bx lr + 8000730: 40023800 .word 0x40023800 + +08000734 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000734: b580 push {r7, lr} + 8000736: b08a sub sp, #40 @ 0x28 + 8000738: af00 add r7, sp, #0 + 800073a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800073c: f107 0314 add.w r3, r7, #20 + 8000740: 2200 movs r2, #0 + 8000742: 601a str r2, [r3, #0] + 8000744: 605a str r2, [r3, #4] + 8000746: 609a str r2, [r3, #8] + 8000748: 60da str r2, [r3, #12] + 800074a: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 800074c: 687b ldr r3, [r7, #4] + 800074e: 681b ldr r3, [r3, #0] + 8000750: 4a17 ldr r2, [pc, #92] @ (80007b0 ) + 8000752: 4293 cmp r3, r2 + 8000754: d127 bne.n 80007a6 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 8000756: 4b17 ldr r3, [pc, #92] @ (80007b4 ) + 8000758: 6a1b ldr r3, [r3, #32] + 800075a: 4a16 ldr r2, [pc, #88] @ (80007b4 ) + 800075c: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 8000760: 6213 str r3, [r2, #32] + 8000762: 4b14 ldr r3, [pc, #80] @ (80007b4 ) + 8000764: 6a1b ldr r3, [r3, #32] + 8000766: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 800076a: 613b str r3, [r7, #16] + 800076c: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800076e: 4b11 ldr r3, [pc, #68] @ (80007b4 ) + 8000770: 69db ldr r3, [r3, #28] + 8000772: 4a10 ldr r2, [pc, #64] @ (80007b4 ) + 8000774: f043 0301 orr.w r3, r3, #1 + 8000778: 61d3 str r3, [r2, #28] + 800077a: 4b0e ldr r3, [pc, #56] @ (80007b4 ) + 800077c: 69db ldr r3, [r3, #28] + 800077e: f003 0301 and.w r3, r3, #1 + 8000782: 60fb str r3, [r7, #12] + 8000784: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 8000786: 23e0 movs r3, #224 @ 0xe0 + 8000788: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 800078a: 2302 movs r3, #2 + 800078c: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800078e: 2300 movs r3, #0 + 8000790: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8000792: 2303 movs r3, #3 + 8000794: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 8000796: 2305 movs r3, #5 + 8000798: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 800079a: f107 0314 add.w r3, r7, #20 + 800079e: 4619 mov r1, r3 + 80007a0: 4805 ldr r0, [pc, #20] @ (80007b8 ) + 80007a2: f000 fa53 bl 8000c4c + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 80007a6: bf00 nop + 80007a8: 3728 adds r7, #40 @ 0x28 + 80007aa: 46bd mov sp, r7 + 80007ac: bd80 pop {r7, pc} + 80007ae: bf00 nop + 80007b0: 40013000 .word 0x40013000 + 80007b4: 40023800 .word 0x40023800 + 80007b8: 40020000 .word 0x40020000 + +080007bc : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 80007bc: b480 push {r7} + 80007be: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 80007c0: bf00 nop + 80007c2: e7fd b.n 80007c0 + +080007c4 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 80007c4: b480 push {r7} + 80007c6: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 80007c8: bf00 nop + 80007ca: e7fd b.n 80007c8 + +080007cc : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 80007cc: b480 push {r7} + 80007ce: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 80007d0: bf00 nop + 80007d2: e7fd b.n 80007d0 + +080007d4 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 80007d4: b480 push {r7} + 80007d6: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 80007d8: bf00 nop + 80007da: e7fd b.n 80007d8 + +080007dc : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 80007dc: b480 push {r7} + 80007de: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 80007e0: bf00 nop + 80007e2: e7fd b.n 80007e0 + +080007e4 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 80007e4: b480 push {r7} + 80007e6: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 80007e8: bf00 nop + 80007ea: 46bd mov sp, r7 + 80007ec: bc80 pop {r7} + 80007ee: 4770 bx lr + +080007f0 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 80007f0: b480 push {r7} + 80007f2: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 80007f4: bf00 nop + 80007f6: 46bd mov sp, r7 + 80007f8: bc80 pop {r7} + 80007fa: 4770 bx lr + +080007fc : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 80007fc: b480 push {r7} + 80007fe: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000800: bf00 nop + 8000802: 46bd mov sp, r7 + 8000804: bc80 pop {r7} + 8000806: 4770 bx lr + +08000808 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000808: b580 push {r7, lr} + 800080a: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 800080c: f000 f8fc bl 8000a08 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000810: bf00 nop + 8000812: bd80 pop {r7, pc} + +08000814 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000814: b480 push {r7} + 8000816: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000818: bf00 nop + 800081a: 46bd mov sp, r7 + 800081c: bc80 pop {r7} + 800081e: 4770 bx lr + +08000820 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000820: f7ff fff8 bl 8000814 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000824: 480b ldr r0, [pc, #44] @ (8000854 ) + ldr r1, =_edata + 8000826: 490c ldr r1, [pc, #48] @ (8000858 ) + ldr r2, =_sidata + 8000828: 4a0c ldr r2, [pc, #48] @ (800085c ) + movs r3, #0 + 800082a: 2300 movs r3, #0 + b LoopCopyDataInit + 800082c: e002 b.n 8000834 + +0800082e : + +CopyDataInit: + ldr r4, [r2, r3] + 800082e: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000830: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000832: 3304 adds r3, #4 + +08000834 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000834: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000836: 428c cmp r4, r1 + bcc CopyDataInit + 8000838: d3f9 bcc.n 800082e + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 800083a: 4a09 ldr r2, [pc, #36] @ (8000860 ) + ldr r4, =_ebss + 800083c: 4c09 ldr r4, [pc, #36] @ (8000864 ) + movs r3, #0 + 800083e: 2300 movs r3, #0 + b LoopFillZerobss + 8000840: e001 b.n 8000846 + +08000842 : + +FillZerobss: + str r3, [r2] + 8000842: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000844: 3204 adds r2, #4 + +08000846 : + +LoopFillZerobss: + cmp r2, r4 + 8000846: 42a2 cmp r2, r4 + bcc FillZerobss + 8000848: d3fb bcc.n 8000842 + +/* Call static constructors */ + bl __libc_init_array + 800084a: f001 fbdb bl 8002004 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 800084e: f7ff fe72 bl 8000536
+ bx lr + 8000852: 4770 bx lr + ldr r0, =_sdata + 8000854: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000858: 2000000c .word 0x2000000c + ldr r2, =_sidata + 800085c: 08002090 .word 0x08002090 + ldr r2, =_sbss + 8000860: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000864: 20000084 .word 0x20000084 + +08000868 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000868: e7fe b.n 8000868 + +0800086a : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 800086a: b580 push {r7, lr} + 800086c: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 800086e: 2107 movs r1, #7 + 8000870: 200b movs r0, #11 + 8000872: f000 f847 bl 8000904 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000876: 2100 movs r1, #0 + 8000878: 2009 movs r0, #9 + 800087a: f000 f843 bl 8000904 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 800087e: f000 f809 bl 8000894 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000882: f000 f80f bl 80008a4 + MAX7219_Clear(); // clear all digits + 8000886: f000 f827 bl 80008d8 + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 800088a: 200f movs r0, #15 + 800088c: f000 f812 bl 80008b4 +} + 8000890: bf00 nop + 8000892: bd80 pop {r7, pc} + +08000894 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000894: b580 push {r7, lr} + 8000896: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000898: 2101 movs r1, #1 + 800089a: 200c movs r0, #12 + 800089c: f000 f832 bl 8000904 +} + 80008a0: bf00 nop + 80008a2: bd80 pop {r7, pc} + +080008a4 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 80008a4: b580 push {r7, lr} + 80008a6: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 80008a8: 2100 movs r1, #0 + 80008aa: 200f movs r0, #15 + 80008ac: f000 f82a bl 8000904 +} + 80008b0: bf00 nop + 80008b2: bd80 pop {r7, pc} + +080008b4 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 80008b4: b580 push {r7, lr} + 80008b6: b082 sub sp, #8 + 80008b8: af00 add r7, sp, #0 + 80008ba: 4603 mov r3, r0 + 80008bc: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 80008be: 79fb ldrb r3, [r7, #7] + 80008c0: f003 030f and.w r3, r3, #15 + 80008c4: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 80008c6: 79fb ldrb r3, [r7, #7] + 80008c8: 4619 mov r1, r3 + 80008ca: 200a movs r0, #10 + 80008cc: f000 f81a bl 8000904 +} + 80008d0: bf00 nop + 80008d2: 3708 adds r7, #8 + 80008d4: 46bd mov sp, r7 + 80008d6: bd80 pop {r7, pc} + +080008d8 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 80008d8: b580 push {r7, lr} + 80008da: b082 sub sp, #8 + 80008dc: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 80008de: 2300 movs r3, #0 + 80008e0: 71fb strb r3, [r7, #7] + 80008e2: e007 b.n 80008f4 + MAX7219_Write(i, 0x00); // turn all segments off + 80008e4: 79fb ldrb r3, [r7, #7] + 80008e6: 2100 movs r1, #0 + 80008e8: 4618 mov r0, r3 + 80008ea: f000 f80b bl 8000904 + for (i=0; i < 8; i++) + 80008ee: 79fb ldrb r3, [r7, #7] + 80008f0: 3301 adds r3, #1 + 80008f2: 71fb strb r3, [r7, #7] + 80008f4: 79fb ldrb r3, [r7, #7] + 80008f6: 2b07 cmp r3, #7 + 80008f8: d9f4 bls.n 80008e4 +} + 80008fa: bf00 nop + 80008fc: bf00 nop + 80008fe: 3708 adds r7, #8 + 8000900: 46bd mov sp, r7 + 8000902: bd80 pop {r7, pc} + +08000904 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000904: b580 push {r7, lr} + 8000906: b082 sub sp, #8 + 8000908: af00 add r7, sp, #0 + 800090a: 4603 mov r3, r0 + 800090c: 460a mov r2, r1 + 800090e: 71fb strb r3, [r7, #7] + 8000910: 4613 mov r3, r2 + 8000912: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000914: 4b09 ldr r3, [pc, #36] @ (800093c ) + 8000916: f44f 3280 mov.w r2, #65536 @ 0x10000 + 800091a: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 800091c: 79fb ldrb r3, [r7, #7] + 800091e: 4618 mov r0, r3 + 8000920: f000 f80e bl 8000940 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000924: 79bb ldrb r3, [r7, #6] + 8000926: 4618 mov r0, r3 + 8000928: f000 f80a bl 8000940 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 800092c: 4b03 ldr r3, [pc, #12] @ (800093c ) + 800092e: 2201 movs r2, #1 + 8000930: 619a str r2, [r3, #24] + } + 8000932: bf00 nop + 8000934: 3708 adds r7, #8 + 8000936: 46bd mov sp, r7 + 8000938: bd80 pop {r7, pc} + 800093a: bf00 nop + 800093c: 40020800 .word 0x40020800 + +08000940 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000940: b580 push {r7, lr} + 8000942: b082 sub sp, #8 + 8000944: af00 add r7, sp, #0 + 8000946: 4603 mov r3, r0 + 8000948: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 800094a: 1df9 adds r1, r7, #7 + 800094c: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000950: 2201 movs r2, #1 + 8000952: 4803 ldr r0, [pc, #12] @ (8000960 ) + 8000954: f001 f92d bl 8001bb2 + +} + 8000958: bf00 nop + 800095a: 3708 adds r7, #8 + 800095c: 46bd mov sp, r7 + 800095e: bd80 pop {r7, pc} + 8000960: 20000028 .word 0x20000028 + +08000964 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000964: b580 push {r7, lr} + 8000966: b082 sub sp, #8 + 8000968: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 800096a: 2300 movs r3, #0 + 800096c: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 800096e: 2003 movs r0, #3 + 8000970: f000 f938 bl 8000be4 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000974: 200f movs r0, #15 + 8000976: f000 f80d bl 8000994 + 800097a: 4603 mov r3, r0 + 800097c: 2b00 cmp r3, #0 + 800097e: d002 beq.n 8000986 + { + status = HAL_ERROR; + 8000980: 2301 movs r3, #1 + 8000982: 71fb strb r3, [r7, #7] + 8000984: e001 b.n 800098a + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000986: f7ff fea7 bl 80006d8 + } + + /* Return function status */ + return status; + 800098a: 79fb ldrb r3, [r7, #7] +} + 800098c: 4618 mov r0, r3 + 800098e: 3708 adds r7, #8 + 8000990: 46bd mov sp, r7 + 8000992: bd80 pop {r7, pc} + +08000994 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000994: b580 push {r7, lr} + 8000996: b084 sub sp, #16 + 8000998: af00 add r7, sp, #0 + 800099a: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 800099c: 2300 movs r3, #0 + 800099e: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 80009a0: 4b16 ldr r3, [pc, #88] @ (80009fc ) + 80009a2: 681b ldr r3, [r3, #0] + 80009a4: 2b00 cmp r3, #0 + 80009a6: d022 beq.n 80009ee + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 80009a8: 4b15 ldr r3, [pc, #84] @ (8000a00 ) + 80009aa: 681a ldr r2, [r3, #0] + 80009ac: 4b13 ldr r3, [pc, #76] @ (80009fc ) + 80009ae: 681b ldr r3, [r3, #0] + 80009b0: f44f 717a mov.w r1, #1000 @ 0x3e8 + 80009b4: fbb1 f3f3 udiv r3, r1, r3 + 80009b8: fbb2 f3f3 udiv r3, r2, r3 + 80009bc: 4618 mov r0, r3 + 80009be: f000 f938 bl 8000c32 + 80009c2: 4603 mov r3, r0 + 80009c4: 2b00 cmp r3, #0 + 80009c6: d10f bne.n 80009e8 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 80009c8: 687b ldr r3, [r7, #4] + 80009ca: 2b0f cmp r3, #15 + 80009cc: d809 bhi.n 80009e2 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 80009ce: 2200 movs r2, #0 + 80009d0: 6879 ldr r1, [r7, #4] + 80009d2: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 80009d6: f000 f910 bl 8000bfa + uwTickPrio = TickPriority; + 80009da: 4a0a ldr r2, [pc, #40] @ (8000a04 ) + 80009dc: 687b ldr r3, [r7, #4] + 80009de: 6013 str r3, [r2, #0] + 80009e0: e007 b.n 80009f2 + } + else + { + status = HAL_ERROR; + 80009e2: 2301 movs r3, #1 + 80009e4: 73fb strb r3, [r7, #15] + 80009e6: e004 b.n 80009f2 + } + } + else + { + status = HAL_ERROR; + 80009e8: 2301 movs r3, #1 + 80009ea: 73fb strb r3, [r7, #15] + 80009ec: e001 b.n 80009f2 + } + } + else + { + status = HAL_ERROR; + 80009ee: 2301 movs r3, #1 + 80009f0: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 80009f2: 7bfb ldrb r3, [r7, #15] +} + 80009f4: 4618 mov r0, r3 + 80009f6: 3710 adds r7, #16 + 80009f8: 46bd mov sp, r7 + 80009fa: bd80 pop {r7, pc} + 80009fc: 20000008 .word 0x20000008 + 8000a00: 20000000 .word 0x20000000 + 8000a04: 20000004 .word 0x20000004 + +08000a08 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000a08: b480 push {r7} + 8000a0a: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000a0c: 4b05 ldr r3, [pc, #20] @ (8000a24 ) + 8000a0e: 681a ldr r2, [r3, #0] + 8000a10: 4b05 ldr r3, [pc, #20] @ (8000a28 ) + 8000a12: 681b ldr r3, [r3, #0] + 8000a14: 4413 add r3, r2 + 8000a16: 4a03 ldr r2, [pc, #12] @ (8000a24 ) + 8000a18: 6013 str r3, [r2, #0] +} + 8000a1a: bf00 nop + 8000a1c: 46bd mov sp, r7 + 8000a1e: bc80 pop {r7} + 8000a20: 4770 bx lr + 8000a22: bf00 nop + 8000a24: 20000080 .word 0x20000080 + 8000a28: 20000008 .word 0x20000008 + +08000a2c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000a2c: b480 push {r7} + 8000a2e: af00 add r7, sp, #0 + return uwTick; + 8000a30: 4b02 ldr r3, [pc, #8] @ (8000a3c ) + 8000a32: 681b ldr r3, [r3, #0] +} + 8000a34: 4618 mov r0, r3 + 8000a36: 46bd mov sp, r7 + 8000a38: bc80 pop {r7} + 8000a3a: 4770 bx lr + 8000a3c: 20000080 .word 0x20000080 + +08000a40 : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 8000a40: b580 push {r7, lr} + 8000a42: b084 sub sp, #16 + 8000a44: af00 add r7, sp, #0 + 8000a46: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000a48: f7ff fff0 bl 8000a2c + 8000a4c: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 8000a4e: 687b ldr r3, [r7, #4] + 8000a50: 60fb str r3, [r7, #12] + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + 8000a52: 68fb ldr r3, [r7, #12] + 8000a54: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8000a58: d004 beq.n 8000a64 + { + wait += (uint32_t)(uwTickFreq); + 8000a5a: 4b09 ldr r3, [pc, #36] @ (8000a80 ) + 8000a5c: 681b ldr r3, [r3, #0] + 8000a5e: 68fa ldr r2, [r7, #12] + 8000a60: 4413 add r3, r2 + 8000a62: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8000a64: bf00 nop + 8000a66: f7ff ffe1 bl 8000a2c + 8000a6a: 4602 mov r2, r0 + 8000a6c: 68bb ldr r3, [r7, #8] + 8000a6e: 1ad3 subs r3, r2, r3 + 8000a70: 68fa ldr r2, [r7, #12] + 8000a72: 429a cmp r2, r3 + 8000a74: d8f7 bhi.n 8000a66 + { + } +} + 8000a76: bf00 nop + 8000a78: bf00 nop + 8000a7a: 3710 adds r7, #16 + 8000a7c: 46bd mov sp, r7 + 8000a7e: bd80 pop {r7, pc} + 8000a80: 20000008 .word 0x20000008 + +08000a84 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000a84: b480 push {r7} + 8000a86: b085 sub sp, #20 + 8000a88: af00 add r7, sp, #0 + 8000a8a: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000a8c: 687b ldr r3, [r7, #4] + 8000a8e: f003 0307 and.w r3, r3, #7 + 8000a92: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000a94: 4b0c ldr r3, [pc, #48] @ (8000ac8 <__NVIC_SetPriorityGrouping+0x44>) + 8000a96: 68db ldr r3, [r3, #12] + 8000a98: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000a9a: 68ba ldr r2, [r7, #8] + 8000a9c: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000aa0: 4013 ands r3, r2 + 8000aa2: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000aa4: 68fb ldr r3, [r7, #12] + 8000aa6: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000aa8: 68bb ldr r3, [r7, #8] + 8000aaa: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000aac: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000ab0: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000ab4: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000ab6: 4a04 ldr r2, [pc, #16] @ (8000ac8 <__NVIC_SetPriorityGrouping+0x44>) + 8000ab8: 68bb ldr r3, [r7, #8] + 8000aba: 60d3 str r3, [r2, #12] +} + 8000abc: bf00 nop + 8000abe: 3714 adds r7, #20 + 8000ac0: 46bd mov sp, r7 + 8000ac2: bc80 pop {r7} + 8000ac4: 4770 bx lr + 8000ac6: bf00 nop + 8000ac8: e000ed00 .word 0xe000ed00 + +08000acc <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000acc: b480 push {r7} + 8000ace: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000ad0: 4b04 ldr r3, [pc, #16] @ (8000ae4 <__NVIC_GetPriorityGrouping+0x18>) + 8000ad2: 68db ldr r3, [r3, #12] + 8000ad4: 0a1b lsrs r3, r3, #8 + 8000ad6: f003 0307 and.w r3, r3, #7 +} + 8000ada: 4618 mov r0, r3 + 8000adc: 46bd mov sp, r7 + 8000ade: bc80 pop {r7} + 8000ae0: 4770 bx lr + 8000ae2: bf00 nop + 8000ae4: e000ed00 .word 0xe000ed00 + +08000ae8 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000ae8: b480 push {r7} + 8000aea: b083 sub sp, #12 + 8000aec: af00 add r7, sp, #0 + 8000aee: 4603 mov r3, r0 + 8000af0: 6039 str r1, [r7, #0] + 8000af2: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000af4: f997 3007 ldrsb.w r3, [r7, #7] + 8000af8: 2b00 cmp r3, #0 + 8000afa: db0a blt.n 8000b12 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000afc: 683b ldr r3, [r7, #0] + 8000afe: b2da uxtb r2, r3 + 8000b00: 490c ldr r1, [pc, #48] @ (8000b34 <__NVIC_SetPriority+0x4c>) + 8000b02: f997 3007 ldrsb.w r3, [r7, #7] + 8000b06: 0112 lsls r2, r2, #4 + 8000b08: b2d2 uxtb r2, r2 + 8000b0a: 440b add r3, r1 + 8000b0c: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000b10: e00a b.n 8000b28 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000b12: 683b ldr r3, [r7, #0] + 8000b14: b2da uxtb r2, r3 + 8000b16: 4908 ldr r1, [pc, #32] @ (8000b38 <__NVIC_SetPriority+0x50>) + 8000b18: 79fb ldrb r3, [r7, #7] + 8000b1a: f003 030f and.w r3, r3, #15 + 8000b1e: 3b04 subs r3, #4 + 8000b20: 0112 lsls r2, r2, #4 + 8000b22: b2d2 uxtb r2, r2 + 8000b24: 440b add r3, r1 + 8000b26: 761a strb r2, [r3, #24] +} + 8000b28: bf00 nop + 8000b2a: 370c adds r7, #12 + 8000b2c: 46bd mov sp, r7 + 8000b2e: bc80 pop {r7} + 8000b30: 4770 bx lr + 8000b32: bf00 nop + 8000b34: e000e100 .word 0xe000e100 + 8000b38: e000ed00 .word 0xe000ed00 + +08000b3c : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000b3c: b480 push {r7} + 8000b3e: b089 sub sp, #36 @ 0x24 + 8000b40: af00 add r7, sp, #0 + 8000b42: 60f8 str r0, [r7, #12] + 8000b44: 60b9 str r1, [r7, #8] + 8000b46: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000b48: 68fb ldr r3, [r7, #12] + 8000b4a: f003 0307 and.w r3, r3, #7 + 8000b4e: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000b50: 69fb ldr r3, [r7, #28] + 8000b52: f1c3 0307 rsb r3, r3, #7 + 8000b56: 2b04 cmp r3, #4 + 8000b58: bf28 it cs + 8000b5a: 2304 movcs r3, #4 + 8000b5c: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000b5e: 69fb ldr r3, [r7, #28] + 8000b60: 3304 adds r3, #4 + 8000b62: 2b06 cmp r3, #6 + 8000b64: d902 bls.n 8000b6c + 8000b66: 69fb ldr r3, [r7, #28] + 8000b68: 3b03 subs r3, #3 + 8000b6a: e000 b.n 8000b6e + 8000b6c: 2300 movs r3, #0 + 8000b6e: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000b70: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000b74: 69bb ldr r3, [r7, #24] + 8000b76: fa02 f303 lsl.w r3, r2, r3 + 8000b7a: 43da mvns r2, r3 + 8000b7c: 68bb ldr r3, [r7, #8] + 8000b7e: 401a ands r2, r3 + 8000b80: 697b ldr r3, [r7, #20] + 8000b82: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000b84: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000b88: 697b ldr r3, [r7, #20] + 8000b8a: fa01 f303 lsl.w r3, r1, r3 + 8000b8e: 43d9 mvns r1, r3 + 8000b90: 687b ldr r3, [r7, #4] + 8000b92: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000b94: 4313 orrs r3, r2 + ); +} + 8000b96: 4618 mov r0, r3 + 8000b98: 3724 adds r7, #36 @ 0x24 + 8000b9a: 46bd mov sp, r7 + 8000b9c: bc80 pop {r7} + 8000b9e: 4770 bx lr + +08000ba0 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000ba0: b580 push {r7, lr} + 8000ba2: b082 sub sp, #8 + 8000ba4: af00 add r7, sp, #0 + 8000ba6: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000ba8: 687b ldr r3, [r7, #4] + 8000baa: 3b01 subs r3, #1 + 8000bac: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000bb0: d301 bcc.n 8000bb6 + { + return (1UL); /* Reload value impossible */ + 8000bb2: 2301 movs r3, #1 + 8000bb4: e00f b.n 8000bd6 + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000bb6: 4a0a ldr r2, [pc, #40] @ (8000be0 ) + 8000bb8: 687b ldr r3, [r7, #4] + 8000bba: 3b01 subs r3, #1 + 8000bbc: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000bbe: 210f movs r1, #15 + 8000bc0: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000bc4: f7ff ff90 bl 8000ae8 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000bc8: 4b05 ldr r3, [pc, #20] @ (8000be0 ) + 8000bca: 2200 movs r2, #0 + 8000bcc: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000bce: 4b04 ldr r3, [pc, #16] @ (8000be0 ) + 8000bd0: 2207 movs r2, #7 + 8000bd2: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000bd4: 2300 movs r3, #0 +} + 8000bd6: 4618 mov r0, r3 + 8000bd8: 3708 adds r7, #8 + 8000bda: 46bd mov sp, r7 + 8000bdc: bd80 pop {r7, pc} + 8000bde: bf00 nop + 8000be0: e000e010 .word 0xe000e010 + +08000be4 : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000be4: b580 push {r7, lr} + 8000be6: b082 sub sp, #8 + 8000be8: af00 add r7, sp, #0 + 8000bea: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000bec: 6878 ldr r0, [r7, #4] + 8000bee: f7ff ff49 bl 8000a84 <__NVIC_SetPriorityGrouping> +} + 8000bf2: bf00 nop + 8000bf4: 3708 adds r7, #8 + 8000bf6: 46bd mov sp, r7 + 8000bf8: bd80 pop {r7, pc} + +08000bfa : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000bfa: b580 push {r7, lr} + 8000bfc: b086 sub sp, #24 + 8000bfe: af00 add r7, sp, #0 + 8000c00: 4603 mov r3, r0 + 8000c02: 60b9 str r1, [r7, #8] + 8000c04: 607a str r2, [r7, #4] + 8000c06: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000c08: 2300 movs r3, #0 + 8000c0a: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000c0c: f7ff ff5e bl 8000acc <__NVIC_GetPriorityGrouping> + 8000c10: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000c12: 687a ldr r2, [r7, #4] + 8000c14: 68b9 ldr r1, [r7, #8] + 8000c16: 6978 ldr r0, [r7, #20] + 8000c18: f7ff ff90 bl 8000b3c + 8000c1c: 4602 mov r2, r0 + 8000c1e: f997 300f ldrsb.w r3, [r7, #15] + 8000c22: 4611 mov r1, r2 + 8000c24: 4618 mov r0, r3 + 8000c26: f7ff ff5f bl 8000ae8 <__NVIC_SetPriority> +} + 8000c2a: bf00 nop + 8000c2c: 3718 adds r7, #24 + 8000c2e: 46bd mov sp, r7 + 8000c30: bd80 pop {r7, pc} + +08000c32 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000c32: b580 push {r7, lr} + 8000c34: b082 sub sp, #8 + 8000c36: af00 add r7, sp, #0 + 8000c38: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000c3a: 6878 ldr r0, [r7, #4] + 8000c3c: f7ff ffb0 bl 8000ba0 + 8000c40: 4603 mov r3, r0 +} + 8000c42: 4618 mov r0, r3 + 8000c44: 3708 adds r7, #8 + 8000c46: 46bd mov sp, r7 + 8000c48: bd80 pop {r7, pc} + ... + +08000c4c : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000c4c: b480 push {r7} + 8000c4e: b087 sub sp, #28 + 8000c50: af00 add r7, sp, #0 + 8000c52: 6078 str r0, [r7, #4] + 8000c54: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000c56: 2300 movs r3, #0 + 8000c58: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000c5a: 2300 movs r3, #0 + 8000c5c: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8000c5e: 2300 movs r3, #0 + 8000c60: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8000c62: e160 b.n 8000f26 + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8000c64: 683b ldr r3, [r7, #0] + 8000c66: 681a ldr r2, [r3, #0] + 8000c68: 2101 movs r1, #1 + 8000c6a: 697b ldr r3, [r7, #20] + 8000c6c: fa01 f303 lsl.w r3, r1, r3 + 8000c70: 4013 ands r3, r2 + 8000c72: 60fb str r3, [r7, #12] + + if (iocurrent) + 8000c74: 68fb ldr r3, [r7, #12] + 8000c76: 2b00 cmp r3, #0 + 8000c78: f000 8152 beq.w 8000f20 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000c7c: 683b ldr r3, [r7, #0] + 8000c7e: 685b ldr r3, [r3, #4] + 8000c80: f003 0303 and.w r3, r3, #3 + 8000c84: 2b01 cmp r3, #1 + 8000c86: d005 beq.n 8000c94 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8000c88: 683b ldr r3, [r7, #0] + 8000c8a: 685b ldr r3, [r3, #4] + 8000c8c: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000c90: 2b02 cmp r3, #2 + 8000c92: d130 bne.n 8000cf6 + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8000c94: 687b ldr r3, [r7, #4] + 8000c96: 689b ldr r3, [r3, #8] + 8000c98: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 8000c9a: 697b ldr r3, [r7, #20] + 8000c9c: 005b lsls r3, r3, #1 + 8000c9e: 2203 movs r2, #3 + 8000ca0: fa02 f303 lsl.w r3, r2, r3 + 8000ca4: 43db mvns r3, r3 + 8000ca6: 693a ldr r2, [r7, #16] + 8000ca8: 4013 ands r3, r2 + 8000caa: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8000cac: 683b ldr r3, [r7, #0] + 8000cae: 68da ldr r2, [r3, #12] + 8000cb0: 697b ldr r3, [r7, #20] + 8000cb2: 005b lsls r3, r3, #1 + 8000cb4: fa02 f303 lsl.w r3, r2, r3 + 8000cb8: 693a ldr r2, [r7, #16] + 8000cba: 4313 orrs r3, r2 + 8000cbc: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8000cbe: 687b ldr r3, [r7, #4] + 8000cc0: 693a ldr r2, [r7, #16] + 8000cc2: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8000cc4: 687b ldr r3, [r7, #4] + 8000cc6: 685b ldr r3, [r3, #4] + 8000cc8: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 8000cca: 2201 movs r2, #1 + 8000ccc: 697b ldr r3, [r7, #20] + 8000cce: fa02 f303 lsl.w r3, r2, r3 + 8000cd2: 43db mvns r3, r3 + 8000cd4: 693a ldr r2, [r7, #16] + 8000cd6: 4013 ands r3, r2 + 8000cd8: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8000cda: 683b ldr r3, [r7, #0] + 8000cdc: 685b ldr r3, [r3, #4] + 8000cde: 091b lsrs r3, r3, #4 + 8000ce0: f003 0201 and.w r2, r3, #1 + 8000ce4: 697b ldr r3, [r7, #20] + 8000ce6: fa02 f303 lsl.w r3, r2, r3 + 8000cea: 693a ldr r2, [r7, #16] + 8000cec: 4313 orrs r3, r2 + 8000cee: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8000cf0: 687b ldr r3, [r7, #4] + 8000cf2: 693a ldr r2, [r7, #16] + 8000cf4: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8000cf6: 683b ldr r3, [r7, #0] + 8000cf8: 685b ldr r3, [r3, #4] + 8000cfa: f003 0303 and.w r3, r3, #3 + 8000cfe: 2b03 cmp r3, #3 + 8000d00: d017 beq.n 8000d32 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8000d02: 687b ldr r3, [r7, #4] + 8000d04: 68db ldr r3, [r3, #12] + 8000d06: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 8000d08: 697b ldr r3, [r7, #20] + 8000d0a: 005b lsls r3, r3, #1 + 8000d0c: 2203 movs r2, #3 + 8000d0e: fa02 f303 lsl.w r3, r2, r3 + 8000d12: 43db mvns r3, r3 + 8000d14: 693a ldr r2, [r7, #16] + 8000d16: 4013 ands r3, r2 + 8000d18: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 8000d1a: 683b ldr r3, [r7, #0] + 8000d1c: 689a ldr r2, [r3, #8] + 8000d1e: 697b ldr r3, [r7, #20] + 8000d20: 005b lsls r3, r3, #1 + 8000d22: fa02 f303 lsl.w r3, r2, r3 + 8000d26: 693a ldr r2, [r7, #16] + 8000d28: 4313 orrs r3, r2 + 8000d2a: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8000d2c: 687b ldr r3, [r7, #4] + 8000d2e: 693a ldr r2, [r7, #16] + 8000d30: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8000d32: 683b ldr r3, [r7, #0] + 8000d34: 685b ldr r3, [r3, #4] + 8000d36: f003 0303 and.w r3, r3, #3 + 8000d3a: 2b02 cmp r3, #2 + 8000d3c: d123 bne.n 8000d86 + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 8000d3e: 697b ldr r3, [r7, #20] + 8000d40: 08da lsrs r2, r3, #3 + 8000d42: 687b ldr r3, [r7, #4] + 8000d44: 3208 adds r2, #8 + 8000d46: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000d4a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 8000d4c: 697b ldr r3, [r7, #20] + 8000d4e: f003 0307 and.w r3, r3, #7 + 8000d52: 009b lsls r3, r3, #2 + 8000d54: 220f movs r2, #15 + 8000d56: fa02 f303 lsl.w r3, r2, r3 + 8000d5a: 43db mvns r3, r3 + 8000d5c: 693a ldr r2, [r7, #16] + 8000d5e: 4013 ands r3, r2 + 8000d60: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8000d62: 683b ldr r3, [r7, #0] + 8000d64: 691a ldr r2, [r3, #16] + 8000d66: 697b ldr r3, [r7, #20] + 8000d68: f003 0307 and.w r3, r3, #7 + 8000d6c: 009b lsls r3, r3, #2 + 8000d6e: fa02 f303 lsl.w r3, r2, r3 + 8000d72: 693a ldr r2, [r7, #16] + 8000d74: 4313 orrs r3, r2 + 8000d76: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8000d78: 697b ldr r3, [r7, #20] + 8000d7a: 08da lsrs r2, r3, #3 + 8000d7c: 687b ldr r3, [r7, #4] + 8000d7e: 3208 adds r2, #8 + 8000d80: 6939 ldr r1, [r7, #16] + 8000d82: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8000d86: 687b ldr r3, [r7, #4] + 8000d88: 681b ldr r3, [r3, #0] + 8000d8a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8000d8c: 697b ldr r3, [r7, #20] + 8000d8e: 005b lsls r3, r3, #1 + 8000d90: 2203 movs r2, #3 + 8000d92: fa02 f303 lsl.w r3, r2, r3 + 8000d96: 43db mvns r3, r3 + 8000d98: 693a ldr r2, [r7, #16] + 8000d9a: 4013 ands r3, r2 + 8000d9c: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8000d9e: 683b ldr r3, [r7, #0] + 8000da0: 685b ldr r3, [r3, #4] + 8000da2: f003 0203 and.w r2, r3, #3 + 8000da6: 697b ldr r3, [r7, #20] + 8000da8: 005b lsls r3, r3, #1 + 8000daa: fa02 f303 lsl.w r3, r2, r3 + 8000dae: 693a ldr r2, [r7, #16] + 8000db0: 4313 orrs r3, r2 + 8000db2: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8000db4: 687b ldr r3, [r7, #4] + 8000db6: 693a ldr r2, [r7, #16] + 8000db8: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 8000dba: 683b ldr r3, [r7, #0] + 8000dbc: 685b ldr r3, [r3, #4] + 8000dbe: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8000dc2: 2b00 cmp r3, #0 + 8000dc4: f000 80ac beq.w 8000f20 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000dc8: 4b5e ldr r3, [pc, #376] @ (8000f44 ) + 8000dca: 6a1b ldr r3, [r3, #32] + 8000dcc: 4a5d ldr r2, [pc, #372] @ (8000f44 ) + 8000dce: f043 0301 orr.w r3, r3, #1 + 8000dd2: 6213 str r3, [r2, #32] + 8000dd4: 4b5b ldr r3, [pc, #364] @ (8000f44 ) + 8000dd6: 6a1b ldr r3, [r3, #32] + 8000dd8: f003 0301 and.w r3, r3, #1 + 8000ddc: 60bb str r3, [r7, #8] + 8000dde: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8000de0: 4a59 ldr r2, [pc, #356] @ (8000f48 ) + 8000de2: 697b ldr r3, [r7, #20] + 8000de4: 089b lsrs r3, r3, #2 + 8000de6: 3302 adds r3, #2 + 8000de8: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000dec: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8000dee: 697b ldr r3, [r7, #20] + 8000df0: f003 0303 and.w r3, r3, #3 + 8000df4: 009b lsls r3, r3, #2 + 8000df6: 220f movs r2, #15 + 8000df8: fa02 f303 lsl.w r3, r2, r3 + 8000dfc: 43db mvns r3, r3 + 8000dfe: 693a ldr r2, [r7, #16] + 8000e00: 4013 ands r3, r2 + 8000e02: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8000e04: 687b ldr r3, [r7, #4] + 8000e06: 4a51 ldr r2, [pc, #324] @ (8000f4c ) + 8000e08: 4293 cmp r3, r2 + 8000e0a: d025 beq.n 8000e58 + 8000e0c: 687b ldr r3, [r7, #4] + 8000e0e: 4a50 ldr r2, [pc, #320] @ (8000f50 ) + 8000e10: 4293 cmp r3, r2 + 8000e12: d01f beq.n 8000e54 + 8000e14: 687b ldr r3, [r7, #4] + 8000e16: 4a4f ldr r2, [pc, #316] @ (8000f54 ) + 8000e18: 4293 cmp r3, r2 + 8000e1a: d019 beq.n 8000e50 + 8000e1c: 687b ldr r3, [r7, #4] + 8000e1e: 4a4e ldr r2, [pc, #312] @ (8000f58 ) + 8000e20: 4293 cmp r3, r2 + 8000e22: d013 beq.n 8000e4c + 8000e24: 687b ldr r3, [r7, #4] + 8000e26: 4a4d ldr r2, [pc, #308] @ (8000f5c ) + 8000e28: 4293 cmp r3, r2 + 8000e2a: d00d beq.n 8000e48 + 8000e2c: 687b ldr r3, [r7, #4] + 8000e2e: 4a4c ldr r2, [pc, #304] @ (8000f60 ) + 8000e30: 4293 cmp r3, r2 + 8000e32: d007 beq.n 8000e44 + 8000e34: 687b ldr r3, [r7, #4] + 8000e36: 4a4b ldr r2, [pc, #300] @ (8000f64 ) + 8000e38: 4293 cmp r3, r2 + 8000e3a: d101 bne.n 8000e40 + 8000e3c: 2306 movs r3, #6 + 8000e3e: e00c b.n 8000e5a + 8000e40: 2307 movs r3, #7 + 8000e42: e00a b.n 8000e5a + 8000e44: 2305 movs r3, #5 + 8000e46: e008 b.n 8000e5a + 8000e48: 2304 movs r3, #4 + 8000e4a: e006 b.n 8000e5a + 8000e4c: 2303 movs r3, #3 + 8000e4e: e004 b.n 8000e5a + 8000e50: 2302 movs r3, #2 + 8000e52: e002 b.n 8000e5a + 8000e54: 2301 movs r3, #1 + 8000e56: e000 b.n 8000e5a + 8000e58: 2300 movs r3, #0 + 8000e5a: 697a ldr r2, [r7, #20] + 8000e5c: f002 0203 and.w r2, r2, #3 + 8000e60: 0092 lsls r2, r2, #2 + 8000e62: 4093 lsls r3, r2 + 8000e64: 693a ldr r2, [r7, #16] + 8000e66: 4313 orrs r3, r2 + 8000e68: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 8000e6a: 4937 ldr r1, [pc, #220] @ (8000f48 ) + 8000e6c: 697b ldr r3, [r7, #20] + 8000e6e: 089b lsrs r3, r3, #2 + 8000e70: 3302 adds r3, #2 + 8000e72: 693a ldr r2, [r7, #16] + 8000e74: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 8000e78: 4b3b ldr r3, [pc, #236] @ (8000f68 ) + 8000e7a: 689b ldr r3, [r3, #8] + 8000e7c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000e7e: 68fb ldr r3, [r7, #12] + 8000e80: 43db mvns r3, r3 + 8000e82: 693a ldr r2, [r7, #16] + 8000e84: 4013 ands r3, r2 + 8000e86: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 8000e88: 683b ldr r3, [r7, #0] + 8000e8a: 685b ldr r3, [r3, #4] + 8000e8c: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8000e90: 2b00 cmp r3, #0 + 8000e92: d003 beq.n 8000e9c + { + SET_BIT(temp, iocurrent); + 8000e94: 693a ldr r2, [r7, #16] + 8000e96: 68fb ldr r3, [r7, #12] + 8000e98: 4313 orrs r3, r2 + 8000e9a: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8000e9c: 4a32 ldr r2, [pc, #200] @ (8000f68 ) + 8000e9e: 693b ldr r3, [r7, #16] + 8000ea0: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8000ea2: 4b31 ldr r3, [pc, #196] @ (8000f68 ) + 8000ea4: 68db ldr r3, [r3, #12] + 8000ea6: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000ea8: 68fb ldr r3, [r7, #12] + 8000eaa: 43db mvns r3, r3 + 8000eac: 693a ldr r2, [r7, #16] + 8000eae: 4013 ands r3, r2 + 8000eb0: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8000eb2: 683b ldr r3, [r7, #0] + 8000eb4: 685b ldr r3, [r3, #4] + 8000eb6: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8000eba: 2b00 cmp r3, #0 + 8000ebc: d003 beq.n 8000ec6 + { + SET_BIT(temp, iocurrent); + 8000ebe: 693a ldr r2, [r7, #16] + 8000ec0: 68fb ldr r3, [r7, #12] + 8000ec2: 4313 orrs r3, r2 + 8000ec4: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 8000ec6: 4a28 ldr r2, [pc, #160] @ (8000f68 ) + 8000ec8: 693b ldr r3, [r7, #16] + 8000eca: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8000ecc: 4b26 ldr r3, [pc, #152] @ (8000f68 ) + 8000ece: 685b ldr r3, [r3, #4] + 8000ed0: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000ed2: 68fb ldr r3, [r7, #12] + 8000ed4: 43db mvns r3, r3 + 8000ed6: 693a ldr r2, [r7, #16] + 8000ed8: 4013 ands r3, r2 + 8000eda: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8000edc: 683b ldr r3, [r7, #0] + 8000ede: 685b ldr r3, [r3, #4] + 8000ee0: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8000ee4: 2b00 cmp r3, #0 + 8000ee6: d003 beq.n 8000ef0 + { + SET_BIT(temp, iocurrent); + 8000ee8: 693a ldr r2, [r7, #16] + 8000eea: 68fb ldr r3, [r7, #12] + 8000eec: 4313 orrs r3, r2 + 8000eee: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8000ef0: 4a1d ldr r2, [pc, #116] @ (8000f68 ) + 8000ef2: 693b ldr r3, [r7, #16] + 8000ef4: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 8000ef6: 4b1c ldr r3, [pc, #112] @ (8000f68 ) + 8000ef8: 681b ldr r3, [r3, #0] + 8000efa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8000efc: 68fb ldr r3, [r7, #12] + 8000efe: 43db mvns r3, r3 + 8000f00: 693a ldr r2, [r7, #16] + 8000f02: 4013 ands r3, r2 + 8000f04: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 8000f06: 683b ldr r3, [r7, #0] + 8000f08: 685b ldr r3, [r3, #4] + 8000f0a: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8000f0e: 2b00 cmp r3, #0 + 8000f10: d003 beq.n 8000f1a + { + SET_BIT(temp, iocurrent); + 8000f12: 693a ldr r2, [r7, #16] + 8000f14: 68fb ldr r3, [r7, #12] + 8000f16: 4313 orrs r3, r2 + 8000f18: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 8000f1a: 4a13 ldr r2, [pc, #76] @ (8000f68 ) + 8000f1c: 693b ldr r3, [r7, #16] + 8000f1e: 6013 str r3, [r2, #0] + } + } + + position++; + 8000f20: 697b ldr r3, [r7, #20] + 8000f22: 3301 adds r3, #1 + 8000f24: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 8000f26: 683b ldr r3, [r7, #0] + 8000f28: 681a ldr r2, [r3, #0] + 8000f2a: 697b ldr r3, [r7, #20] + 8000f2c: fa22 f303 lsr.w r3, r2, r3 + 8000f30: 2b00 cmp r3, #0 + 8000f32: f47f ae97 bne.w 8000c64 + } +} + 8000f36: bf00 nop + 8000f38: bf00 nop + 8000f3a: 371c adds r7, #28 + 8000f3c: 46bd mov sp, r7 + 8000f3e: bc80 pop {r7} + 8000f40: 4770 bx lr + 8000f42: bf00 nop + 8000f44: 40023800 .word 0x40023800 + 8000f48: 40010000 .word 0x40010000 + 8000f4c: 40020000 .word 0x40020000 + 8000f50: 40020400 .word 0x40020400 + 8000f54: 40020800 .word 0x40020800 + 8000f58: 40020c00 .word 0x40020c00 + 8000f5c: 40021000 .word 0x40021000 + 8000f60: 40021400 .word 0x40021400 + 8000f64: 40021800 .word 0x40021800 + 8000f68: 40010400 .word 0x40010400 + +08000f6c : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 8000f6c: b480 push {r7} + 8000f6e: b083 sub sp, #12 + 8000f70: af00 add r7, sp, #0 + 8000f72: 6078 str r0, [r7, #4] + 8000f74: 460b mov r3, r1 + 8000f76: 807b strh r3, [r7, #2] + 8000f78: 4613 mov r3, r2 + 8000f7a: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8000f7c: 787b ldrb r3, [r7, #1] + 8000f7e: 2b00 cmp r3, #0 + 8000f80: d003 beq.n 8000f8a + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8000f82: 887a ldrh r2, [r7, #2] + 8000f84: 687b ldr r3, [r7, #4] + 8000f86: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8000f88: e003 b.n 8000f92 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 8000f8a: 887b ldrh r3, [r7, #2] + 8000f8c: 041a lsls r2, r3, #16 + 8000f8e: 687b ldr r3, [r7, #4] + 8000f90: 619a str r2, [r3, #24] +} + 8000f92: bf00 nop + 8000f94: 370c adds r7, #12 + 8000f96: 46bd mov sp, r7 + 8000f98: bc80 pop {r7} + 8000f9a: 4770 bx lr + +08000f9c : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8000f9c: b580 push {r7, lr} + 8000f9e: b088 sub sp, #32 + 8000fa0: af00 add r7, sp, #0 + 8000fa2: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8000fa4: 687b ldr r3, [r7, #4] + 8000fa6: 2b00 cmp r3, #0 + 8000fa8: d101 bne.n 8000fae + { + return HAL_ERROR; + 8000faa: 2301 movs r3, #1 + 8000fac: e31d b.n 80015ea + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8000fae: 4b94 ldr r3, [pc, #592] @ (8001200 ) + 8000fb0: 689b ldr r3, [r3, #8] + 8000fb2: f003 030c and.w r3, r3, #12 + 8000fb6: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 8000fb8: 4b91 ldr r3, [pc, #580] @ (8001200 ) + 8000fba: 689b ldr r3, [r3, #8] + 8000fbc: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8000fc0: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8000fc2: 687b ldr r3, [r7, #4] + 8000fc4: 681b ldr r3, [r3, #0] + 8000fc6: f003 0301 and.w r3, r3, #1 + 8000fca: 2b00 cmp r3, #0 + 8000fcc: d07b beq.n 80010c6 + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 8000fce: 69bb ldr r3, [r7, #24] + 8000fd0: 2b08 cmp r3, #8 + 8000fd2: d006 beq.n 8000fe2 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8000fd4: 69bb ldr r3, [r7, #24] + 8000fd6: 2b0c cmp r3, #12 + 8000fd8: d10f bne.n 8000ffa + 8000fda: 697b ldr r3, [r7, #20] + 8000fdc: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8000fe0: d10b bne.n 8000ffa + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8000fe2: 4b87 ldr r3, [pc, #540] @ (8001200 ) + 8000fe4: 681b ldr r3, [r3, #0] + 8000fe6: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8000fea: 2b00 cmp r3, #0 + 8000fec: d06a beq.n 80010c4 + 8000fee: 687b ldr r3, [r7, #4] + 8000ff0: 685b ldr r3, [r3, #4] + 8000ff2: 2b00 cmp r3, #0 + 8000ff4: d166 bne.n 80010c4 + { + return HAL_ERROR; + 8000ff6: 2301 movs r3, #1 + 8000ff8: e2f7 b.n 80015ea + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 8000ffa: 687b ldr r3, [r7, #4] + 8000ffc: 685b ldr r3, [r3, #4] + 8000ffe: 2b01 cmp r3, #1 + 8001000: d106 bne.n 8001010 + 8001002: 4b7f ldr r3, [pc, #508] @ (8001200 ) + 8001004: 681b ldr r3, [r3, #0] + 8001006: 4a7e ldr r2, [pc, #504] @ (8001200 ) + 8001008: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 800100c: 6013 str r3, [r2, #0] + 800100e: e02d b.n 800106c + 8001010: 687b ldr r3, [r7, #4] + 8001012: 685b ldr r3, [r3, #4] + 8001014: 2b00 cmp r3, #0 + 8001016: d10c bne.n 8001032 + 8001018: 4b79 ldr r3, [pc, #484] @ (8001200 ) + 800101a: 681b ldr r3, [r3, #0] + 800101c: 4a78 ldr r2, [pc, #480] @ (8001200 ) + 800101e: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001022: 6013 str r3, [r2, #0] + 8001024: 4b76 ldr r3, [pc, #472] @ (8001200 ) + 8001026: 681b ldr r3, [r3, #0] + 8001028: 4a75 ldr r2, [pc, #468] @ (8001200 ) + 800102a: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800102e: 6013 str r3, [r2, #0] + 8001030: e01c b.n 800106c + 8001032: 687b ldr r3, [r7, #4] + 8001034: 685b ldr r3, [r3, #4] + 8001036: 2b05 cmp r3, #5 + 8001038: d10c bne.n 8001054 + 800103a: 4b71 ldr r3, [pc, #452] @ (8001200 ) + 800103c: 681b ldr r3, [r3, #0] + 800103e: 4a70 ldr r2, [pc, #448] @ (8001200 ) + 8001040: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8001044: 6013 str r3, [r2, #0] + 8001046: 4b6e ldr r3, [pc, #440] @ (8001200 ) + 8001048: 681b ldr r3, [r3, #0] + 800104a: 4a6d ldr r2, [pc, #436] @ (8001200 ) + 800104c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001050: 6013 str r3, [r2, #0] + 8001052: e00b b.n 800106c + 8001054: 4b6a ldr r3, [pc, #424] @ (8001200 ) + 8001056: 681b ldr r3, [r3, #0] + 8001058: 4a69 ldr r2, [pc, #420] @ (8001200 ) + 800105a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800105e: 6013 str r3, [r2, #0] + 8001060: 4b67 ldr r3, [pc, #412] @ (8001200 ) + 8001062: 681b ldr r3, [r3, #0] + 8001064: 4a66 ldr r2, [pc, #408] @ (8001200 ) + 8001066: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800106a: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 800106c: 687b ldr r3, [r7, #4] + 800106e: 685b ldr r3, [r3, #4] + 8001070: 2b00 cmp r3, #0 + 8001072: d013 beq.n 800109c + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001074: f7ff fcda bl 8000a2c + 8001078: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800107a: e008 b.n 800108e + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 800107c: f7ff fcd6 bl 8000a2c + 8001080: 4602 mov r2, r0 + 8001082: 693b ldr r3, [r7, #16] + 8001084: 1ad3 subs r3, r2, r3 + 8001086: 2b64 cmp r3, #100 @ 0x64 + 8001088: d901 bls.n 800108e + { + return HAL_TIMEOUT; + 800108a: 2303 movs r3, #3 + 800108c: e2ad b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800108e: 4b5c ldr r3, [pc, #368] @ (8001200 ) + 8001090: 681b ldr r3, [r3, #0] + 8001092: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001096: 2b00 cmp r3, #0 + 8001098: d0f0 beq.n 800107c + 800109a: e014 b.n 80010c6 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800109c: f7ff fcc6 bl 8000a2c + 80010a0: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80010a2: e008 b.n 80010b6 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 80010a4: f7ff fcc2 bl 8000a2c + 80010a8: 4602 mov r2, r0 + 80010aa: 693b ldr r3, [r7, #16] + 80010ac: 1ad3 subs r3, r2, r3 + 80010ae: 2b64 cmp r3, #100 @ 0x64 + 80010b0: d901 bls.n 80010b6 + { + return HAL_TIMEOUT; + 80010b2: 2303 movs r3, #3 + 80010b4: e299 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80010b6: 4b52 ldr r3, [pc, #328] @ (8001200 ) + 80010b8: 681b ldr r3, [r3, #0] + 80010ba: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80010be: 2b00 cmp r3, #0 + 80010c0: d1f0 bne.n 80010a4 + 80010c2: e000 b.n 80010c6 + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80010c4: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80010c6: 687b ldr r3, [r7, #4] + 80010c8: 681b ldr r3, [r3, #0] + 80010ca: f003 0302 and.w r3, r3, #2 + 80010ce: 2b00 cmp r3, #0 + 80010d0: d05a beq.n 8001188 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 80010d2: 69bb ldr r3, [r7, #24] + 80010d4: 2b04 cmp r3, #4 + 80010d6: d005 beq.n 80010e4 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 80010d8: 69bb ldr r3, [r7, #24] + 80010da: 2b0c cmp r3, #12 + 80010dc: d119 bne.n 8001112 + 80010de: 697b ldr r3, [r7, #20] + 80010e0: 2b00 cmp r3, #0 + 80010e2: d116 bne.n 8001112 + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80010e4: 4b46 ldr r3, [pc, #280] @ (8001200 ) + 80010e6: 681b ldr r3, [r3, #0] + 80010e8: f003 0302 and.w r3, r3, #2 + 80010ec: 2b00 cmp r3, #0 + 80010ee: d005 beq.n 80010fc + 80010f0: 687b ldr r3, [r7, #4] + 80010f2: 68db ldr r3, [r3, #12] + 80010f4: 2b01 cmp r3, #1 + 80010f6: d001 beq.n 80010fc + { + return HAL_ERROR; + 80010f8: 2301 movs r3, #1 + 80010fa: e276 b.n 80015ea + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80010fc: 4b40 ldr r3, [pc, #256] @ (8001200 ) + 80010fe: 685b ldr r3, [r3, #4] + 8001100: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001104: 687b ldr r3, [r7, #4] + 8001106: 691b ldr r3, [r3, #16] + 8001108: 021b lsls r3, r3, #8 + 800110a: 493d ldr r1, [pc, #244] @ (8001200 ) + 800110c: 4313 orrs r3, r2 + 800110e: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001110: e03a b.n 8001188 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8001112: 687b ldr r3, [r7, #4] + 8001114: 68db ldr r3, [r3, #12] + 8001116: 2b00 cmp r3, #0 + 8001118: d020 beq.n 800115c + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 800111a: 4b3a ldr r3, [pc, #232] @ (8001204 ) + 800111c: 2201 movs r2, #1 + 800111e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001120: f7ff fc84 bl 8000a2c + 8001124: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001126: e008 b.n 800113a + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001128: f7ff fc80 bl 8000a2c + 800112c: 4602 mov r2, r0 + 800112e: 693b ldr r3, [r7, #16] + 8001130: 1ad3 subs r3, r2, r3 + 8001132: 2b02 cmp r3, #2 + 8001134: d901 bls.n 800113a + { + return HAL_TIMEOUT; + 8001136: 2303 movs r3, #3 + 8001138: e257 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800113a: 4b31 ldr r3, [pc, #196] @ (8001200 ) + 800113c: 681b ldr r3, [r3, #0] + 800113e: f003 0302 and.w r3, r3, #2 + 8001142: 2b00 cmp r3, #0 + 8001144: d0f0 beq.n 8001128 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001146: 4b2e ldr r3, [pc, #184] @ (8001200 ) + 8001148: 685b ldr r3, [r3, #4] + 800114a: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 800114e: 687b ldr r3, [r7, #4] + 8001150: 691b ldr r3, [r3, #16] + 8001152: 021b lsls r3, r3, #8 + 8001154: 492a ldr r1, [pc, #168] @ (8001200 ) + 8001156: 4313 orrs r3, r2 + 8001158: 604b str r3, [r1, #4] + 800115a: e015 b.n 8001188 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 800115c: 4b29 ldr r3, [pc, #164] @ (8001204 ) + 800115e: 2200 movs r2, #0 + 8001160: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001162: f7ff fc63 bl 8000a2c + 8001166: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001168: e008 b.n 800117c + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800116a: f7ff fc5f bl 8000a2c + 800116e: 4602 mov r2, r0 + 8001170: 693b ldr r3, [r7, #16] + 8001172: 1ad3 subs r3, r2, r3 + 8001174: 2b02 cmp r3, #2 + 8001176: d901 bls.n 800117c + { + return HAL_TIMEOUT; + 8001178: 2303 movs r3, #3 + 800117a: e236 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 800117c: 4b20 ldr r3, [pc, #128] @ (8001200 ) + 800117e: 681b ldr r3, [r3, #0] + 8001180: f003 0302 and.w r3, r3, #2 + 8001184: 2b00 cmp r3, #0 + 8001186: d1f0 bne.n 800116a + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 8001188: 687b ldr r3, [r7, #4] + 800118a: 681b ldr r3, [r3, #0] + 800118c: f003 0310 and.w r3, r3, #16 + 8001190: 2b00 cmp r3, #0 + 8001192: f000 80b8 beq.w 8001306 + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 8001196: 69bb ldr r3, [r7, #24] + 8001198: 2b00 cmp r3, #0 + 800119a: d170 bne.n 800127e + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 800119c: 4b18 ldr r3, [pc, #96] @ (8001200 ) + 800119e: 681b ldr r3, [r3, #0] + 80011a0: f403 7300 and.w r3, r3, #512 @ 0x200 + 80011a4: 2b00 cmp r3, #0 + 80011a6: d005 beq.n 80011b4 + 80011a8: 687b ldr r3, [r7, #4] + 80011aa: 699b ldr r3, [r3, #24] + 80011ac: 2b00 cmp r3, #0 + 80011ae: d101 bne.n 80011b4 + { + return HAL_ERROR; + 80011b0: 2301 movs r3, #1 + 80011b2: e21a b.n 80015ea + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 80011b4: 687b ldr r3, [r7, #4] + 80011b6: 6a1a ldr r2, [r3, #32] + 80011b8: 4b11 ldr r3, [pc, #68] @ (8001200 ) + 80011ba: 685b ldr r3, [r3, #4] + 80011bc: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80011c0: 429a cmp r2, r3 + 80011c2: d921 bls.n 8001208 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80011c4: 687b ldr r3, [r7, #4] + 80011c6: 6a1b ldr r3, [r3, #32] + 80011c8: 4618 mov r0, r3 + 80011ca: f000 fc09 bl 80019e0 + 80011ce: 4603 mov r3, r0 + 80011d0: 2b00 cmp r3, #0 + 80011d2: d001 beq.n 80011d8 + { + return HAL_ERROR; + 80011d4: 2301 movs r3, #1 + 80011d6: e208 b.n 80015ea + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80011d8: 4b09 ldr r3, [pc, #36] @ (8001200 ) + 80011da: 685b ldr r3, [r3, #4] + 80011dc: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80011e0: 687b ldr r3, [r7, #4] + 80011e2: 6a1b ldr r3, [r3, #32] + 80011e4: 4906 ldr r1, [pc, #24] @ (8001200 ) + 80011e6: 4313 orrs r3, r2 + 80011e8: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80011ea: 4b05 ldr r3, [pc, #20] @ (8001200 ) + 80011ec: 685b ldr r3, [r3, #4] + 80011ee: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80011f2: 687b ldr r3, [r7, #4] + 80011f4: 69db ldr r3, [r3, #28] + 80011f6: 061b lsls r3, r3, #24 + 80011f8: 4901 ldr r1, [pc, #4] @ (8001200 ) + 80011fa: 4313 orrs r3, r2 + 80011fc: 604b str r3, [r1, #4] + 80011fe: e020 b.n 8001242 + 8001200: 40023800 .word 0x40023800 + 8001204: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001208: 4b99 ldr r3, [pc, #612] @ (8001470 ) + 800120a: 685b ldr r3, [r3, #4] + 800120c: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001210: 687b ldr r3, [r7, #4] + 8001212: 6a1b ldr r3, [r3, #32] + 8001214: 4996 ldr r1, [pc, #600] @ (8001470 ) + 8001216: 4313 orrs r3, r2 + 8001218: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800121a: 4b95 ldr r3, [pc, #596] @ (8001470 ) + 800121c: 685b ldr r3, [r3, #4] + 800121e: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001222: 687b ldr r3, [r7, #4] + 8001224: 69db ldr r3, [r3, #28] + 8001226: 061b lsls r3, r3, #24 + 8001228: 4991 ldr r1, [pc, #580] @ (8001470 ) + 800122a: 4313 orrs r3, r2 + 800122c: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 800122e: 687b ldr r3, [r7, #4] + 8001230: 6a1b ldr r3, [r3, #32] + 8001232: 4618 mov r0, r3 + 8001234: f000 fbd4 bl 80019e0 + 8001238: 4603 mov r3, r0 + 800123a: 2b00 cmp r3, #0 + 800123c: d001 beq.n 8001242 + { + return HAL_ERROR; + 800123e: 2301 movs r3, #1 + 8001240: e1d3 b.n 80015ea + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001242: 687b ldr r3, [r7, #4] + 8001244: 6a1b ldr r3, [r3, #32] + 8001246: 0b5b lsrs r3, r3, #13 + 8001248: 3301 adds r3, #1 + 800124a: f44f 4200 mov.w r2, #32768 @ 0x8000 + 800124e: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8001252: 4a87 ldr r2, [pc, #540] @ (8001470 ) + 8001254: 6892 ldr r2, [r2, #8] + 8001256: 0912 lsrs r2, r2, #4 + 8001258: f002 020f and.w r2, r2, #15 + 800125c: 4985 ldr r1, [pc, #532] @ (8001474 ) + 800125e: 5c8a ldrb r2, [r1, r2] + 8001260: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001262: 4a85 ldr r2, [pc, #532] @ (8001478 ) + 8001264: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001266: 4b85 ldr r3, [pc, #532] @ (800147c ) + 8001268: 681b ldr r3, [r3, #0] + 800126a: 4618 mov r0, r3 + 800126c: f7ff fb92 bl 8000994 + 8001270: 4603 mov r3, r0 + 8001272: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 8001274: 7bfb ldrb r3, [r7, #15] + 8001276: 2b00 cmp r3, #0 + 8001278: d045 beq.n 8001306 + { + return status; + 800127a: 7bfb ldrb r3, [r7, #15] + 800127c: e1b5 b.n 80015ea + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 800127e: 687b ldr r3, [r7, #4] + 8001280: 699b ldr r3, [r3, #24] + 8001282: 2b00 cmp r3, #0 + 8001284: d029 beq.n 80012da + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 8001286: 4b7e ldr r3, [pc, #504] @ (8001480 ) + 8001288: 2201 movs r2, #1 + 800128a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800128c: f7ff fbce bl 8000a2c + 8001290: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001292: e008 b.n 80012a6 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001294: f7ff fbca bl 8000a2c + 8001298: 4602 mov r2, r0 + 800129a: 693b ldr r3, [r7, #16] + 800129c: 1ad3 subs r3, r2, r3 + 800129e: 2b02 cmp r3, #2 + 80012a0: d901 bls.n 80012a6 + { + return HAL_TIMEOUT; + 80012a2: 2303 movs r3, #3 + 80012a4: e1a1 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80012a6: 4b72 ldr r3, [pc, #456] @ (8001470 ) + 80012a8: 681b ldr r3, [r3, #0] + 80012aa: f403 7300 and.w r3, r3, #512 @ 0x200 + 80012ae: 2b00 cmp r3, #0 + 80012b0: d0f0 beq.n 8001294 + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80012b2: 4b6f ldr r3, [pc, #444] @ (8001470 ) + 80012b4: 685b ldr r3, [r3, #4] + 80012b6: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80012ba: 687b ldr r3, [r7, #4] + 80012bc: 6a1b ldr r3, [r3, #32] + 80012be: 496c ldr r1, [pc, #432] @ (8001470 ) + 80012c0: 4313 orrs r3, r2 + 80012c2: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80012c4: 4b6a ldr r3, [pc, #424] @ (8001470 ) + 80012c6: 685b ldr r3, [r3, #4] + 80012c8: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80012cc: 687b ldr r3, [r7, #4] + 80012ce: 69db ldr r3, [r3, #28] + 80012d0: 061b lsls r3, r3, #24 + 80012d2: 4967 ldr r1, [pc, #412] @ (8001470 ) + 80012d4: 4313 orrs r3, r2 + 80012d6: 604b str r3, [r1, #4] + 80012d8: e015 b.n 8001306 + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 80012da: 4b69 ldr r3, [pc, #420] @ (8001480 ) + 80012dc: 2200 movs r2, #0 + 80012de: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012e0: f7ff fba4 bl 8000a2c + 80012e4: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80012e6: e008 b.n 80012fa + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80012e8: f7ff fba0 bl 8000a2c + 80012ec: 4602 mov r2, r0 + 80012ee: 693b ldr r3, [r7, #16] + 80012f0: 1ad3 subs r3, r2, r3 + 80012f2: 2b02 cmp r3, #2 + 80012f4: d901 bls.n 80012fa + { + return HAL_TIMEOUT; + 80012f6: 2303 movs r3, #3 + 80012f8: e177 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80012fa: 4b5d ldr r3, [pc, #372] @ (8001470 ) + 80012fc: 681b ldr r3, [r3, #0] + 80012fe: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001302: 2b00 cmp r3, #0 + 8001304: d1f0 bne.n 80012e8 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 8001306: 687b ldr r3, [r7, #4] + 8001308: 681b ldr r3, [r3, #0] + 800130a: f003 0308 and.w r3, r3, #8 + 800130e: 2b00 cmp r3, #0 + 8001310: d030 beq.n 8001374 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8001312: 687b ldr r3, [r7, #4] + 8001314: 695b ldr r3, [r3, #20] + 8001316: 2b00 cmp r3, #0 + 8001318: d016 beq.n 8001348 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 800131a: 4b5a ldr r3, [pc, #360] @ (8001484 ) + 800131c: 2201 movs r2, #1 + 800131e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001320: f7ff fb84 bl 8000a2c + 8001324: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001326: e008 b.n 800133a + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001328: f7ff fb80 bl 8000a2c + 800132c: 4602 mov r2, r0 + 800132e: 693b ldr r3, [r7, #16] + 8001330: 1ad3 subs r3, r2, r3 + 8001332: 2b02 cmp r3, #2 + 8001334: d901 bls.n 800133a + { + return HAL_TIMEOUT; + 8001336: 2303 movs r3, #3 + 8001338: e157 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800133a: 4b4d ldr r3, [pc, #308] @ (8001470 ) + 800133c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800133e: f003 0302 and.w r3, r3, #2 + 8001342: 2b00 cmp r3, #0 + 8001344: d0f0 beq.n 8001328 + 8001346: e015 b.n 8001374 + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001348: 4b4e ldr r3, [pc, #312] @ (8001484 ) + 800134a: 2200 movs r2, #0 + 800134c: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800134e: f7ff fb6d bl 8000a2c + 8001352: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001354: e008 b.n 8001368 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001356: f7ff fb69 bl 8000a2c + 800135a: 4602 mov r2, r0 + 800135c: 693b ldr r3, [r7, #16] + 800135e: 1ad3 subs r3, r2, r3 + 8001360: 2b02 cmp r3, #2 + 8001362: d901 bls.n 8001368 + { + return HAL_TIMEOUT; + 8001364: 2303 movs r3, #3 + 8001366: e140 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001368: 4b41 ldr r3, [pc, #260] @ (8001470 ) + 800136a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800136c: f003 0302 and.w r3, r3, #2 + 8001370: 2b00 cmp r3, #0 + 8001372: d1f0 bne.n 8001356 + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 8001374: 687b ldr r3, [r7, #4] + 8001376: 681b ldr r3, [r3, #0] + 8001378: f003 0304 and.w r3, r3, #4 + 800137c: 2b00 cmp r3, #0 + 800137e: f000 80b5 beq.w 80014ec + { + FlagStatus pwrclkchanged = RESET; + 8001382: 2300 movs r3, #0 + 8001384: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 8001386: 4b3a ldr r3, [pc, #232] @ (8001470 ) + 8001388: 6a5b ldr r3, [r3, #36] @ 0x24 + 800138a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800138e: 2b00 cmp r3, #0 + 8001390: d10d bne.n 80013ae + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001392: 4b37 ldr r3, [pc, #220] @ (8001470 ) + 8001394: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001396: 4a36 ldr r2, [pc, #216] @ (8001470 ) + 8001398: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800139c: 6253 str r3, [r2, #36] @ 0x24 + 800139e: 4b34 ldr r3, [pc, #208] @ (8001470 ) + 80013a0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80013a2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80013a6: 60bb str r3, [r7, #8] + 80013a8: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 80013aa: 2301 movs r3, #1 + 80013ac: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80013ae: 4b36 ldr r3, [pc, #216] @ (8001488 ) + 80013b0: 681b ldr r3, [r3, #0] + 80013b2: f403 7380 and.w r3, r3, #256 @ 0x100 + 80013b6: 2b00 cmp r3, #0 + 80013b8: d118 bne.n 80013ec + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80013ba: 4b33 ldr r3, [pc, #204] @ (8001488 ) + 80013bc: 681b ldr r3, [r3, #0] + 80013be: 4a32 ldr r2, [pc, #200] @ (8001488 ) + 80013c0: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80013c4: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80013c6: f7ff fb31 bl 8000a2c + 80013ca: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80013cc: e008 b.n 80013e0 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80013ce: f7ff fb2d bl 8000a2c + 80013d2: 4602 mov r2, r0 + 80013d4: 693b ldr r3, [r7, #16] + 80013d6: 1ad3 subs r3, r2, r3 + 80013d8: 2b64 cmp r3, #100 @ 0x64 + 80013da: d901 bls.n 80013e0 + { + return HAL_TIMEOUT; + 80013dc: 2303 movs r3, #3 + 80013de: e104 b.n 80015ea + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80013e0: 4b29 ldr r3, [pc, #164] @ (8001488 ) + 80013e2: 681b ldr r3, [r3, #0] + 80013e4: f403 7380 and.w r3, r3, #256 @ 0x100 + 80013e8: 2b00 cmp r3, #0 + 80013ea: d0f0 beq.n 80013ce + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 80013ec: 687b ldr r3, [r7, #4] + 80013ee: 689b ldr r3, [r3, #8] + 80013f0: 2b01 cmp r3, #1 + 80013f2: d106 bne.n 8001402 + 80013f4: 4b1e ldr r3, [pc, #120] @ (8001470 ) + 80013f6: 6b5b ldr r3, [r3, #52] @ 0x34 + 80013f8: 4a1d ldr r2, [pc, #116] @ (8001470 ) + 80013fa: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80013fe: 6353 str r3, [r2, #52] @ 0x34 + 8001400: e02d b.n 800145e + 8001402: 687b ldr r3, [r7, #4] + 8001404: 689b ldr r3, [r3, #8] + 8001406: 2b00 cmp r3, #0 + 8001408: d10c bne.n 8001424 + 800140a: 4b19 ldr r3, [pc, #100] @ (8001470 ) + 800140c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800140e: 4a18 ldr r2, [pc, #96] @ (8001470 ) + 8001410: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001414: 6353 str r3, [r2, #52] @ 0x34 + 8001416: 4b16 ldr r3, [pc, #88] @ (8001470 ) + 8001418: 6b5b ldr r3, [r3, #52] @ 0x34 + 800141a: 4a15 ldr r2, [pc, #84] @ (8001470 ) + 800141c: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001420: 6353 str r3, [r2, #52] @ 0x34 + 8001422: e01c b.n 800145e + 8001424: 687b ldr r3, [r7, #4] + 8001426: 689b ldr r3, [r3, #8] + 8001428: 2b05 cmp r3, #5 + 800142a: d10c bne.n 8001446 + 800142c: 4b10 ldr r3, [pc, #64] @ (8001470 ) + 800142e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001430: 4a0f ldr r2, [pc, #60] @ (8001470 ) + 8001432: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8001436: 6353 str r3, [r2, #52] @ 0x34 + 8001438: 4b0d ldr r3, [pc, #52] @ (8001470 ) + 800143a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800143c: 4a0c ldr r2, [pc, #48] @ (8001470 ) + 800143e: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001442: 6353 str r3, [r2, #52] @ 0x34 + 8001444: e00b b.n 800145e + 8001446: 4b0a ldr r3, [pc, #40] @ (8001470 ) + 8001448: 6b5b ldr r3, [r3, #52] @ 0x34 + 800144a: 4a09 ldr r2, [pc, #36] @ (8001470 ) + 800144c: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001450: 6353 str r3, [r2, #52] @ 0x34 + 8001452: 4b07 ldr r3, [pc, #28] @ (8001470 ) + 8001454: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001456: 4a06 ldr r2, [pc, #24] @ (8001470 ) + 8001458: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800145c: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 800145e: 687b ldr r3, [r7, #4] + 8001460: 689b ldr r3, [r3, #8] + 8001462: 2b00 cmp r3, #0 + 8001464: d024 beq.n 80014b0 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001466: f7ff fae1 bl 8000a2c + 800146a: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 800146c: e019 b.n 80014a2 + 800146e: bf00 nop + 8001470: 40023800 .word 0x40023800 + 8001474: 08002070 .word 0x08002070 + 8001478: 20000000 .word 0x20000000 + 800147c: 20000004 .word 0x20000004 + 8001480: 42470020 .word 0x42470020 + 8001484: 42470680 .word 0x42470680 + 8001488: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 800148c: f7ff face bl 8000a2c + 8001490: 4602 mov r2, r0 + 8001492: 693b ldr r3, [r7, #16] + 8001494: 1ad3 subs r3, r2, r3 + 8001496: f241 3288 movw r2, #5000 @ 0x1388 + 800149a: 4293 cmp r3, r2 + 800149c: d901 bls.n 80014a2 + { + return HAL_TIMEOUT; + 800149e: 2303 movs r3, #3 + 80014a0: e0a3 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 80014a2: 4b54 ldr r3, [pc, #336] @ (80015f4 ) + 80014a4: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014a6: f403 7300 and.w r3, r3, #512 @ 0x200 + 80014aa: 2b00 cmp r3, #0 + 80014ac: d0ee beq.n 800148c + 80014ae: e014 b.n 80014da + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80014b0: f7ff fabc bl 8000a2c + 80014b4: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80014b6: e00a b.n 80014ce + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80014b8: f7ff fab8 bl 8000a2c + 80014bc: 4602 mov r2, r0 + 80014be: 693b ldr r3, [r7, #16] + 80014c0: 1ad3 subs r3, r2, r3 + 80014c2: f241 3288 movw r2, #5000 @ 0x1388 + 80014c6: 4293 cmp r3, r2 + 80014c8: d901 bls.n 80014ce + { + return HAL_TIMEOUT; + 80014ca: 2303 movs r3, #3 + 80014cc: e08d b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80014ce: 4b49 ldr r3, [pc, #292] @ (80015f4 ) + 80014d0: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014d2: f403 7300 and.w r3, r3, #512 @ 0x200 + 80014d6: 2b00 cmp r3, #0 + 80014d8: d1ee bne.n 80014b8 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 80014da: 7ffb ldrb r3, [r7, #31] + 80014dc: 2b01 cmp r3, #1 + 80014de: d105 bne.n 80014ec + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80014e0: 4b44 ldr r3, [pc, #272] @ (80015f4 ) + 80014e2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80014e4: 4a43 ldr r2, [pc, #268] @ (80015f4 ) + 80014e6: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80014ea: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80014ec: 687b ldr r3, [r7, #4] + 80014ee: 6a5b ldr r3, [r3, #36] @ 0x24 + 80014f0: 2b00 cmp r3, #0 + 80014f2: d079 beq.n 80015e8 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80014f4: 69bb ldr r3, [r7, #24] + 80014f6: 2b0c cmp r3, #12 + 80014f8: d056 beq.n 80015a8 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 80014fa: 687b ldr r3, [r7, #4] + 80014fc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80014fe: 2b02 cmp r3, #2 + 8001500: d13b bne.n 800157a + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001502: 4b3d ldr r3, [pc, #244] @ (80015f8 ) + 8001504: 2200 movs r2, #0 + 8001506: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001508: f7ff fa90 bl 8000a2c + 800150c: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800150e: e008 b.n 8001522 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001510: f7ff fa8c bl 8000a2c + 8001514: 4602 mov r2, r0 + 8001516: 693b ldr r3, [r7, #16] + 8001518: 1ad3 subs r3, r2, r3 + 800151a: 2b02 cmp r3, #2 + 800151c: d901 bls.n 8001522 + { + return HAL_TIMEOUT; + 800151e: 2303 movs r3, #3 + 8001520: e063 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001522: 4b34 ldr r3, [pc, #208] @ (80015f4 ) + 8001524: 681b ldr r3, [r3, #0] + 8001526: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800152a: 2b00 cmp r3, #0 + 800152c: d1f0 bne.n 8001510 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 800152e: 4b31 ldr r3, [pc, #196] @ (80015f4 ) + 8001530: 689b ldr r3, [r3, #8] + 8001532: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 8001536: 687b ldr r3, [r7, #4] + 8001538: 6a99 ldr r1, [r3, #40] @ 0x28 + 800153a: 687b ldr r3, [r7, #4] + 800153c: 6adb ldr r3, [r3, #44] @ 0x2c + 800153e: 4319 orrs r1, r3 + 8001540: 687b ldr r3, [r7, #4] + 8001542: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001544: 430b orrs r3, r1 + 8001546: 492b ldr r1, [pc, #172] @ (80015f4 ) + 8001548: 4313 orrs r3, r2 + 800154a: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 800154c: 4b2a ldr r3, [pc, #168] @ (80015f8 ) + 800154e: 2201 movs r2, #1 + 8001550: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001552: f7ff fa6b bl 8000a2c + 8001556: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001558: e008 b.n 800156c + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800155a: f7ff fa67 bl 8000a2c + 800155e: 4602 mov r2, r0 + 8001560: 693b ldr r3, [r7, #16] + 8001562: 1ad3 subs r3, r2, r3 + 8001564: 2b02 cmp r3, #2 + 8001566: d901 bls.n 800156c + { + return HAL_TIMEOUT; + 8001568: 2303 movs r3, #3 + 800156a: e03e b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800156c: 4b21 ldr r3, [pc, #132] @ (80015f4 ) + 800156e: 681b ldr r3, [r3, #0] + 8001570: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001574: 2b00 cmp r3, #0 + 8001576: d0f0 beq.n 800155a + 8001578: e036 b.n 80015e8 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 800157a: 4b1f ldr r3, [pc, #124] @ (80015f8 ) + 800157c: 2200 movs r2, #0 + 800157e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001580: f7ff fa54 bl 8000a2c + 8001584: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001586: e008 b.n 800159a + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001588: f7ff fa50 bl 8000a2c + 800158c: 4602 mov r2, r0 + 800158e: 693b ldr r3, [r7, #16] + 8001590: 1ad3 subs r3, r2, r3 + 8001592: 2b02 cmp r3, #2 + 8001594: d901 bls.n 800159a + { + return HAL_TIMEOUT; + 8001596: 2303 movs r3, #3 + 8001598: e027 b.n 80015ea + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800159a: 4b16 ldr r3, [pc, #88] @ (80015f4 ) + 800159c: 681b ldr r3, [r3, #0] + 800159e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80015a2: 2b00 cmp r3, #0 + 80015a4: d1f0 bne.n 8001588 + 80015a6: e01f b.n 80015e8 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 80015a8: 687b ldr r3, [r7, #4] + 80015aa: 6a5b ldr r3, [r3, #36] @ 0x24 + 80015ac: 2b01 cmp r3, #1 + 80015ae: d101 bne.n 80015b4 + { + return HAL_ERROR; + 80015b0: 2301 movs r3, #1 + 80015b2: e01a b.n 80015ea + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 80015b4: 4b0f ldr r3, [pc, #60] @ (80015f4 ) + 80015b6: 689b ldr r3, [r3, #8] + 80015b8: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80015ba: 697b ldr r3, [r7, #20] + 80015bc: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 80015c0: 687b ldr r3, [r7, #4] + 80015c2: 6a9b ldr r3, [r3, #40] @ 0x28 + 80015c4: 429a cmp r2, r3 + 80015c6: d10d bne.n 80015e4 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80015c8: 697b ldr r3, [r7, #20] + 80015ca: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 80015ce: 687b ldr r3, [r7, #4] + 80015d0: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80015d2: 429a cmp r2, r3 + 80015d4: d106 bne.n 80015e4 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 80015d6: 697b ldr r3, [r7, #20] + 80015d8: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 80015dc: 687b ldr r3, [r7, #4] + 80015de: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80015e0: 429a cmp r2, r3 + 80015e2: d001 beq.n 80015e8 + { + return HAL_ERROR; + 80015e4: 2301 movs r3, #1 + 80015e6: e000 b.n 80015ea + } + } + } + } + + return HAL_OK; + 80015e8: 2300 movs r3, #0 +} + 80015ea: 4618 mov r0, r3 + 80015ec: 3720 adds r7, #32 + 80015ee: 46bd mov sp, r7 + 80015f0: bd80 pop {r7, pc} + 80015f2: bf00 nop + 80015f4: 40023800 .word 0x40023800 + 80015f8: 42470060 .word 0x42470060 + +080015fc : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 80015fc: b580 push {r7, lr} + 80015fe: b084 sub sp, #16 + 8001600: af00 add r7, sp, #0 + 8001602: 6078 str r0, [r7, #4] + 8001604: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 8001606: 687b ldr r3, [r7, #4] + 8001608: 2b00 cmp r3, #0 + 800160a: d101 bne.n 8001610 + { + return HAL_ERROR; + 800160c: 2301 movs r3, #1 + 800160e: e11a b.n 8001846 + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001610: 4b8f ldr r3, [pc, #572] @ (8001850 ) + 8001612: 681b ldr r3, [r3, #0] + 8001614: f003 0301 and.w r3, r3, #1 + 8001618: 683a ldr r2, [r7, #0] + 800161a: 429a cmp r2, r3 + 800161c: d919 bls.n 8001652 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 800161e: 683b ldr r3, [r7, #0] + 8001620: 2b01 cmp r3, #1 + 8001622: d105 bne.n 8001630 + 8001624: 4b8a ldr r3, [pc, #552] @ (8001850 ) + 8001626: 681b ldr r3, [r3, #0] + 8001628: 4a89 ldr r2, [pc, #548] @ (8001850 ) + 800162a: f043 0304 orr.w r3, r3, #4 + 800162e: 6013 str r3, [r2, #0] + 8001630: 4b87 ldr r3, [pc, #540] @ (8001850 ) + 8001632: 681b ldr r3, [r3, #0] + 8001634: f023 0201 bic.w r2, r3, #1 + 8001638: 4985 ldr r1, [pc, #532] @ (8001850 ) + 800163a: 683b ldr r3, [r7, #0] + 800163c: 4313 orrs r3, r2 + 800163e: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001640: 4b83 ldr r3, [pc, #524] @ (8001850 ) + 8001642: 681b ldr r3, [r3, #0] + 8001644: f003 0301 and.w r3, r3, #1 + 8001648: 683a ldr r2, [r7, #0] + 800164a: 429a cmp r2, r3 + 800164c: d001 beq.n 8001652 + { + return HAL_ERROR; + 800164e: 2301 movs r3, #1 + 8001650: e0f9 b.n 8001846 + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001652: 687b ldr r3, [r7, #4] + 8001654: 681b ldr r3, [r3, #0] + 8001656: f003 0302 and.w r3, r3, #2 + 800165a: 2b00 cmp r3, #0 + 800165c: d008 beq.n 8001670 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 800165e: 4b7d ldr r3, [pc, #500] @ (8001854 ) + 8001660: 689b ldr r3, [r3, #8] + 8001662: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001666: 687b ldr r3, [r7, #4] + 8001668: 689b ldr r3, [r3, #8] + 800166a: 497a ldr r1, [pc, #488] @ (8001854 ) + 800166c: 4313 orrs r3, r2 + 800166e: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001670: 687b ldr r3, [r7, #4] + 8001672: 681b ldr r3, [r3, #0] + 8001674: f003 0301 and.w r3, r3, #1 + 8001678: 2b00 cmp r3, #0 + 800167a: f000 808e beq.w 800179a + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 800167e: 687b ldr r3, [r7, #4] + 8001680: 685b ldr r3, [r3, #4] + 8001682: 2b02 cmp r3, #2 + 8001684: d107 bne.n 8001696 + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001686: 4b73 ldr r3, [pc, #460] @ (8001854 ) + 8001688: 681b ldr r3, [r3, #0] + 800168a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800168e: 2b00 cmp r3, #0 + 8001690: d121 bne.n 80016d6 + { + return HAL_ERROR; + 8001692: 2301 movs r3, #1 + 8001694: e0d7 b.n 8001846 + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001696: 687b ldr r3, [r7, #4] + 8001698: 685b ldr r3, [r3, #4] + 800169a: 2b03 cmp r3, #3 + 800169c: d107 bne.n 80016ae + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800169e: 4b6d ldr r3, [pc, #436] @ (8001854 ) + 80016a0: 681b ldr r3, [r3, #0] + 80016a2: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80016a6: 2b00 cmp r3, #0 + 80016a8: d115 bne.n 80016d6 + { + return HAL_ERROR; + 80016aa: 2301 movs r3, #1 + 80016ac: e0cb b.n 8001846 + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 80016ae: 687b ldr r3, [r7, #4] + 80016b0: 685b ldr r3, [r3, #4] + 80016b2: 2b01 cmp r3, #1 + 80016b4: d107 bne.n 80016c6 + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80016b6: 4b67 ldr r3, [pc, #412] @ (8001854 ) + 80016b8: 681b ldr r3, [r3, #0] + 80016ba: f003 0302 and.w r3, r3, #2 + 80016be: 2b00 cmp r3, #0 + 80016c0: d109 bne.n 80016d6 + { + return HAL_ERROR; + 80016c2: 2301 movs r3, #1 + 80016c4: e0bf b.n 8001846 + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80016c6: 4b63 ldr r3, [pc, #396] @ (8001854 ) + 80016c8: 681b ldr r3, [r3, #0] + 80016ca: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016ce: 2b00 cmp r3, #0 + 80016d0: d101 bne.n 80016d6 + { + return HAL_ERROR; + 80016d2: 2301 movs r3, #1 + 80016d4: e0b7 b.n 8001846 + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 80016d6: 4b5f ldr r3, [pc, #380] @ (8001854 ) + 80016d8: 689b ldr r3, [r3, #8] + 80016da: f023 0203 bic.w r2, r3, #3 + 80016de: 687b ldr r3, [r7, #4] + 80016e0: 685b ldr r3, [r3, #4] + 80016e2: 495c ldr r1, [pc, #368] @ (8001854 ) + 80016e4: 4313 orrs r3, r2 + 80016e6: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80016e8: f7ff f9a0 bl 8000a2c + 80016ec: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80016ee: 687b ldr r3, [r7, #4] + 80016f0: 685b ldr r3, [r3, #4] + 80016f2: 2b02 cmp r3, #2 + 80016f4: d112 bne.n 800171c + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 80016f6: e00a b.n 800170e + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80016f8: f7ff f998 bl 8000a2c + 80016fc: 4602 mov r2, r0 + 80016fe: 68fb ldr r3, [r7, #12] + 8001700: 1ad3 subs r3, r2, r3 + 8001702: f241 3288 movw r2, #5000 @ 0x1388 + 8001706: 4293 cmp r3, r2 + 8001708: d901 bls.n 800170e + { + return HAL_TIMEOUT; + 800170a: 2303 movs r3, #3 + 800170c: e09b b.n 8001846 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 800170e: 4b51 ldr r3, [pc, #324] @ (8001854 ) + 8001710: 689b ldr r3, [r3, #8] + 8001712: f003 030c and.w r3, r3, #12 + 8001716: 2b08 cmp r3, #8 + 8001718: d1ee bne.n 80016f8 + 800171a: e03e b.n 800179a + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 800171c: 687b ldr r3, [r7, #4] + 800171e: 685b ldr r3, [r3, #4] + 8001720: 2b03 cmp r3, #3 + 8001722: d112 bne.n 800174a + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001724: e00a b.n 800173c + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001726: f7ff f981 bl 8000a2c + 800172a: 4602 mov r2, r0 + 800172c: 68fb ldr r3, [r7, #12] + 800172e: 1ad3 subs r3, r2, r3 + 8001730: f241 3288 movw r2, #5000 @ 0x1388 + 8001734: 4293 cmp r3, r2 + 8001736: d901 bls.n 800173c + { + return HAL_TIMEOUT; + 8001738: 2303 movs r3, #3 + 800173a: e084 b.n 8001846 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800173c: 4b45 ldr r3, [pc, #276] @ (8001854 ) + 800173e: 689b ldr r3, [r3, #8] + 8001740: f003 030c and.w r3, r3, #12 + 8001744: 2b0c cmp r3, #12 + 8001746: d1ee bne.n 8001726 + 8001748: e027 b.n 800179a + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 800174a: 687b ldr r3, [r7, #4] + 800174c: 685b ldr r3, [r3, #4] + 800174e: 2b01 cmp r3, #1 + 8001750: d11d bne.n 800178e + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001752: e00a b.n 800176a + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001754: f7ff f96a bl 8000a2c + 8001758: 4602 mov r2, r0 + 800175a: 68fb ldr r3, [r7, #12] + 800175c: 1ad3 subs r3, r2, r3 + 800175e: f241 3288 movw r2, #5000 @ 0x1388 + 8001762: 4293 cmp r3, r2 + 8001764: d901 bls.n 800176a + { + return HAL_TIMEOUT; + 8001766: 2303 movs r3, #3 + 8001768: e06d b.n 8001846 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 800176a: 4b3a ldr r3, [pc, #232] @ (8001854 ) + 800176c: 689b ldr r3, [r3, #8] + 800176e: f003 030c and.w r3, r3, #12 + 8001772: 2b04 cmp r3, #4 + 8001774: d1ee bne.n 8001754 + 8001776: e010 b.n 800179a + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001778: f7ff f958 bl 8000a2c + 800177c: 4602 mov r2, r0 + 800177e: 68fb ldr r3, [r7, #12] + 8001780: 1ad3 subs r3, r2, r3 + 8001782: f241 3288 movw r2, #5000 @ 0x1388 + 8001786: 4293 cmp r3, r2 + 8001788: d901 bls.n 800178e + { + return HAL_TIMEOUT; + 800178a: 2303 movs r3, #3 + 800178c: e05b b.n 8001846 + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 800178e: 4b31 ldr r3, [pc, #196] @ (8001854 ) + 8001790: 689b ldr r3, [r3, #8] + 8001792: f003 030c and.w r3, r3, #12 + 8001796: 2b00 cmp r3, #0 + 8001798: d1ee bne.n 8001778 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 800179a: 4b2d ldr r3, [pc, #180] @ (8001850 ) + 800179c: 681b ldr r3, [r3, #0] + 800179e: f003 0301 and.w r3, r3, #1 + 80017a2: 683a ldr r2, [r7, #0] + 80017a4: 429a cmp r2, r3 + 80017a6: d219 bcs.n 80017dc + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80017a8: 683b ldr r3, [r7, #0] + 80017aa: 2b01 cmp r3, #1 + 80017ac: d105 bne.n 80017ba + 80017ae: 4b28 ldr r3, [pc, #160] @ (8001850 ) + 80017b0: 681b ldr r3, [r3, #0] + 80017b2: 4a27 ldr r2, [pc, #156] @ (8001850 ) + 80017b4: f043 0304 orr.w r3, r3, #4 + 80017b8: 6013 str r3, [r2, #0] + 80017ba: 4b25 ldr r3, [pc, #148] @ (8001850 ) + 80017bc: 681b ldr r3, [r3, #0] + 80017be: f023 0201 bic.w r2, r3, #1 + 80017c2: 4923 ldr r1, [pc, #140] @ (8001850 ) + 80017c4: 683b ldr r3, [r7, #0] + 80017c6: 4313 orrs r3, r2 + 80017c8: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 80017ca: 4b21 ldr r3, [pc, #132] @ (8001850 ) + 80017cc: 681b ldr r3, [r3, #0] + 80017ce: f003 0301 and.w r3, r3, #1 + 80017d2: 683a ldr r2, [r7, #0] + 80017d4: 429a cmp r2, r3 + 80017d6: d001 beq.n 80017dc + { + return HAL_ERROR; + 80017d8: 2301 movs r3, #1 + 80017da: e034 b.n 8001846 + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 80017dc: 687b ldr r3, [r7, #4] + 80017de: 681b ldr r3, [r3, #0] + 80017e0: f003 0304 and.w r3, r3, #4 + 80017e4: 2b00 cmp r3, #0 + 80017e6: d008 beq.n 80017fa + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 80017e8: 4b1a ldr r3, [pc, #104] @ (8001854 ) + 80017ea: 689b ldr r3, [r3, #8] + 80017ec: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 80017f0: 687b ldr r3, [r7, #4] + 80017f2: 68db ldr r3, [r3, #12] + 80017f4: 4917 ldr r1, [pc, #92] @ (8001854 ) + 80017f6: 4313 orrs r3, r2 + 80017f8: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 80017fa: 687b ldr r3, [r7, #4] + 80017fc: 681b ldr r3, [r3, #0] + 80017fe: f003 0308 and.w r3, r3, #8 + 8001802: 2b00 cmp r3, #0 + 8001804: d009 beq.n 800181a + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001806: 4b13 ldr r3, [pc, #76] @ (8001854 ) + 8001808: 689b ldr r3, [r3, #8] + 800180a: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 800180e: 687b ldr r3, [r7, #4] + 8001810: 691b ldr r3, [r3, #16] + 8001812: 00db lsls r3, r3, #3 + 8001814: 490f ldr r1, [pc, #60] @ (8001854 ) + 8001816: 4313 orrs r3, r2 + 8001818: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 800181a: f000 f823 bl 8001864 + 800181e: 4602 mov r2, r0 + 8001820: 4b0c ldr r3, [pc, #48] @ (8001854 ) + 8001822: 689b ldr r3, [r3, #8] + 8001824: 091b lsrs r3, r3, #4 + 8001826: f003 030f and.w r3, r3, #15 + 800182a: 490b ldr r1, [pc, #44] @ (8001858 ) + 800182c: 5ccb ldrb r3, [r1, r3] + 800182e: fa22 f303 lsr.w r3, r2, r3 + 8001832: 4a0a ldr r2, [pc, #40] @ (800185c ) + 8001834: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001836: 4b0a ldr r3, [pc, #40] @ (8001860 ) + 8001838: 681b ldr r3, [r3, #0] + 800183a: 4618 mov r0, r3 + 800183c: f7ff f8aa bl 8000994 + 8001840: 4603 mov r3, r0 + 8001842: 72fb strb r3, [r7, #11] + + return status; + 8001844: 7afb ldrb r3, [r7, #11] +} + 8001846: 4618 mov r0, r3 + 8001848: 3710 adds r7, #16 + 800184a: 46bd mov sp, r7 + 800184c: bd80 pop {r7, pc} + 800184e: bf00 nop + 8001850: 40023c00 .word 0x40023c00 + 8001854: 40023800 .word 0x40023800 + 8001858: 08002070 .word 0x08002070 + 800185c: 20000000 .word 0x20000000 + 8001860: 20000004 .word 0x20000004 + +08001864 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001864: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001868: b08e sub sp, #56 @ 0x38 + 800186a: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 800186c: 4b58 ldr r3, [pc, #352] @ (80019d0 ) + 800186e: 689b ldr r3, [r3, #8] + 8001870: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001872: 6afb ldr r3, [r7, #44] @ 0x2c + 8001874: f003 030c and.w r3, r3, #12 + 8001878: 2b0c cmp r3, #12 + 800187a: d00d beq.n 8001898 + 800187c: 2b0c cmp r3, #12 + 800187e: f200 8092 bhi.w 80019a6 + 8001882: 2b04 cmp r3, #4 + 8001884: d002 beq.n 800188c + 8001886: 2b08 cmp r3, #8 + 8001888: d003 beq.n 8001892 + 800188a: e08c b.n 80019a6 + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 800188c: 4b51 ldr r3, [pc, #324] @ (80019d4 ) + 800188e: 633b str r3, [r7, #48] @ 0x30 + break; + 8001890: e097 b.n 80019c2 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001892: 4b51 ldr r3, [pc, #324] @ (80019d8 ) + 8001894: 633b str r3, [r7, #48] @ 0x30 + break; + 8001896: e094 b.n 80019c2 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001898: 6afb ldr r3, [r7, #44] @ 0x2c + 800189a: 0c9b lsrs r3, r3, #18 + 800189c: f003 020f and.w r2, r3, #15 + 80018a0: 4b4e ldr r3, [pc, #312] @ (80019dc ) + 80018a2: 5c9b ldrb r3, [r3, r2] + 80018a4: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 80018a6: 6afb ldr r3, [r7, #44] @ 0x2c + 80018a8: 0d9b lsrs r3, r3, #22 + 80018aa: f003 0303 and.w r3, r3, #3 + 80018ae: 3301 adds r3, #1 + 80018b0: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 80018b2: 4b47 ldr r3, [pc, #284] @ (80019d0 ) + 80018b4: 689b ldr r3, [r3, #8] + 80018b6: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80018ba: 2b00 cmp r3, #0 + 80018bc: d021 beq.n 8001902 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 80018be: 6abb ldr r3, [r7, #40] @ 0x28 + 80018c0: 2200 movs r2, #0 + 80018c2: 61bb str r3, [r7, #24] + 80018c4: 61fa str r2, [r7, #28] + 80018c6: 4b44 ldr r3, [pc, #272] @ (80019d8 ) + 80018c8: e9d7 8906 ldrd r8, r9, [r7, #24] + 80018cc: 464a mov r2, r9 + 80018ce: fb03 f202 mul.w r2, r3, r2 + 80018d2: 2300 movs r3, #0 + 80018d4: 4644 mov r4, r8 + 80018d6: fb04 f303 mul.w r3, r4, r3 + 80018da: 4413 add r3, r2 + 80018dc: 4a3e ldr r2, [pc, #248] @ (80019d8 ) + 80018de: 4644 mov r4, r8 + 80018e0: fba4 0102 umull r0, r1, r4, r2 + 80018e4: 440b add r3, r1 + 80018e6: 4619 mov r1, r3 + 80018e8: 6a7b ldr r3, [r7, #36] @ 0x24 + 80018ea: 2200 movs r2, #0 + 80018ec: 613b str r3, [r7, #16] + 80018ee: 617a str r2, [r7, #20] + 80018f0: e9d7 2304 ldrd r2, r3, [r7, #16] + 80018f4: f7fe fc42 bl 800017c <__aeabi_uldivmod> + 80018f8: 4602 mov r2, r0 + 80018fa: 460b mov r3, r1 + 80018fc: 4613 mov r3, r2 + 80018fe: 637b str r3, [r7, #52] @ 0x34 + 8001900: e04e b.n 80019a0 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001902: 6abb ldr r3, [r7, #40] @ 0x28 + 8001904: 2200 movs r2, #0 + 8001906: 469a mov sl, r3 + 8001908: 4693 mov fp, r2 + 800190a: 4652 mov r2, sl + 800190c: 465b mov r3, fp + 800190e: f04f 0000 mov.w r0, #0 + 8001912: f04f 0100 mov.w r1, #0 + 8001916: 0159 lsls r1, r3, #5 + 8001918: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 800191c: 0150 lsls r0, r2, #5 + 800191e: 4602 mov r2, r0 + 8001920: 460b mov r3, r1 + 8001922: ebb2 080a subs.w r8, r2, sl + 8001926: eb63 090b sbc.w r9, r3, fp + 800192a: f04f 0200 mov.w r2, #0 + 800192e: f04f 0300 mov.w r3, #0 + 8001932: ea4f 1389 mov.w r3, r9, lsl #6 + 8001936: ea43 6398 orr.w r3, r3, r8, lsr #26 + 800193a: ea4f 1288 mov.w r2, r8, lsl #6 + 800193e: ebb2 0408 subs.w r4, r2, r8 + 8001942: eb63 0509 sbc.w r5, r3, r9 + 8001946: f04f 0200 mov.w r2, #0 + 800194a: f04f 0300 mov.w r3, #0 + 800194e: 00eb lsls r3, r5, #3 + 8001950: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001954: 00e2 lsls r2, r4, #3 + 8001956: 4614 mov r4, r2 + 8001958: 461d mov r5, r3 + 800195a: eb14 030a adds.w r3, r4, sl + 800195e: 603b str r3, [r7, #0] + 8001960: eb45 030b adc.w r3, r5, fp + 8001964: 607b str r3, [r7, #4] + 8001966: f04f 0200 mov.w r2, #0 + 800196a: f04f 0300 mov.w r3, #0 + 800196e: e9d7 4500 ldrd r4, r5, [r7] + 8001972: 4629 mov r1, r5 + 8001974: 028b lsls r3, r1, #10 + 8001976: 4620 mov r0, r4 + 8001978: 4629 mov r1, r5 + 800197a: 4604 mov r4, r0 + 800197c: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001980: 4601 mov r1, r0 + 8001982: 028a lsls r2, r1, #10 + 8001984: 4610 mov r0, r2 + 8001986: 4619 mov r1, r3 + 8001988: 6a7b ldr r3, [r7, #36] @ 0x24 + 800198a: 2200 movs r2, #0 + 800198c: 60bb str r3, [r7, #8] + 800198e: 60fa str r2, [r7, #12] + 8001990: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001994: f7fe fbf2 bl 800017c <__aeabi_uldivmod> + 8001998: 4602 mov r2, r0 + 800199a: 460b mov r3, r1 + 800199c: 4613 mov r3, r2 + 800199e: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 80019a0: 6b7b ldr r3, [r7, #52] @ 0x34 + 80019a2: 633b str r3, [r7, #48] @ 0x30 + break; + 80019a4: e00d b.n 80019c2 + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 80019a6: 4b0a ldr r3, [pc, #40] @ (80019d0 ) + 80019a8: 685b ldr r3, [r3, #4] + 80019aa: 0b5b lsrs r3, r3, #13 + 80019ac: f003 0307 and.w r3, r3, #7 + 80019b0: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 80019b2: 6a3b ldr r3, [r7, #32] + 80019b4: 3301 adds r3, #1 + 80019b6: f44f 4200 mov.w r2, #32768 @ 0x8000 + 80019ba: fa02 f303 lsl.w r3, r2, r3 + 80019be: 633b str r3, [r7, #48] @ 0x30 + break; + 80019c0: bf00 nop + } + } + return sysclockfreq; + 80019c2: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 80019c4: 4618 mov r0, r3 + 80019c6: 3738 adds r7, #56 @ 0x38 + 80019c8: 46bd mov sp, r7 + 80019ca: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 80019ce: bf00 nop + 80019d0: 40023800 .word 0x40023800 + 80019d4: 00f42400 .word 0x00f42400 + 80019d8: 016e3600 .word 0x016e3600 + 80019dc: 08002064 .word 0x08002064 + +080019e0 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 80019e0: b480 push {r7} + 80019e2: b087 sub sp, #28 + 80019e4: af00 add r7, sp, #0 + 80019e6: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 80019e8: 2300 movs r3, #0 + 80019ea: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 80019ec: 4b29 ldr r3, [pc, #164] @ (8001a94 ) + 80019ee: 689b ldr r3, [r3, #8] + 80019f0: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 80019f4: 2b00 cmp r3, #0 + 80019f6: d12c bne.n 8001a52 + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 80019f8: 4b26 ldr r3, [pc, #152] @ (8001a94 ) + 80019fa: 6a5b ldr r3, [r3, #36] @ 0x24 + 80019fc: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001a00: 2b00 cmp r3, #0 + 8001a02: d005 beq.n 8001a10 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001a04: 4b24 ldr r3, [pc, #144] @ (8001a98 ) + 8001a06: 681b ldr r3, [r3, #0] + 8001a08: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001a0c: 617b str r3, [r7, #20] + 8001a0e: e016 b.n 8001a3e + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001a10: 4b20 ldr r3, [pc, #128] @ (8001a94 ) + 8001a12: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a14: 4a1f ldr r2, [pc, #124] @ (8001a94 ) + 8001a16: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001a1a: 6253 str r3, [r2, #36] @ 0x24 + 8001a1c: 4b1d ldr r3, [pc, #116] @ (8001a94 ) + 8001a1e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a20: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001a24: 60fb str r3, [r7, #12] + 8001a26: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001a28: 4b1b ldr r3, [pc, #108] @ (8001a98 ) + 8001a2a: 681b ldr r3, [r3, #0] + 8001a2c: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001a30: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001a32: 4b18 ldr r3, [pc, #96] @ (8001a94 ) + 8001a34: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a36: 4a17 ldr r2, [pc, #92] @ (8001a94 ) + 8001a38: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001a3c: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001a3e: 697b ldr r3, [r7, #20] + 8001a40: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001a44: d105 bne.n 8001a52 + 8001a46: 687b ldr r3, [r7, #4] + 8001a48: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001a4c: d101 bne.n 8001a52 + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001a4e: 2301 movs r3, #1 + 8001a50: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001a52: 693b ldr r3, [r7, #16] + 8001a54: 2b01 cmp r3, #1 + 8001a56: d105 bne.n 8001a64 + 8001a58: 4b10 ldr r3, [pc, #64] @ (8001a9c ) + 8001a5a: 681b ldr r3, [r3, #0] + 8001a5c: 4a0f ldr r2, [pc, #60] @ (8001a9c ) + 8001a5e: f043 0304 orr.w r3, r3, #4 + 8001a62: 6013 str r3, [r2, #0] + 8001a64: 4b0d ldr r3, [pc, #52] @ (8001a9c ) + 8001a66: 681b ldr r3, [r3, #0] + 8001a68: f023 0201 bic.w r2, r3, #1 + 8001a6c: 490b ldr r1, [pc, #44] @ (8001a9c ) + 8001a6e: 693b ldr r3, [r7, #16] + 8001a70: 4313 orrs r3, r2 + 8001a72: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001a74: 4b09 ldr r3, [pc, #36] @ (8001a9c ) + 8001a76: 681b ldr r3, [r3, #0] + 8001a78: f003 0301 and.w r3, r3, #1 + 8001a7c: 693a ldr r2, [r7, #16] + 8001a7e: 429a cmp r2, r3 + 8001a80: d001 beq.n 8001a86 + { + return HAL_ERROR; + 8001a82: 2301 movs r3, #1 + 8001a84: e000 b.n 8001a88 + } + + return HAL_OK; + 8001a86: 2300 movs r3, #0 +} + 8001a88: 4618 mov r0, r3 + 8001a8a: 371c adds r7, #28 + 8001a8c: 46bd mov sp, r7 + 8001a8e: bc80 pop {r7} + 8001a90: 4770 bx lr + 8001a92: bf00 nop + 8001a94: 40023800 .word 0x40023800 + 8001a98: 40007000 .word 0x40007000 + 8001a9c: 40023c00 .word 0x40023c00 + +08001aa0 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001aa0: b580 push {r7, lr} + 8001aa2: b082 sub sp, #8 + 8001aa4: af00 add r7, sp, #0 + 8001aa6: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001aa8: 687b ldr r3, [r7, #4] + 8001aaa: 2b00 cmp r3, #0 + 8001aac: d101 bne.n 8001ab2 + { + return HAL_ERROR; + 8001aae: 2301 movs r3, #1 + 8001ab0: e07b b.n 8001baa + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001ab2: 687b ldr r3, [r7, #4] + 8001ab4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ab6: 2b00 cmp r3, #0 + 8001ab8: d108 bne.n 8001acc + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001aba: 687b ldr r3, [r7, #4] + 8001abc: 685b ldr r3, [r3, #4] + 8001abe: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001ac2: d009 beq.n 8001ad8 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001ac4: 687b ldr r3, [r7, #4] + 8001ac6: 2200 movs r2, #0 + 8001ac8: 61da str r2, [r3, #28] + 8001aca: e005 b.n 8001ad8 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001acc: 687b ldr r3, [r7, #4] + 8001ace: 2200 movs r2, #0 + 8001ad0: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001ad2: 687b ldr r3, [r7, #4] + 8001ad4: 2200 movs r2, #0 + 8001ad6: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001ad8: 687b ldr r3, [r7, #4] + 8001ada: 2200 movs r2, #0 + 8001adc: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001ade: 687b ldr r3, [r7, #4] + 8001ae0: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001ae4: b2db uxtb r3, r3 + 8001ae6: 2b00 cmp r3, #0 + 8001ae8: d106 bne.n 8001af8 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001aea: 687b ldr r3, [r7, #4] + 8001aec: 2200 movs r2, #0 + 8001aee: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001af2: 6878 ldr r0, [r7, #4] + 8001af4: f7fe fe1e bl 8000734 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001af8: 687b ldr r3, [r7, #4] + 8001afa: 2202 movs r2, #2 + 8001afc: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001b00: 687b ldr r3, [r7, #4] + 8001b02: 681b ldr r3, [r3, #0] + 8001b04: 681a ldr r2, [r3, #0] + 8001b06: 687b ldr r3, [r7, #4] + 8001b08: 681b ldr r3, [r3, #0] + 8001b0a: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001b0e: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001b10: 687b ldr r3, [r7, #4] + 8001b12: 685b ldr r3, [r3, #4] + 8001b14: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001b18: 687b ldr r3, [r7, #4] + 8001b1a: 689b ldr r3, [r3, #8] + 8001b1c: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001b20: 431a orrs r2, r3 + 8001b22: 687b ldr r3, [r7, #4] + 8001b24: 68db ldr r3, [r3, #12] + 8001b26: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001b2a: 431a orrs r2, r3 + 8001b2c: 687b ldr r3, [r7, #4] + 8001b2e: 691b ldr r3, [r3, #16] + 8001b30: f003 0302 and.w r3, r3, #2 + 8001b34: 431a orrs r2, r3 + 8001b36: 687b ldr r3, [r7, #4] + 8001b38: 695b ldr r3, [r3, #20] + 8001b3a: f003 0301 and.w r3, r3, #1 + 8001b3e: 431a orrs r2, r3 + 8001b40: 687b ldr r3, [r7, #4] + 8001b42: 699b ldr r3, [r3, #24] + 8001b44: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001b48: 431a orrs r2, r3 + 8001b4a: 687b ldr r3, [r7, #4] + 8001b4c: 69db ldr r3, [r3, #28] + 8001b4e: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001b52: 431a orrs r2, r3 + 8001b54: 687b ldr r3, [r7, #4] + 8001b56: 6a1b ldr r3, [r3, #32] + 8001b58: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001b5c: ea42 0103 orr.w r1, r2, r3 + 8001b60: 687b ldr r3, [r7, #4] + 8001b62: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001b64: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001b68: 687b ldr r3, [r7, #4] + 8001b6a: 681b ldr r3, [r3, #0] + 8001b6c: 430a orrs r2, r1 + 8001b6e: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001b70: 687b ldr r3, [r7, #4] + 8001b72: 699b ldr r3, [r3, #24] + 8001b74: 0c1b lsrs r3, r3, #16 + 8001b76: f003 0104 and.w r1, r3, #4 + 8001b7a: 687b ldr r3, [r7, #4] + 8001b7c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001b7e: f003 0210 and.w r2, r3, #16 + 8001b82: 687b ldr r3, [r7, #4] + 8001b84: 681b ldr r3, [r3, #0] + 8001b86: 430a orrs r2, r1 + 8001b88: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001b8a: 687b ldr r3, [r7, #4] + 8001b8c: 681b ldr r3, [r3, #0] + 8001b8e: 69da ldr r2, [r3, #28] + 8001b90: 687b ldr r3, [r7, #4] + 8001b92: 681b ldr r3, [r3, #0] + 8001b94: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001b98: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001b9a: 687b ldr r3, [r7, #4] + 8001b9c: 2200 movs r2, #0 + 8001b9e: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001ba0: 687b ldr r3, [r7, #4] + 8001ba2: 2201 movs r2, #1 + 8001ba4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001ba8: 2300 movs r3, #0 +} + 8001baa: 4618 mov r0, r3 + 8001bac: 3708 adds r7, #8 + 8001bae: 46bd mov sp, r7 + 8001bb0: bd80 pop {r7, pc} + +08001bb2 : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001bb2: b580 push {r7, lr} + 8001bb4: b088 sub sp, #32 + 8001bb6: af00 add r7, sp, #0 + 8001bb8: 60f8 str r0, [r7, #12] + 8001bba: 60b9 str r1, [r7, #8] + 8001bbc: 603b str r3, [r7, #0] + 8001bbe: 4613 mov r3, r2 + 8001bc0: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001bc2: f7fe ff33 bl 8000a2c + 8001bc6: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001bc8: 88fb ldrh r3, [r7, #6] + 8001bca: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001bcc: 68fb ldr r3, [r7, #12] + 8001bce: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001bd2: b2db uxtb r3, r3 + 8001bd4: 2b01 cmp r3, #1 + 8001bd6: d001 beq.n 8001bdc + { + return HAL_BUSY; + 8001bd8: 2302 movs r3, #2 + 8001bda: e12a b.n 8001e32 + } + + if ((pData == NULL) || (Size == 0U)) + 8001bdc: 68bb ldr r3, [r7, #8] + 8001bde: 2b00 cmp r3, #0 + 8001be0: d002 beq.n 8001be8 + 8001be2: 88fb ldrh r3, [r7, #6] + 8001be4: 2b00 cmp r3, #0 + 8001be6: d101 bne.n 8001bec + { + return HAL_ERROR; + 8001be8: 2301 movs r3, #1 + 8001bea: e122 b.n 8001e32 + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001bec: 68fb ldr r3, [r7, #12] + 8001bee: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001bf2: 2b01 cmp r3, #1 + 8001bf4: d101 bne.n 8001bfa + 8001bf6: 2302 movs r3, #2 + 8001bf8: e11b b.n 8001e32 + 8001bfa: 68fb ldr r3, [r7, #12] + 8001bfc: 2201 movs r2, #1 + 8001bfe: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001c02: 68fb ldr r3, [r7, #12] + 8001c04: 2203 movs r2, #3 + 8001c06: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001c0a: 68fb ldr r3, [r7, #12] + 8001c0c: 2200 movs r2, #0 + 8001c0e: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001c10: 68fb ldr r3, [r7, #12] + 8001c12: 68ba ldr r2, [r7, #8] + 8001c14: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001c16: 68fb ldr r3, [r7, #12] + 8001c18: 88fa ldrh r2, [r7, #6] + 8001c1a: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8001c1c: 68fb ldr r3, [r7, #12] + 8001c1e: 88fa ldrh r2, [r7, #6] + 8001c20: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8001c22: 68fb ldr r3, [r7, #12] + 8001c24: 2200 movs r2, #0 + 8001c26: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8001c28: 68fb ldr r3, [r7, #12] + 8001c2a: 2200 movs r2, #0 + 8001c2c: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8001c2e: 68fb ldr r3, [r7, #12] + 8001c30: 2200 movs r2, #0 + 8001c32: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8001c34: 68fb ldr r3, [r7, #12] + 8001c36: 2200 movs r2, #0 + 8001c38: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8001c3a: 68fb ldr r3, [r7, #12] + 8001c3c: 2200 movs r2, #0 + 8001c3e: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001c40: 68fb ldr r3, [r7, #12] + 8001c42: 689b ldr r3, [r3, #8] + 8001c44: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001c48: d10f bne.n 8001c6a + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8001c4a: 68fb ldr r3, [r7, #12] + 8001c4c: 681b ldr r3, [r3, #0] + 8001c4e: 681a ldr r2, [r3, #0] + 8001c50: 68fb ldr r3, [r7, #12] + 8001c52: 681b ldr r3, [r3, #0] + 8001c54: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001c58: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8001c5a: 68fb ldr r3, [r7, #12] + 8001c5c: 681b ldr r3, [r3, #0] + 8001c5e: 681a ldr r2, [r3, #0] + 8001c60: 68fb ldr r3, [r7, #12] + 8001c62: 681b ldr r3, [r3, #0] + 8001c64: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8001c68: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8001c6a: 68fb ldr r3, [r7, #12] + 8001c6c: 681b ldr r3, [r3, #0] + 8001c6e: 681b ldr r3, [r3, #0] + 8001c70: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001c74: 2b40 cmp r3, #64 @ 0x40 + 8001c76: d007 beq.n 8001c88 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8001c78: 68fb ldr r3, [r7, #12] + 8001c7a: 681b ldr r3, [r3, #0] + 8001c7c: 681a ldr r2, [r3, #0] + 8001c7e: 68fb ldr r3, [r7, #12] + 8001c80: 681b ldr r3, [r3, #0] + 8001c82: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8001c86: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8001c88: 68fb ldr r3, [r7, #12] + 8001c8a: 68db ldr r3, [r3, #12] + 8001c8c: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8001c90: d152 bne.n 8001d38 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001c92: 68fb ldr r3, [r7, #12] + 8001c94: 685b ldr r3, [r3, #4] + 8001c96: 2b00 cmp r3, #0 + 8001c98: d002 beq.n 8001ca0 + 8001c9a: 8b7b ldrh r3, [r7, #26] + 8001c9c: 2b01 cmp r3, #1 + 8001c9e: d145 bne.n 8001d2c + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001ca0: 68fb ldr r3, [r7, #12] + 8001ca2: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001ca4: 881a ldrh r2, [r3, #0] + 8001ca6: 68fb ldr r3, [r7, #12] + 8001ca8: 681b ldr r3, [r3, #0] + 8001caa: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001cac: 68fb ldr r3, [r7, #12] + 8001cae: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001cb0: 1c9a adds r2, r3, #2 + 8001cb2: 68fb ldr r3, [r7, #12] + 8001cb4: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001cb6: 68fb ldr r3, [r7, #12] + 8001cb8: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001cba: b29b uxth r3, r3 + 8001cbc: 3b01 subs r3, #1 + 8001cbe: b29a uxth r2, r3 + 8001cc0: 68fb ldr r3, [r7, #12] + 8001cc2: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8001cc4: e032 b.n 8001d2c + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001cc6: 68fb ldr r3, [r7, #12] + 8001cc8: 681b ldr r3, [r3, #0] + 8001cca: 689b ldr r3, [r3, #8] + 8001ccc: f003 0302 and.w r3, r3, #2 + 8001cd0: 2b02 cmp r3, #2 + 8001cd2: d112 bne.n 8001cfa + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001cd4: 68fb ldr r3, [r7, #12] + 8001cd6: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001cd8: 881a ldrh r2, [r3, #0] + 8001cda: 68fb ldr r3, [r7, #12] + 8001cdc: 681b ldr r3, [r3, #0] + 8001cde: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001ce0: 68fb ldr r3, [r7, #12] + 8001ce2: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001ce4: 1c9a adds r2, r3, #2 + 8001ce6: 68fb ldr r3, [r7, #12] + 8001ce8: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001cea: 68fb ldr r3, [r7, #12] + 8001cec: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001cee: b29b uxth r3, r3 + 8001cf0: 3b01 subs r3, #1 + 8001cf2: b29a uxth r2, r3 + 8001cf4: 68fb ldr r3, [r7, #12] + 8001cf6: 86da strh r2, [r3, #54] @ 0x36 + 8001cf8: e018 b.n 8001d2c + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001cfa: f7fe fe97 bl 8000a2c + 8001cfe: 4602 mov r2, r0 + 8001d00: 69fb ldr r3, [r7, #28] + 8001d02: 1ad3 subs r3, r2, r3 + 8001d04: 683a ldr r2, [r7, #0] + 8001d06: 429a cmp r2, r3 + 8001d08: d803 bhi.n 8001d12 + 8001d0a: 683b ldr r3, [r7, #0] + 8001d0c: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001d10: d102 bne.n 8001d18 + 8001d12: 683b ldr r3, [r7, #0] + 8001d14: 2b00 cmp r3, #0 + 8001d16: d109 bne.n 8001d2c + { + hspi->State = HAL_SPI_STATE_READY; + 8001d18: 68fb ldr r3, [r7, #12] + 8001d1a: 2201 movs r2, #1 + 8001d1c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001d20: 68fb ldr r3, [r7, #12] + 8001d22: 2200 movs r2, #0 + 8001d24: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001d28: 2303 movs r3, #3 + 8001d2a: e082 b.n 8001e32 + while (hspi->TxXferCount > 0U) + 8001d2c: 68fb ldr r3, [r7, #12] + 8001d2e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d30: b29b uxth r3, r3 + 8001d32: 2b00 cmp r3, #0 + 8001d34: d1c7 bne.n 8001cc6 + 8001d36: e053 b.n 8001de0 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001d38: 68fb ldr r3, [r7, #12] + 8001d3a: 685b ldr r3, [r3, #4] + 8001d3c: 2b00 cmp r3, #0 + 8001d3e: d002 beq.n 8001d46 + 8001d40: 8b7b ldrh r3, [r7, #26] + 8001d42: 2b01 cmp r3, #1 + 8001d44: d147 bne.n 8001dd6 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001d46: 68fb ldr r3, [r7, #12] + 8001d48: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001d4a: 68fb ldr r3, [r7, #12] + 8001d4c: 681b ldr r3, [r3, #0] + 8001d4e: 330c adds r3, #12 + 8001d50: 7812 ldrb r2, [r2, #0] + 8001d52: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001d54: 68fb ldr r3, [r7, #12] + 8001d56: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001d58: 1c5a adds r2, r3, #1 + 8001d5a: 68fb ldr r3, [r7, #12] + 8001d5c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001d5e: 68fb ldr r3, [r7, #12] + 8001d60: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d62: b29b uxth r3, r3 + 8001d64: 3b01 subs r3, #1 + 8001d66: b29a uxth r2, r3 + 8001d68: 68fb ldr r3, [r7, #12] + 8001d6a: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8001d6c: e033 b.n 8001dd6 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001d6e: 68fb ldr r3, [r7, #12] + 8001d70: 681b ldr r3, [r3, #0] + 8001d72: 689b ldr r3, [r3, #8] + 8001d74: f003 0302 and.w r3, r3, #2 + 8001d78: 2b02 cmp r3, #2 + 8001d7a: d113 bne.n 8001da4 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001d7c: 68fb ldr r3, [r7, #12] + 8001d7e: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001d80: 68fb ldr r3, [r7, #12] + 8001d82: 681b ldr r3, [r3, #0] + 8001d84: 330c adds r3, #12 + 8001d86: 7812 ldrb r2, [r2, #0] + 8001d88: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001d8a: 68fb ldr r3, [r7, #12] + 8001d8c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001d8e: 1c5a adds r2, r3, #1 + 8001d90: 68fb ldr r3, [r7, #12] + 8001d92: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001d94: 68fb ldr r3, [r7, #12] + 8001d96: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001d98: b29b uxth r3, r3 + 8001d9a: 3b01 subs r3, #1 + 8001d9c: b29a uxth r2, r3 + 8001d9e: 68fb ldr r3, [r7, #12] + 8001da0: 86da strh r2, [r3, #54] @ 0x36 + 8001da2: e018 b.n 8001dd6 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001da4: f7fe fe42 bl 8000a2c + 8001da8: 4602 mov r2, r0 + 8001daa: 69fb ldr r3, [r7, #28] + 8001dac: 1ad3 subs r3, r2, r3 + 8001dae: 683a ldr r2, [r7, #0] + 8001db0: 429a cmp r2, r3 + 8001db2: d803 bhi.n 8001dbc + 8001db4: 683b ldr r3, [r7, #0] + 8001db6: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001dba: d102 bne.n 8001dc2 + 8001dbc: 683b ldr r3, [r7, #0] + 8001dbe: 2b00 cmp r3, #0 + 8001dc0: d109 bne.n 8001dd6 + { + hspi->State = HAL_SPI_STATE_READY; + 8001dc2: 68fb ldr r3, [r7, #12] + 8001dc4: 2201 movs r2, #1 + 8001dc6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001dca: 68fb ldr r3, [r7, #12] + 8001dcc: 2200 movs r2, #0 + 8001dce: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001dd2: 2303 movs r3, #3 + 8001dd4: e02d b.n 8001e32 + while (hspi->TxXferCount > 0U) + 8001dd6: 68fb ldr r3, [r7, #12] + 8001dd8: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001dda: b29b uxth r3, r3 + 8001ddc: 2b00 cmp r3, #0 + 8001dde: d1c6 bne.n 8001d6e + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8001de0: 69fa ldr r2, [r7, #28] + 8001de2: 6839 ldr r1, [r7, #0] + 8001de4: 68f8 ldr r0, [r7, #12] + 8001de6: f000 f8b1 bl 8001f4c + 8001dea: 4603 mov r3, r0 + 8001dec: 2b00 cmp r3, #0 + 8001dee: d002 beq.n 8001df6 + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8001df0: 68fb ldr r3, [r7, #12] + 8001df2: 2220 movs r2, #32 + 8001df4: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 8001df6: 68fb ldr r3, [r7, #12] + 8001df8: 689b ldr r3, [r3, #8] + 8001dfa: 2b00 cmp r3, #0 + 8001dfc: d10a bne.n 8001e14 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 8001dfe: 2300 movs r3, #0 + 8001e00: 617b str r3, [r7, #20] + 8001e02: 68fb ldr r3, [r7, #12] + 8001e04: 681b ldr r3, [r3, #0] + 8001e06: 68db ldr r3, [r3, #12] + 8001e08: 617b str r3, [r7, #20] + 8001e0a: 68fb ldr r3, [r7, #12] + 8001e0c: 681b ldr r3, [r3, #0] + 8001e0e: 689b ldr r3, [r3, #8] + 8001e10: 617b str r3, [r7, #20] + 8001e12: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 8001e14: 68fb ldr r3, [r7, #12] + 8001e16: 2201 movs r2, #1 + 8001e18: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8001e1c: 68fb ldr r3, [r7, #12] + 8001e1e: 2200 movs r2, #0 + 8001e20: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8001e24: 68fb ldr r3, [r7, #12] + 8001e26: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001e28: 2b00 cmp r3, #0 + 8001e2a: d001 beq.n 8001e30 + { + return HAL_ERROR; + 8001e2c: 2301 movs r3, #1 + 8001e2e: e000 b.n 8001e32 + } + else + { + return HAL_OK; + 8001e30: 2300 movs r3, #0 + } +} + 8001e32: 4618 mov r0, r3 + 8001e34: 3720 adds r7, #32 + 8001e36: 46bd mov sp, r7 + 8001e38: bd80 pop {r7, pc} + ... + +08001e3c : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8001e3c: b580 push {r7, lr} + 8001e3e: b088 sub sp, #32 + 8001e40: af00 add r7, sp, #0 + 8001e42: 60f8 str r0, [r7, #12] + 8001e44: 60b9 str r1, [r7, #8] + 8001e46: 603b str r3, [r7, #0] + 8001e48: 4613 mov r3, r2 + 8001e4a: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8001e4c: f7fe fdee bl 8000a2c + 8001e50: 4602 mov r2, r0 + 8001e52: 6abb ldr r3, [r7, #40] @ 0x28 + 8001e54: 1a9b subs r3, r3, r2 + 8001e56: 683a ldr r2, [r7, #0] + 8001e58: 4413 add r3, r2 + 8001e5a: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8001e5c: f7fe fde6 bl 8000a2c + 8001e60: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8001e62: 4b39 ldr r3, [pc, #228] @ (8001f48 ) + 8001e64: 681b ldr r3, [r3, #0] + 8001e66: 015b lsls r3, r3, #5 + 8001e68: 0d1b lsrs r3, r3, #20 + 8001e6a: 69fa ldr r2, [r7, #28] + 8001e6c: fb02 f303 mul.w r3, r2, r3 + 8001e70: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8001e72: e054 b.n 8001f1e + { + if (Timeout != HAL_MAX_DELAY) + 8001e74: 683b ldr r3, [r7, #0] + 8001e76: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001e7a: d050 beq.n 8001f1e + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8001e7c: f7fe fdd6 bl 8000a2c + 8001e80: 4602 mov r2, r0 + 8001e82: 69bb ldr r3, [r7, #24] + 8001e84: 1ad3 subs r3, r2, r3 + 8001e86: 69fa ldr r2, [r7, #28] + 8001e88: 429a cmp r2, r3 + 8001e8a: d902 bls.n 8001e92 + 8001e8c: 69fb ldr r3, [r7, #28] + 8001e8e: 2b00 cmp r3, #0 + 8001e90: d13d bne.n 8001f0e + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8001e92: 68fb ldr r3, [r7, #12] + 8001e94: 681b ldr r3, [r3, #0] + 8001e96: 685a ldr r2, [r3, #4] + 8001e98: 68fb ldr r3, [r7, #12] + 8001e9a: 681b ldr r3, [r3, #0] + 8001e9c: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8001ea0: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001ea2: 68fb ldr r3, [r7, #12] + 8001ea4: 685b ldr r3, [r3, #4] + 8001ea6: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001eaa: d111 bne.n 8001ed0 + 8001eac: 68fb ldr r3, [r7, #12] + 8001eae: 689b ldr r3, [r3, #8] + 8001eb0: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001eb4: d004 beq.n 8001ec0 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 8001eb6: 68fb ldr r3, [r7, #12] + 8001eb8: 689b ldr r3, [r3, #8] + 8001eba: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8001ebe: d107 bne.n 8001ed0 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001ec0: 68fb ldr r3, [r7, #12] + 8001ec2: 681b ldr r3, [r3, #0] + 8001ec4: 681a ldr r2, [r3, #0] + 8001ec6: 68fb ldr r3, [r7, #12] + 8001ec8: 681b ldr r3, [r3, #0] + 8001eca: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001ece: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8001ed0: 68fb ldr r3, [r7, #12] + 8001ed2: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001ed4: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8001ed8: d10f bne.n 8001efa + { + SPI_RESET_CRC(hspi); + 8001eda: 68fb ldr r3, [r7, #12] + 8001edc: 681b ldr r3, [r3, #0] + 8001ede: 681a ldr r2, [r3, #0] + 8001ee0: 68fb ldr r3, [r7, #12] + 8001ee2: 681b ldr r3, [r3, #0] + 8001ee4: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8001ee8: 601a str r2, [r3, #0] + 8001eea: 68fb ldr r3, [r7, #12] + 8001eec: 681b ldr r3, [r3, #0] + 8001eee: 681a ldr r2, [r3, #0] + 8001ef0: 68fb ldr r3, [r7, #12] + 8001ef2: 681b ldr r3, [r3, #0] + 8001ef4: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8001ef8: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 8001efa: 68fb ldr r3, [r7, #12] + 8001efc: 2201 movs r2, #1 + 8001efe: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8001f02: 68fb ldr r3, [r7, #12] + 8001f04: 2200 movs r2, #0 + 8001f06: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 8001f0a: 2303 movs r3, #3 + 8001f0c: e017 b.n 8001f3e + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 8001f0e: 697b ldr r3, [r7, #20] + 8001f10: 2b00 cmp r3, #0 + 8001f12: d101 bne.n 8001f18 + { + tmp_timeout = 0U; + 8001f14: 2300 movs r3, #0 + 8001f16: 61fb str r3, [r7, #28] + } + count--; + 8001f18: 697b ldr r3, [r7, #20] + 8001f1a: 3b01 subs r3, #1 + 8001f1c: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8001f1e: 68fb ldr r3, [r7, #12] + 8001f20: 681b ldr r3, [r3, #0] + 8001f22: 689a ldr r2, [r3, #8] + 8001f24: 68bb ldr r3, [r7, #8] + 8001f26: 4013 ands r3, r2 + 8001f28: 68ba ldr r2, [r7, #8] + 8001f2a: 429a cmp r2, r3 + 8001f2c: bf0c ite eq + 8001f2e: 2301 moveq r3, #1 + 8001f30: 2300 movne r3, #0 + 8001f32: b2db uxtb r3, r3 + 8001f34: 461a mov r2, r3 + 8001f36: 79fb ldrb r3, [r7, #7] + 8001f38: 429a cmp r2, r3 + 8001f3a: d19b bne.n 8001e74 + } + } + + return HAL_OK; + 8001f3c: 2300 movs r3, #0 +} + 8001f3e: 4618 mov r0, r3 + 8001f40: 3720 adds r7, #32 + 8001f42: 46bd mov sp, r7 + 8001f44: bd80 pop {r7, pc} + 8001f46: bf00 nop + 8001f48: 20000000 .word 0x20000000 + +08001f4c : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8001f4c: b580 push {r7, lr} + 8001f4e: b088 sub sp, #32 + 8001f50: af02 add r7, sp, #8 + 8001f52: 60f8 str r0, [r7, #12] + 8001f54: 60b9 str r1, [r7, #8] + 8001f56: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8001f58: 687b ldr r3, [r7, #4] + 8001f5a: 9300 str r3, [sp, #0] + 8001f5c: 68bb ldr r3, [r7, #8] + 8001f5e: 2201 movs r2, #1 + 8001f60: 2102 movs r1, #2 + 8001f62: 68f8 ldr r0, [r7, #12] + 8001f64: f7ff ff6a bl 8001e3c + 8001f68: 4603 mov r3, r0 + 8001f6a: 2b00 cmp r3, #0 + 8001f6c: d007 beq.n 8001f7e + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8001f6e: 68fb ldr r3, [r7, #12] + 8001f70: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001f72: f043 0220 orr.w r2, r3, #32 + 8001f76: 68fb ldr r3, [r7, #12] + 8001f78: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8001f7a: 2303 movs r3, #3 + 8001f7c: e032 b.n 8001fe4 + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8001f7e: 4b1b ldr r3, [pc, #108] @ (8001fec ) + 8001f80: 681b ldr r3, [r3, #0] + 8001f82: 4a1b ldr r2, [pc, #108] @ (8001ff0 ) + 8001f84: fba2 2303 umull r2, r3, r2, r3 + 8001f88: 0d5b lsrs r3, r3, #21 + 8001f8a: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8001f8e: fb02 f303 mul.w r3, r2, r3 + 8001f92: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001f94: 68fb ldr r3, [r7, #12] + 8001f96: 685b ldr r3, [r3, #4] + 8001f98: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001f9c: d112 bne.n 8001fc4 + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8001f9e: 687b ldr r3, [r7, #4] + 8001fa0: 9300 str r3, [sp, #0] + 8001fa2: 68bb ldr r3, [r7, #8] + 8001fa4: 2200 movs r2, #0 + 8001fa6: 2180 movs r1, #128 @ 0x80 + 8001fa8: 68f8 ldr r0, [r7, #12] + 8001faa: f7ff ff47 bl 8001e3c + 8001fae: 4603 mov r3, r0 + 8001fb0: 2b00 cmp r3, #0 + 8001fb2: d016 beq.n 8001fe2 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8001fb4: 68fb ldr r3, [r7, #12] + 8001fb6: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001fb8: f043 0220 orr.w r2, r3, #32 + 8001fbc: 68fb ldr r3, [r7, #12] + 8001fbe: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8001fc0: 2303 movs r3, #3 + 8001fc2: e00f b.n 8001fe4 + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 8001fc4: 697b ldr r3, [r7, #20] + 8001fc6: 2b00 cmp r3, #0 + 8001fc8: d00a beq.n 8001fe0 + { + break; + } + count--; + 8001fca: 697b ldr r3, [r7, #20] + 8001fcc: 3b01 subs r3, #1 + 8001fce: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8001fd0: 68fb ldr r3, [r7, #12] + 8001fd2: 681b ldr r3, [r3, #0] + 8001fd4: 689b ldr r3, [r3, #8] + 8001fd6: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001fda: 2b80 cmp r3, #128 @ 0x80 + 8001fdc: d0f2 beq.n 8001fc4 + 8001fde: e000 b.n 8001fe2 + break; + 8001fe0: bf00 nop + } + + return HAL_OK; + 8001fe2: 2300 movs r3, #0 +} + 8001fe4: 4618 mov r0, r3 + 8001fe6: 3718 adds r7, #24 + 8001fe8: 46bd mov sp, r7 + 8001fea: bd80 pop {r7, pc} + 8001fec: 20000000 .word 0x20000000 + 8001ff0: 165e9f81 .word 0x165e9f81 + +08001ff4 : + 8001ff4: 4603 mov r3, r0 + 8001ff6: 4402 add r2, r0 + 8001ff8: 4293 cmp r3, r2 + 8001ffa: d100 bne.n 8001ffe + 8001ffc: 4770 bx lr + 8001ffe: f803 1b01 strb.w r1, [r3], #1 + 8002002: e7f9 b.n 8001ff8 + +08002004 <__libc_init_array>: + 8002004: b570 push {r4, r5, r6, lr} + 8002006: 2600 movs r6, #0 + 8002008: 4d0c ldr r5, [pc, #48] @ (800203c <__libc_init_array+0x38>) + 800200a: 4c0d ldr r4, [pc, #52] @ (8002040 <__libc_init_array+0x3c>) + 800200c: 1b64 subs r4, r4, r5 + 800200e: 10a4 asrs r4, r4, #2 + 8002010: 42a6 cmp r6, r4 + 8002012: d109 bne.n 8002028 <__libc_init_array+0x24> + 8002014: f000 f81a bl 800204c <_init> + 8002018: 2600 movs r6, #0 + 800201a: 4d0a ldr r5, [pc, #40] @ (8002044 <__libc_init_array+0x40>) + 800201c: 4c0a ldr r4, [pc, #40] @ (8002048 <__libc_init_array+0x44>) + 800201e: 1b64 subs r4, r4, r5 + 8002020: 10a4 asrs r4, r4, #2 + 8002022: 42a6 cmp r6, r4 + 8002024: d105 bne.n 8002032 <__libc_init_array+0x2e> + 8002026: bd70 pop {r4, r5, r6, pc} + 8002028: f855 3b04 ldr.w r3, [r5], #4 + 800202c: 4798 blx r3 + 800202e: 3601 adds r6, #1 + 8002030: e7ee b.n 8002010 <__libc_init_array+0xc> + 8002032: f855 3b04 ldr.w r3, [r5], #4 + 8002036: 4798 blx r3 + 8002038: 3601 adds r6, #1 + 800203a: e7f2 b.n 8002022 <__libc_init_array+0x1e> + 800203c: 08002088 .word 0x08002088 + 8002040: 08002088 .word 0x08002088 + 8002044: 08002088 .word 0x08002088 + 8002048: 0800208c .word 0x0800208c + +0800204c <_init>: + 800204c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800204e: bf00 nop + 8002050: bcf8 pop {r3, r4, r5, r6, r7} + 8002052: bc08 pop {r3} + 8002054: 469e mov lr, r3 + 8002056: 4770 bx lr + +08002058 <_fini>: + 8002058: b5f8 push {r3, r4, r5, r6, r7, lr} + 800205a: bf00 nop + 800205c: bcf8 pop {r3, r4, r5, r6, r7} + 800205e: bc08 pop {r3} + 8002060: 469e mov lr, r3 + 8002062: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.map b/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.map new file mode 100644 index 0000000..d61fceb --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP2_ISEN_DISPLAY.map @@ -0,0 +1,2895 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x109 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .rodata.conv_7seg + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayChar + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x109 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_EnableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbc1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x7f97d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x989 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x7f72e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x19c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x987 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x7f7f7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x7fc53 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x945 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x7f880 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x963 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x7f88c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x894 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x7f66b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x8ee ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x7f79b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x1f28 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.displayScrollingText + 0x080004b0 0x86 ./Core/Src/main.o + 0x080004b0 displayScrollingText + .text.main 0x08000536 0x22 ./Core/Src/main.o + 0x08000536 main + .text.SystemClock_Config + 0x08000558 0x8c ./Core/Src/main.o + 0x08000558 SystemClock_Config + .text.MX_SPI1_Init + 0x080005e4 0x6c ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000650 0x7c ./Core/Src/main.o + .text.Error_Handler + 0x080006cc 0xc ./Core/Src/main.o + 0x080006cc Error_Handler + .text.HAL_MspInit + 0x080006d8 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x080006d8 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000734 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000734 HAL_SPI_MspInit + .text.NMI_Handler + 0x080007bc 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007bc NMI_Handler + .text.HardFault_Handler + 0x080007c4 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007c4 HardFault_Handler + .text.MemManage_Handler + 0x080007cc 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007cc MemManage_Handler + .text.BusFault_Handler + 0x080007d4 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007d4 BusFault_Handler + .text.UsageFault_Handler + 0x080007dc 0x8 ./Core/Src/stm32l1xx_it.o + 0x080007dc UsageFault_Handler + .text.SVC_Handler + 0x080007e4 0xc ./Core/Src/stm32l1xx_it.o + 0x080007e4 SVC_Handler + .text.DebugMon_Handler + 0x080007f0 0xc ./Core/Src/stm32l1xx_it.o + 0x080007f0 DebugMon_Handler + .text.PendSV_Handler + 0x080007fc 0xc ./Core/Src/stm32l1xx_it.o + 0x080007fc PendSV_Handler + .text.SysTick_Handler + 0x08000808 0xc ./Core/Src/stm32l1xx_it.o + 0x08000808 SysTick_Handler + .text.SystemInit + 0x08000814 0xc ./Core/Src/system_stm32l1xx.o + 0x08000814 SystemInit + .text.Reset_Handler + 0x08000820 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08000820 Reset_Handler + .text.Default_Handler + 0x08000868 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000868 DMA2_Channel3_IRQHandler + 0x08000868 EXTI2_IRQHandler + 0x08000868 COMP_ACQ_IRQHandler + 0x08000868 TIM10_IRQHandler + 0x08000868 USB_HP_IRQHandler + 0x08000868 TIM6_IRQHandler + 0x08000868 PVD_IRQHandler + 0x08000868 EXTI3_IRQHandler + 0x08000868 EXTI0_IRQHandler + 0x08000868 I2C2_EV_IRQHandler + 0x08000868 SPI1_IRQHandler + 0x08000868 USB_FS_WKUP_IRQHandler + 0x08000868 DMA2_Channel2_IRQHandler + 0x08000868 DMA1_Channel4_IRQHandler + 0x08000868 ADC1_IRQHandler + 0x08000868 USART3_IRQHandler + 0x08000868 DMA1_Channel7_IRQHandler + 0x08000868 LCD_IRQHandler + 0x08000868 UART5_IRQHandler + 0x08000868 TIM4_IRQHandler + 0x08000868 DMA2_Channel1_IRQHandler + 0x08000868 I2C1_EV_IRQHandler + 0x08000868 DMA1_Channel6_IRQHandler + 0x08000868 UART4_IRQHandler + 0x08000868 DMA2_Channel4_IRQHandler + 0x08000868 TIM3_IRQHandler + 0x08000868 RCC_IRQHandler + 0x08000868 DMA1_Channel1_IRQHandler + 0x08000868 Default_Handler + 0x08000868 EXTI15_10_IRQHandler + 0x08000868 TIM7_IRQHandler + 0x08000868 TIM5_IRQHandler + 0x08000868 EXTI9_5_IRQHandler + 0x08000868 TIM9_IRQHandler + 0x08000868 TAMPER_STAMP_IRQHandler + 0x08000868 RTC_WKUP_IRQHandler + 0x08000868 SPI2_IRQHandler + 0x08000868 DMA2_Channel5_IRQHandler + 0x08000868 DMA1_Channel5_IRQHandler + 0x08000868 USB_LP_IRQHandler + 0x08000868 EXTI4_IRQHandler + 0x08000868 DMA1_Channel3_IRQHandler + 0x08000868 COMP_IRQHandler + 0x08000868 WWDG_IRQHandler + 0x08000868 TIM2_IRQHandler + 0x08000868 DAC_IRQHandler + 0x08000868 EXTI1_IRQHandler + 0x08000868 TIM11_IRQHandler + 0x08000868 USART2_IRQHandler + 0x08000868 I2C2_ER_IRQHandler + 0x08000868 DMA1_Channel2_IRQHandler + 0x08000868 FLASH_IRQHandler + 0x08000868 USART1_IRQHandler + 0x08000868 SPI3_IRQHandler + 0x08000868 I2C1_ER_IRQHandler + 0x08000868 RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x0800086a 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x0800086a MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000894 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000894 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x080008a4 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x080008a4 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x080008b4 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x080008b4 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x080008d8 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x080008d8 MAX7219_Clear + .text.MAX7219_Write + 0x08000904 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000904 MAX7219_Write + .text.MAX7219_SendByte + 0x08000940 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000964 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000964 HAL_Init + .text.HAL_InitTick + 0x08000994 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000994 HAL_InitTick + .text.HAL_IncTick + 0x08000a08 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a08 HAL_IncTick + .text.HAL_GetTick + 0x08000a2c 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a2c HAL_GetTick + .text.HAL_Delay + 0x08000a40 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000a40 HAL_Delay + .text.__NVIC_SetPriorityGrouping + 0x08000a84 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000acc 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000ae8 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000b3c 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000ba0 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000be4 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000be4 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000bfa 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000bfa HAL_NVIC_SetPriority + .text.HAL_SYSTICK_Config + 0x08000c32 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000c32 HAL_SYSTICK_Config + *fill* 0x08000c4a 0x2 + .text.HAL_GPIO_Init + 0x08000c4c 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000c4c HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x08000f6c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000f6c HAL_GPIO_WritePin + .text.HAL_RCC_OscConfig + 0x08000f9c 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08000f9c HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x080015fc 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080015fc HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001864 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001864 HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x080019e0 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001aa0 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001aa0 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001bb2 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001bb2 HAL_SPI_Transmit + *fill* 0x08001e3a 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08001e3c 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08001f4c 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.memset 0x08001ff4 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08001ff4 memset + .text.__libc_init_array + 0x08002004 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x08002004 __libc_init_array + *(.glue_7) + .glue_7 0x0800204c 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0800204c 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x0800204c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x0800204c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x0800204c _init + .init 0x08002050 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002058 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002058 _fini + .fini 0x0800205c 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08002064 . = ALIGN (0x4) + 0x08002064 _etext = . + +.vfp11_veneer 0x08002064 0x0 + .vfp11_veneer 0x08002064 0x0 linker stubs + +.v4_bx 0x08002064 0x0 + .v4_bx 0x08002064 0x0 linker stubs + +.iplt 0x08002064 0x0 + .iplt 0x08002064 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08002064 0x1c + 0x08002064 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x08002064 0x9 ./Core/Src/system_stm32l1xx.o + 0x08002064 PLLMulTable + *fill* 0x0800206d 0x3 + .rodata.AHBPrescTable + 0x08002070 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002070 AHBPrescTable + 0x08002080 . = ALIGN (0x4) + +.ARM.extab 0x08002080 0x0 + 0x08002080 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08002080 . = ALIGN (0x4) + +.ARM 0x08002080 0x8 + 0x08002080 . = ALIGN (0x4) + 0x08002080 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08002080 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x08002088 __exidx_end = . + 0x08002088 . = ALIGN (0x4) + +.preinit_array 0x08002088 0x0 + 0x08002088 . = ALIGN (0x4) + 0x08002088 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08002088 PROVIDE (__preinit_array_end = .) + 0x08002088 . = ALIGN (0x4) + +.init_array 0x08002088 0x4 + 0x08002088 . = ALIGN (0x4) + 0x08002088 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08002088 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x0800208c PROVIDE (__init_array_end = .) + 0x0800208c . = ALIGN (0x4) + +.fini_array 0x0800208c 0x4 + 0x0800208c . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x0800208c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08002090 . = ALIGN (0x4) + 0x08002090 _sidata = LOADADDR (.data) + +.rel.dyn 0x08002090 0x0 + .rel.iplt 0x08002090 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x08002090 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x0800209c + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0x78 load address 0x0800209c + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.uwTick 0x20000080 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000080 uwTick + *(COMMON) + 0x20000084 . = ALIGN (0x4) + 0x20000084 _ebss = . + 0x20000084 __bss_end__ = _ebss + +._user_heap_stack + 0x20000084 0x604 load address 0x0800209c + 0x20000088 . = ALIGN (0x8) + *fill* 0x20000084 0x4 + [!provide] PROVIDE (end = .) + 0x20000088 PROVIDE (_end = .) + 0x20000288 . = (. + _Min_Heap_Size) + *fill* 0x20000088 0x200 + 0x20000688 . = (. + _Min_Stack_Size) + *fill* 0x20000288 0x400 + 0x20000688 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x0000025a 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x00000287 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002a4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x000002d1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x000002ee 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP2_ISEN_DISPLAY.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x57a5 + .debug_info 0x00000000 0xbb6 ./Core/Src/main.o + .debug_info 0x00000bb6 0x828 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x000013de 0x113 ./Core/Src/stm32l1xx_it.o + .debug_info 0x000014f1 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x0000176d 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x0000179d 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x00001fab 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x0000269a 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x0000337f 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00003931 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x000042cc 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_abbrev 0x00000000 0x148d + .debug_abbrev 0x00000000 0x2ad ./Core/Src/main.o + .debug_abbrev 0x000002ad 0x1ad ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x0000045a 0x73 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x000004cd 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x000005e9 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x0000060d 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x000007f6 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000a6b 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000d87 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x00000f5b 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x00001213 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_aranges 0x00000000 0x660 + .debug_aranges + 0x00000000 0x48 ./Core/Src/main.o + .debug_aranges + 0x00000048 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x00000078 0x60 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x000000d8 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000100 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000128 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001a0 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x00000280 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003a8 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000400 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x00000490 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_rnglists + 0x00000000 0x4b5 + .debug_rnglists + 0x00000000 0x33 ./Core/Src/main.o + .debug_rnglists + 0x00000033 0x20 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000053 0x43 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x00000096 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000b0 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000c9 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000011e 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001c1 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x0000029a 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x000002d9 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000346 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_macro 0x00000000 0x14998 + .debug_macro 0x00000000 0x1ae ./Core/Src/main.o + .debug_macro 0x000001ae 0xacc ./Core/Src/main.o + .debug_macro 0x00000c7a 0x109 ./Core/Src/main.o + .debug_macro 0x00000d83 0x2e ./Core/Src/main.o + .debug_macro 0x00000db1 0x22 ./Core/Src/main.o + .debug_macro 0x00000dd3 0x22 ./Core/Src/main.o + .debug_macro 0x00000df5 0x8e ./Core/Src/main.o + .debug_macro 0x00000e83 0x51 ./Core/Src/main.o + .debug_macro 0x00000ed4 0x103 ./Core/Src/main.o + .debug_macro 0x00000fd7 0x6a ./Core/Src/main.o + .debug_macro 0x00001041 0x1df ./Core/Src/main.o + .debug_macro 0x00001220 0x1c ./Core/Src/main.o + .debug_macro 0x0000123c 0x22 ./Core/Src/main.o + .debug_macro 0x0000125e 0xbd ./Core/Src/main.o + .debug_macro 0x0000131b 0xe49 ./Core/Src/main.o + .debug_macro 0x00002164 0x11f ./Core/Src/main.o + .debug_macro 0x00002283 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da24 0x6d ./Core/Src/main.o + .debug_macro 0x0000da91 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f72 0x190 ./Core/Src/main.o + .debug_macro 0x00011102 0x5b ./Core/Src/main.o + .debug_macro 0x0001115d 0xe37 ./Core/Src/main.o + .debug_macro 0x00011f94 0x35b ./Core/Src/main.o + .debug_macro 0x000122ef 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124a7 0xc5 ./Core/Src/main.o + .debug_macro 0x0001256c 0x21e ./Core/Src/main.o + .debug_macro 0x0001278a 0x236 ./Core/Src/main.o + .debug_macro 0x000129c0 0x115 ./Core/Src/main.o + .debug_macro 0x00012ad5 0x567 ./Core/Src/main.o + .debug_macro 0x0001303c 0x1e9 ./Core/Src/main.o + .debug_macro 0x00013225 0x22 ./Core/Src/main.o + .debug_macro 0x00013247 0x225 ./Core/Src/main.o + .debug_macro 0x0001346c 0x170 ./Core/Src/main.o + .debug_macro 0x000135dc 0x492 ./Core/Src/main.o + .debug_macro 0x00013a6e 0x10 ./Core/Src/main.o + .debug_macro 0x00013a7e 0x1a5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00013c23 0x1af ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00013dd2 0x19b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00013f6d 0x1d8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00014145 0x1bf ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014304 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x0001449f 0x1a2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014641 0x1ad ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000147ee 0x1aa ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_line 0x00000000 0x6fed + .debug_line 0x00000000 0x7ef ./Core/Src/main.o + .debug_line 0x000007ef 0x6dd ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00000ecc 0x73e ./Core/Src/stm32l1xx_it.o + .debug_line 0x0000160a 0x730 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001d3a 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001db3 0x7de ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002591 0x95b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00002eec 0xc2a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003b16 0x99f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x000044b5 0xf1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x000053d3 0x1c1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_str 0x00000000 0x8118d + .debug_str 0x00000000 0x8118d ./Core/Src/main.o + 0x7fc96 (size before relaxing) + .debug_str 0x0008118d 0x7fa10 ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x0008118d 0x7f5a7 ./Core/Src/stm32l1xx_it.o + .debug_str 0x0008118d 0x7f5f8 ./Core/Src/system_stm32l1xx.o + .debug_str 0x0008118d 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x0008118d 0x7fb54 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x0008118d 0x7fd20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x0008118d 0x7fe2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x0008118d 0x7f78b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x0008118d 0x7fab4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x0008118d 0x7ff1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + +.debug_frame 0x00000000 0x18a4 + .debug_frame 0x00000000 0xc8 ./Core/Src/main.o + .debug_frame 0x000000c8 0x80 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x00000148 0x104 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x0000024c 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x000002a4 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x0000043c 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000778 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000c60 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000dac 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x00000fd0 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x000017f8 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00001818 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00001844 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00001870 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.list b/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.list new file mode 100644 index 0000000..2a01f3c --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.list @@ -0,0 +1,7251 @@ + +TP3_M_A_TIMER_MODULO.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 000028c0 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000002c 080029fc 080029fc 000039fc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08002a28 08002a28 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08002a28 08002a28 00003a28 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 08002a30 08002a30 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08002a30 08002a30 00003a30 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08002a34 08002a34 00003a34 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 08002a38 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000000bc 2000000c 08002a44 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000600 200000c8 08002a44 000040c8 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 00009760 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000019c7 00000000 00000000 0000d795 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000a90 00000000 00000000 0000f160 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000801 00000000 00000000 0000fbf0 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 000103f1 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000a9e1 00000000 00000000 000259ea 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 00088678 00000000 00000000 000303cb 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b8a43 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002bb4 00000000 00000000 000b8a88 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000bb63c 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 080029e4 .word 0x080029e4 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 080029e4 .word 0x080029e4 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : +/* USER CODE BEGIN 0 */ + +volatile uint8_t marche = 0; +volatile uint8_t tempo_500ms_ok = 0; + +void affiche(uint8_t nombre) { + 80004b0: b580 push {r7, lr} + 80004b2: b084 sub sp, #16 + 80004b4: af00 add r7, sp, #0 + 80004b6: 4603 mov r3, r0 + 80004b8: 71fb strb r3, [r7, #7] + uint8_t compt_uni; + uint8_t compt_diz; + + compt_uni = nombre % 10; + 80004ba: 79fa ldrb r2, [r7, #7] + 80004bc: 4b13 ldr r3, [pc, #76] @ (800050c ) + 80004be: fba3 1302 umull r1, r3, r3, r2 + 80004c2: 08d9 lsrs r1, r3, #3 + 80004c4: 460b mov r3, r1 + 80004c6: 009b lsls r3, r3, #2 + 80004c8: 440b add r3, r1 + 80004ca: 005b lsls r3, r3, #1 + 80004cc: 1ad3 subs r3, r2, r3 + 80004ce: 73fb strb r3, [r7, #15] + compt_diz = nombre / 10; + 80004d0: 79fb ldrb r3, [r7, #7] + 80004d2: 4a0e ldr r2, [pc, #56] @ (800050c ) + 80004d4: fba2 2303 umull r2, r3, r2, r3 + 80004d8: 08db lsrs r3, r3, #3 + 80004da: 73bb strb r3, [r7, #14] + + MAX7219_DisplayChar(1, compt_diz); + 80004dc: 7bbb ldrb r3, [r7, #14] + 80004de: 4619 mov r1, r3 + 80004e0: 2001 movs r0, #1 + 80004e2: f000 faf1 bl 8000ac8 + MAX7219_DisplayChar(2, compt_uni); + 80004e6: 7bfb ldrb r3, [r7, #15] + 80004e8: 4619 mov r1, r3 + 80004ea: 2002 movs r0, #2 + 80004ec: f000 faec bl 8000ac8 + MAX7219_DisplayChar(3, compt_diz); + 80004f0: 7bbb ldrb r3, [r7, #14] + 80004f2: 4619 mov r1, r3 + 80004f4: 2003 movs r0, #3 + 80004f6: f000 fae7 bl 8000ac8 + MAX7219_DisplayChar(4, compt_uni); + 80004fa: 7bfb ldrb r3, [r7, #15] + 80004fc: 4619 mov r1, r3 + 80004fe: 2004 movs r0, #4 + 8000500: f000 fae2 bl 8000ac8 +} + 8000504: bf00 nop + 8000506: 3710 adds r7, #16 + 8000508: 46bd mov sp, r7 + 800050a: bd80 pop {r7, pc} + 800050c: cccccccd .word 0xcccccccd + +08000510
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 8000510: b580 push {r7, lr} + 8000512: b082 sub sp, #8 + 8000514: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 8000516: f000 fb1d bl 8000b54 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 800051a: f000 f82f bl 800057c + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 800051e: f000 f8f7 bl 8000710 + MX_SPI1_Init(); + 8000522: f000 f871 bl 8000608 + MX_TIM2_Init(); + 8000526: f000 f8a5 bl 8000674 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 800052a: f000 fa80 bl 8000a2e + HAL_TIM_Base_Start_IT(&htim2); + 800052e: 4810 ldr r0, [pc, #64] @ (8000570 ) + 8000530: f001 feb8 bl 80022a4 + uint8_t counter = 0; + 8000534: 2300 movs r3, #0 + 8000536: 71fb strb r3, [r7, #7] + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 8000538: f000 fab0 bl 8000a9c + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + if (marche && tempo_500ms_ok) { + 800053c: 4b0d ldr r3, [pc, #52] @ (8000574 ) + 800053e: 781b ldrb r3, [r3, #0] + 8000540: b2db uxtb r3, r3 + 8000542: 2b00 cmp r3, #0 + 8000544: d0fa beq.n 800053c + 8000546: 4b0c ldr r3, [pc, #48] @ (8000578 ) + 8000548: 781b ldrb r3, [r3, #0] + 800054a: b2db uxtb r3, r3 + 800054c: 2b00 cmp r3, #0 + 800054e: d0f5 beq.n 800053c + counter ++; + 8000550: 79fb ldrb r3, [r7, #7] + 8000552: 3301 adds r3, #1 + 8000554: 71fb strb r3, [r7, #7] + if (counter >= 100) { + 8000556: 79fb ldrb r3, [r7, #7] + 8000558: 2b63 cmp r3, #99 @ 0x63 + 800055a: d901 bls.n 8000560 + counter = 0; + 800055c: 2300 movs r3, #0 + 800055e: 71fb strb r3, [r7, #7] + } + affiche(counter); + 8000560: 79fb ldrb r3, [r7, #7] + 8000562: 4618 mov r0, r3 + 8000564: f7ff ffa4 bl 80004b0 + tempo_500ms_ok = 0; + 8000568: 4b03 ldr r3, [pc, #12] @ (8000578 ) + 800056a: 2200 movs r2, #0 + 800056c: 701a strb r2, [r3, #0] + if (marche && tempo_500ms_ok) { + 800056e: e7e5 b.n 800053c + 8000570: 20000080 .word 0x20000080 + 8000574: 200000c0 .word 0x200000c0 + 8000578: 200000c1 .word 0x200000c1 + +0800057c : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 800057c: b580 push {r7, lr} + 800057e: b092 sub sp, #72 @ 0x48 + 8000580: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000582: f107 0314 add.w r3, r7, #20 + 8000586: 2234 movs r2, #52 @ 0x34 + 8000588: 2100 movs r1, #0 + 800058a: 4618 mov r0, r3 + 800058c: f002 f9fe bl 800298c + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000590: 463b mov r3, r7 + 8000592: 2200 movs r2, #0 + 8000594: 601a str r2, [r3, #0] + 8000596: 605a str r2, [r3, #4] + 8000598: 609a str r2, [r3, #8] + 800059a: 60da str r2, [r3, #12] + 800059c: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 800059e: 4b19 ldr r3, [pc, #100] @ (8000604 ) + 80005a0: 681b ldr r3, [r3, #0] + 80005a2: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 80005a6: 4a17 ldr r2, [pc, #92] @ (8000604 ) + 80005a8: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 80005ac: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 80005ae: 2302 movs r3, #2 + 80005b0: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 80005b2: 2301 movs r3, #1 + 80005b4: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 80005b6: 2310 movs r3, #16 + 80005b8: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 80005ba: 2300 movs r3, #0 + 80005bc: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 80005be: f107 0314 add.w r3, r7, #20 + 80005c2: 4618 mov r0, r3 + 80005c4: f000 fe02 bl 80011cc + 80005c8: 4603 mov r3, r0 + 80005ca: 2b00 cmp r3, #0 + 80005cc: d001 beq.n 80005d2 + { + Error_Handler(); + 80005ce: f000 f925 bl 800081c + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 80005d2: 230f movs r3, #15 + 80005d4: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 80005d6: 2301 movs r3, #1 + 80005d8: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 80005da: 2300 movs r3, #0 + 80005dc: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80005de: 2300 movs r3, #0 + 80005e0: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80005e2: 2300 movs r3, #0 + 80005e4: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 80005e6: 463b mov r3, r7 + 80005e8: 2100 movs r1, #0 + 80005ea: 4618 mov r0, r3 + 80005ec: f001 f91e bl 800182c + 80005f0: 4603 mov r3, r0 + 80005f2: 2b00 cmp r3, #0 + 80005f4: d001 beq.n 80005fa + { + Error_Handler(); + 80005f6: f000 f911 bl 800081c + } +} + 80005fa: bf00 nop + 80005fc: 3748 adds r7, #72 @ 0x48 + 80005fe: 46bd mov sp, r7 + 8000600: bd80 pop {r7, pc} + 8000602: bf00 nop + 8000604: 40007000 .word 0x40007000 + +08000608 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 8000608: b580 push {r7, lr} + 800060a: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 800060c: 4b17 ldr r3, [pc, #92] @ (800066c ) + 800060e: 4a18 ldr r2, [pc, #96] @ (8000670 ) + 8000610: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 8000612: 4b16 ldr r3, [pc, #88] @ (800066c ) + 8000614: f44f 7282 mov.w r2, #260 @ 0x104 + 8000618: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 800061a: 4b14 ldr r3, [pc, #80] @ (800066c ) + 800061c: 2200 movs r2, #0 + 800061e: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 8000620: 4b12 ldr r3, [pc, #72] @ (800066c ) + 8000622: 2200 movs r2, #0 + 8000624: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 8000626: 4b11 ldr r3, [pc, #68] @ (800066c ) + 8000628: 2200 movs r2, #0 + 800062a: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 800062c: 4b0f ldr r3, [pc, #60] @ (800066c ) + 800062e: 2200 movs r2, #0 + 8000630: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 8000632: 4b0e ldr r3, [pc, #56] @ (800066c ) + 8000634: f44f 7200 mov.w r2, #512 @ 0x200 + 8000638: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 800063a: 4b0c ldr r3, [pc, #48] @ (800066c ) + 800063c: 2200 movs r2, #0 + 800063e: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 8000640: 4b0a ldr r3, [pc, #40] @ (800066c ) + 8000642: 2200 movs r2, #0 + 8000644: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 8000646: 4b09 ldr r3, [pc, #36] @ (800066c ) + 8000648: 2200 movs r2, #0 + 800064a: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 800064c: 4b07 ldr r3, [pc, #28] @ (800066c ) + 800064e: 2200 movs r2, #0 + 8000650: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 8000652: 4b06 ldr r3, [pc, #24] @ (800066c ) + 8000654: 220a movs r2, #10 + 8000656: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 8000658: 4804 ldr r0, [pc, #16] @ (800066c ) + 800065a: f001 fb39 bl 8001cd0 + 800065e: 4603 mov r3, r0 + 8000660: 2b00 cmp r3, #0 + 8000662: d001 beq.n 8000668 + { + Error_Handler(); + 8000664: f000 f8da bl 800081c + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 8000668: bf00 nop + 800066a: bd80 pop {r7, pc} + 800066c: 20000028 .word 0x20000028 + 8000670: 40013000 .word 0x40013000 + +08000674 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 8000674: b580 push {r7, lr} + 8000676: b086 sub sp, #24 + 8000678: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800067a: f107 0308 add.w r3, r7, #8 + 800067e: 2200 movs r2, #0 + 8000680: 601a str r2, [r3, #0] + 8000682: 605a str r2, [r3, #4] + 8000684: 609a str r2, [r3, #8] + 8000686: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000688: 463b mov r3, r7 + 800068a: 2200 movs r2, #0 + 800068c: 601a str r2, [r3, #0] + 800068e: 605a str r2, [r3, #4] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 8000690: 4b1e ldr r3, [pc, #120] @ (800070c ) + 8000692: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 8000696: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 1000-1; + 8000698: 4b1c ldr r3, [pc, #112] @ (800070c ) + 800069a: f240 32e7 movw r2, #999 @ 0x3e7 + 800069e: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 80006a0: 4b1a ldr r3, [pc, #104] @ (800070c ) + 80006a2: 2200 movs r2, #0 + 80006a4: 609a str r2, [r3, #8] + htim2.Init.Period = 16000-1; + 80006a6: 4b19 ldr r3, [pc, #100] @ (800070c ) + 80006a8: f643 627f movw r2, #15999 @ 0x3e7f + 80006ac: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80006ae: 4b17 ldr r3, [pc, #92] @ (800070c ) + 80006b0: 2200 movs r2, #0 + 80006b2: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 80006b4: 4b15 ldr r3, [pc, #84] @ (800070c ) + 80006b6: 2280 movs r2, #128 @ 0x80 + 80006b8: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 80006ba: 4814 ldr r0, [pc, #80] @ (800070c ) + 80006bc: f001 fdb2 bl 8002224 + 80006c0: 4603 mov r3, r0 + 80006c2: 2b00 cmp r3, #0 + 80006c4: d001 beq.n 80006ca + { + Error_Handler(); + 80006c6: f000 f8a9 bl 800081c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80006ca: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80006ce: 60bb str r3, [r7, #8] + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 80006d0: f107 0308 add.w r3, r7, #8 + 80006d4: 4619 mov r1, r3 + 80006d6: 480d ldr r0, [pc, #52] @ (800070c ) + 80006d8: f001 ff02 bl 80024e0 + 80006dc: 4603 mov r3, r0 + 80006de: 2b00 cmp r3, #0 + 80006e0: d001 beq.n 80006e6 + { + Error_Handler(); + 80006e2: f000 f89b bl 800081c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 80006e6: 2300 movs r3, #0 + 80006e8: 603b str r3, [r7, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 80006ea: 2300 movs r3, #0 + 80006ec: 607b str r3, [r7, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 80006ee: 463b mov r3, r7 + 80006f0: 4619 mov r1, r3 + 80006f2: 4806 ldr r0, [pc, #24] @ (800070c ) + 80006f4: f002 f8ec bl 80028d0 + 80006f8: 4603 mov r3, r0 + 80006fa: 2b00 cmp r3, #0 + 80006fc: d001 beq.n 8000702 + { + Error_Handler(); + 80006fe: f000 f88d bl 800081c + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + 8000702: bf00 nop + 8000704: 3718 adds r7, #24 + 8000706: 46bd mov sp, r7 + 8000708: bd80 pop {r7, pc} + 800070a: bf00 nop + 800070c: 20000080 .word 0x20000080 + +08000710 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000710: b580 push {r7, lr} + 8000712: b088 sub sp, #32 + 8000714: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000716: f107 030c add.w r3, r7, #12 + 800071a: 2200 movs r2, #0 + 800071c: 601a str r2, [r3, #0] + 800071e: 605a str r2, [r3, #4] + 8000720: 609a str r2, [r3, #8] + 8000722: 60da str r2, [r3, #12] + 8000724: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000726: 4b22 ldr r3, [pc, #136] @ (80007b0 ) + 8000728: 69db ldr r3, [r3, #28] + 800072a: 4a21 ldr r2, [pc, #132] @ (80007b0 ) + 800072c: f043 0304 orr.w r3, r3, #4 + 8000730: 61d3 str r3, [r2, #28] + 8000732: 4b1f ldr r3, [pc, #124] @ (80007b0 ) + 8000734: 69db ldr r3, [r3, #28] + 8000736: f003 0304 and.w r3, r3, #4 + 800073a: 60bb str r3, [r7, #8] + 800073c: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800073e: 4b1c ldr r3, [pc, #112] @ (80007b0 ) + 8000740: 69db ldr r3, [r3, #28] + 8000742: 4a1b ldr r2, [pc, #108] @ (80007b0 ) + 8000744: f043 0301 orr.w r3, r3, #1 + 8000748: 61d3 str r3, [r2, #28] + 800074a: 4b19 ldr r3, [pc, #100] @ (80007b0 ) + 800074c: 69db ldr r3, [r3, #28] + 800074e: f003 0301 and.w r3, r3, #1 + 8000752: 607b str r3, [r7, #4] + 8000754: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 8000756: 2200 movs r2, #0 + 8000758: 2101 movs r1, #1 + 800075a: 4816 ldr r0, [pc, #88] @ (80007b4 ) + 800075c: f000 fd06 bl 800116c + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 8000760: 2301 movs r3, #1 + 8000762: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000764: 2301 movs r3, #1 + 8000766: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000768: 2300 movs r3, #0 + 800076a: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 800076c: 2300 movs r3, #0 + 800076e: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000770: f107 030c add.w r3, r7, #12 + 8000774: 4619 mov r1, r3 + 8000776: 480f ldr r0, [pc, #60] @ (80007b4 ) + 8000778: f000 fb68 bl 8000e4c + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 800077c: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 8000780: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 8000782: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 8000786: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000788: 2300 movs r3, #0 + 800078a: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 800078c: f107 030c add.w r3, r7, #12 + 8000790: 4619 mov r1, r3 + 8000792: 4809 ldr r0, [pc, #36] @ (80007b8 ) + 8000794: f000 fb5a bl 8000e4c + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 8000798: 2200 movs r2, #0 + 800079a: 2100 movs r1, #0 + 800079c: 2028 movs r0, #40 @ 0x28 + 800079e: f000 fb1e bl 8000dde + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 80007a2: 2028 movs r0, #40 @ 0x28 + 80007a4: f000 fb37 bl 8000e16 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80007a8: bf00 nop + 80007aa: 3720 adds r7, #32 + 80007ac: 46bd mov sp, r7 + 80007ae: bd80 pop {r7, pc} + 80007b0: 40023800 .word 0x40023800 + 80007b4: 40020800 .word 0x40020800 + 80007b8: 40020000 .word 0x40020000 + +080007bc : + +/* USER CODE BEGIN 4 */ +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { + 80007bc: b480 push {r7} + 80007be: b083 sub sp, #12 + 80007c0: af00 add r7, sp, #0 + 80007c2: 4603 mov r3, r0 + 80007c4: 80fb strh r3, [r7, #6] + if (GPIO_Pin == (1<<11)){ + 80007c6: 88fb ldrh r3, [r7, #6] + 80007c8: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 80007cc: d103 bne.n 80007d6 + marche = 1; + 80007ce: 4b08 ldr r3, [pc, #32] @ (80007f0 ) + 80007d0: 2201 movs r2, #1 + 80007d2: 701a strb r2, [r3, #0] + } else if (GPIO_Pin == (1<<12)) { + marche = 0; + } +} + 80007d4: e006 b.n 80007e4 + } else if (GPIO_Pin == (1<<12)) { + 80007d6: 88fb ldrh r3, [r7, #6] + 80007d8: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80007dc: d102 bne.n 80007e4 + marche = 0; + 80007de: 4b04 ldr r3, [pc, #16] @ (80007f0 ) + 80007e0: 2200 movs r2, #0 + 80007e2: 701a strb r2, [r3, #0] +} + 80007e4: bf00 nop + 80007e6: 370c adds r7, #12 + 80007e8: 46bd mov sp, r7 + 80007ea: bc80 pop {r7} + 80007ec: 4770 bx lr + 80007ee: bf00 nop + 80007f0: 200000c0 .word 0x200000c0 + +080007f4 : + +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) { + 80007f4: b480 push {r7} + 80007f6: b083 sub sp, #12 + 80007f8: af00 add r7, sp, #0 + 80007fa: 6078 str r0, [r7, #4] + if (htim->Instance == TIM2) { + 80007fc: 687b ldr r3, [r7, #4] + 80007fe: 681b ldr r3, [r3, #0] + 8000800: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000804: d102 bne.n 800080c + tempo_500ms_ok = 1; + 8000806: 4b04 ldr r3, [pc, #16] @ (8000818 ) + 8000808: 2201 movs r2, #1 + 800080a: 701a strb r2, [r3, #0] + } +} + 800080c: bf00 nop + 800080e: 370c adds r7, #12 + 8000810: 46bd mov sp, r7 + 8000812: bc80 pop {r7} + 8000814: 4770 bx lr + 8000816: bf00 nop + 8000818: 200000c1 .word 0x200000c1 + +0800081c : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 800081c: b480 push {r7} + 800081e: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 8000820: b672 cpsid i +} + 8000822: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000824: bf00 nop + 8000826: e7fd b.n 8000824 + +08000828 : +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000828: b480 push {r7} + 800082a: b085 sub sp, #20 + 800082c: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 800082e: 4b14 ldr r3, [pc, #80] @ (8000880 ) + 8000830: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000832: 4a13 ldr r2, [pc, #76] @ (8000880 ) + 8000834: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000838: 6253 str r3, [r2, #36] @ 0x24 + 800083a: 4b11 ldr r3, [pc, #68] @ (8000880 ) + 800083c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800083e: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 8000842: 60fb str r3, [r7, #12] + 8000844: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000846: 4b0e ldr r3, [pc, #56] @ (8000880 ) + 8000848: 6a1b ldr r3, [r3, #32] + 800084a: 4a0d ldr r2, [pc, #52] @ (8000880 ) + 800084c: f043 0301 orr.w r3, r3, #1 + 8000850: 6213 str r3, [r2, #32] + 8000852: 4b0b ldr r3, [pc, #44] @ (8000880 ) + 8000854: 6a1b ldr r3, [r3, #32] + 8000856: f003 0301 and.w r3, r3, #1 + 800085a: 60bb str r3, [r7, #8] + 800085c: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800085e: 4b08 ldr r3, [pc, #32] @ (8000880 ) + 8000860: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000862: 4a07 ldr r2, [pc, #28] @ (8000880 ) + 8000864: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000868: 6253 str r3, [r2, #36] @ 0x24 + 800086a: 4b05 ldr r3, [pc, #20] @ (8000880 ) + 800086c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800086e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000872: 607b str r3, [r7, #4] + 8000874: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000876: bf00 nop + 8000878: 3714 adds r7, #20 + 800087a: 46bd mov sp, r7 + 800087c: bc80 pop {r7} + 800087e: 4770 bx lr + 8000880: 40023800 .word 0x40023800 + +08000884 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000884: b580 push {r7, lr} + 8000886: b08a sub sp, #40 @ 0x28 + 8000888: af00 add r7, sp, #0 + 800088a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800088c: f107 0314 add.w r3, r7, #20 + 8000890: 2200 movs r2, #0 + 8000892: 601a str r2, [r3, #0] + 8000894: 605a str r2, [r3, #4] + 8000896: 609a str r2, [r3, #8] + 8000898: 60da str r2, [r3, #12] + 800089a: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 800089c: 687b ldr r3, [r7, #4] + 800089e: 681b ldr r3, [r3, #0] + 80008a0: 4a17 ldr r2, [pc, #92] @ (8000900 ) + 80008a2: 4293 cmp r3, r2 + 80008a4: d127 bne.n 80008f6 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 80008a6: 4b17 ldr r3, [pc, #92] @ (8000904 ) + 80008a8: 6a1b ldr r3, [r3, #32] + 80008aa: 4a16 ldr r2, [pc, #88] @ (8000904 ) + 80008ac: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 80008b0: 6213 str r3, [r2, #32] + 80008b2: 4b14 ldr r3, [pc, #80] @ (8000904 ) + 80008b4: 6a1b ldr r3, [r3, #32] + 80008b6: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80008ba: 613b str r3, [r7, #16] + 80008bc: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80008be: 4b11 ldr r3, [pc, #68] @ (8000904 ) + 80008c0: 69db ldr r3, [r3, #28] + 80008c2: 4a10 ldr r2, [pc, #64] @ (8000904 ) + 80008c4: f043 0301 orr.w r3, r3, #1 + 80008c8: 61d3 str r3, [r2, #28] + 80008ca: 4b0e ldr r3, [pc, #56] @ (8000904 ) + 80008cc: 69db ldr r3, [r3, #28] + 80008ce: f003 0301 and.w r3, r3, #1 + 80008d2: 60fb str r3, [r7, #12] + 80008d4: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 80008d6: 23e0 movs r3, #224 @ 0xe0 + 80008d8: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008da: 2302 movs r3, #2 + 80008dc: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008de: 2300 movs r3, #0 + 80008e0: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 80008e2: 2303 movs r3, #3 + 80008e4: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 80008e6: 2305 movs r3, #5 + 80008e8: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80008ea: f107 0314 add.w r3, r7, #20 + 80008ee: 4619 mov r1, r3 + 80008f0: 4805 ldr r0, [pc, #20] @ (8000908 ) + 80008f2: f000 faab bl 8000e4c + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 80008f6: bf00 nop + 80008f8: 3728 adds r7, #40 @ 0x28 + 80008fa: 46bd mov sp, r7 + 80008fc: bd80 pop {r7, pc} + 80008fe: bf00 nop + 8000900: 40013000 .word 0x40013000 + 8000904: 40023800 .word 0x40023800 + 8000908: 40020000 .word 0x40020000 + +0800090c : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 800090c: b580 push {r7, lr} + 800090e: b084 sub sp, #16 + 8000910: af00 add r7, sp, #0 + 8000912: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 8000914: 687b ldr r3, [r7, #4] + 8000916: 681b ldr r3, [r3, #0] + 8000918: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800091c: d113 bne.n 8000946 + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 800091e: 4b0c ldr r3, [pc, #48] @ (8000950 ) + 8000920: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000922: 4a0b ldr r2, [pc, #44] @ (8000950 ) + 8000924: f043 0301 orr.w r3, r3, #1 + 8000928: 6253 str r3, [r2, #36] @ 0x24 + 800092a: 4b09 ldr r3, [pc, #36] @ (8000950 ) + 800092c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800092e: f003 0301 and.w r3, r3, #1 + 8000932: 60fb str r3, [r7, #12] + 8000934: 68fb ldr r3, [r7, #12] + /* TIM2 interrupt Init */ + HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + 8000936: 2200 movs r2, #0 + 8000938: 2100 movs r1, #0 + 800093a: 201c movs r0, #28 + 800093c: f000 fa4f bl 8000dde + HAL_NVIC_EnableIRQ(TIM2_IRQn); + 8000940: 201c movs r0, #28 + 8000942: f000 fa68 bl 8000e16 + + /* USER CODE END TIM2_MspInit 1 */ + + } + +} + 8000946: bf00 nop + 8000948: 3710 adds r7, #16 + 800094a: 46bd mov sp, r7 + 800094c: bd80 pop {r7, pc} + 800094e: bf00 nop + 8000950: 40023800 .word 0x40023800 + +08000954 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000954: b480 push {r7} + 8000956: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 8000958: bf00 nop + 800095a: e7fd b.n 8000958 + +0800095c : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 800095c: b480 push {r7} + 800095e: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000960: bf00 nop + 8000962: e7fd b.n 8000960 + +08000964 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000964: b480 push {r7} + 8000966: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000968: bf00 nop + 800096a: e7fd b.n 8000968 + +0800096c : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 800096c: b480 push {r7} + 800096e: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000970: bf00 nop + 8000972: e7fd b.n 8000970 + +08000974 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000974: b480 push {r7} + 8000976: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000978: bf00 nop + 800097a: e7fd b.n 8000978 + +0800097c : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 800097c: b480 push {r7} + 800097e: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000980: bf00 nop + 8000982: 46bd mov sp, r7 + 8000984: bc80 pop {r7} + 8000986: 4770 bx lr + +08000988 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000988: b480 push {r7} + 800098a: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 800098c: bf00 nop + 800098e: 46bd mov sp, r7 + 8000990: bc80 pop {r7} + 8000992: 4770 bx lr + +08000994 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000994: b480 push {r7} + 8000996: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000998: bf00 nop + 800099a: 46bd mov sp, r7 + 800099c: bc80 pop {r7} + 800099e: 4770 bx lr + +080009a0 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 80009a0: b580 push {r7, lr} + 80009a2: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 80009a4: f000 f928 bl 8000bf8 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 80009a8: bf00 nop + 80009aa: bd80 pop {r7, pc} + +080009ac : + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + 80009ac: b580 push {r7, lr} + 80009ae: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + 80009b0: 4802 ldr r0, [pc, #8] @ (80009bc ) + 80009b2: f001 fcc9 bl 8002348 + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + 80009b6: bf00 nop + 80009b8: bd80 pop {r7, pc} + 80009ba: bf00 nop + 80009bc: 20000080 .word 0x20000080 + +080009c0 : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 80009c0: b580 push {r7, lr} + 80009c2: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 80009c4: f44f 6000 mov.w r0, #2048 @ 0x800 + 80009c8: f000 fbe8 bl 800119c + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 80009cc: f44f 5080 mov.w r0, #4096 @ 0x1000 + 80009d0: f000 fbe4 bl 800119c + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 80009d4: bf00 nop + 80009d6: bd80 pop {r7, pc} + +080009d8 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 80009d8: b480 push {r7} + 80009da: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 80009dc: bf00 nop + 80009de: 46bd mov sp, r7 + 80009e0: bc80 pop {r7} + 80009e2: 4770 bx lr + +080009e4 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 80009e4: f7ff fff8 bl 80009d8 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 80009e8: 480b ldr r0, [pc, #44] @ (8000a18 ) + ldr r1, =_edata + 80009ea: 490c ldr r1, [pc, #48] @ (8000a1c ) + ldr r2, =_sidata + 80009ec: 4a0c ldr r2, [pc, #48] @ (8000a20 ) + movs r3, #0 + 80009ee: 2300 movs r3, #0 + b LoopCopyDataInit + 80009f0: e002 b.n 80009f8 + +080009f2 : + +CopyDataInit: + ldr r4, [r2, r3] + 80009f2: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 80009f4: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 80009f6: 3304 adds r3, #4 + +080009f8 : + +LoopCopyDataInit: + adds r4, r0, r3 + 80009f8: 18c4 adds r4, r0, r3 + cmp r4, r1 + 80009fa: 428c cmp r4, r1 + bcc CopyDataInit + 80009fc: d3f9 bcc.n 80009f2 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 80009fe: 4a09 ldr r2, [pc, #36] @ (8000a24 ) + ldr r4, =_ebss + 8000a00: 4c09 ldr r4, [pc, #36] @ (8000a28 ) + movs r3, #0 + 8000a02: 2300 movs r3, #0 + b LoopFillZerobss + 8000a04: e001 b.n 8000a0a + +08000a06 : + +FillZerobss: + str r3, [r2] + 8000a06: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000a08: 3204 adds r2, #4 + +08000a0a : + +LoopFillZerobss: + cmp r2, r4 + 8000a0a: 42a2 cmp r2, r4 + bcc FillZerobss + 8000a0c: d3fb bcc.n 8000a06 + +/* Call static constructors */ + bl __libc_init_array + 8000a0e: f001 ffc5 bl 800299c <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000a12: f7ff fd7d bl 8000510
+ bx lr + 8000a16: 4770 bx lr + ldr r0, =_sdata + 8000a18: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000a1c: 2000000c .word 0x2000000c + ldr r2, =_sidata + 8000a20: 08002a38 .word 0x08002a38 + ldr r2, =_sbss + 8000a24: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000a28: 200000c8 .word 0x200000c8 + +08000a2c : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000a2c: e7fe b.n 8000a2c + +08000a2e : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000a2e: b580 push {r7, lr} + 8000a30: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 8000a32: 2107 movs r1, #7 + 8000a34: 200b movs r0, #11 + 8000a36: f000 f85d bl 8000af4 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000a3a: 2100 movs r1, #0 + 8000a3c: 2009 movs r0, #9 + 8000a3e: f000 f859 bl 8000af4 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000a42: f000 f809 bl 8000a58 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000a46: f000 f80f bl 8000a68 + MAX7219_Clear(); // clear all digits + 8000a4a: f000 f827 bl 8000a9c + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000a4e: 200f movs r0, #15 + 8000a50: f000 f812 bl 8000a78 +} + 8000a54: bf00 nop + 8000a56: bd80 pop {r7, pc} + +08000a58 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000a58: b580 push {r7, lr} + 8000a5a: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000a5c: 2101 movs r1, #1 + 8000a5e: 200c movs r0, #12 + 8000a60: f000 f848 bl 8000af4 +} + 8000a64: bf00 nop + 8000a66: bd80 pop {r7, pc} + +08000a68 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000a68: b580 push {r7, lr} + 8000a6a: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000a6c: 2100 movs r1, #0 + 8000a6e: 200f movs r0, #15 + 8000a70: f000 f840 bl 8000af4 +} + 8000a74: bf00 nop + 8000a76: bd80 pop {r7, pc} + +08000a78 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000a78: b580 push {r7, lr} + 8000a7a: b082 sub sp, #8 + 8000a7c: af00 add r7, sp, #0 + 8000a7e: 4603 mov r3, r0 + 8000a80: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000a82: 79fb ldrb r3, [r7, #7] + 8000a84: f003 030f and.w r3, r3, #15 + 8000a88: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000a8a: 79fb ldrb r3, [r7, #7] + 8000a8c: 4619 mov r1, r3 + 8000a8e: 200a movs r0, #10 + 8000a90: f000 f830 bl 8000af4 +} + 8000a94: bf00 nop + 8000a96: 3708 adds r7, #8 + 8000a98: 46bd mov sp, r7 + 8000a9a: bd80 pop {r7, pc} + +08000a9c : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000a9c: b580 push {r7, lr} + 8000a9e: b082 sub sp, #8 + 8000aa0: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000aa2: 2300 movs r3, #0 + 8000aa4: 71fb strb r3, [r7, #7] + 8000aa6: e007 b.n 8000ab8 + MAX7219_Write(i, 0x00); // turn all segments off + 8000aa8: 79fb ldrb r3, [r7, #7] + 8000aaa: 2100 movs r1, #0 + 8000aac: 4618 mov r0, r3 + 8000aae: f000 f821 bl 8000af4 + for (i=0; i < 8; i++) + 8000ab2: 79fb ldrb r3, [r7, #7] + 8000ab4: 3301 adds r3, #1 + 8000ab6: 71fb strb r3, [r7, #7] + 8000ab8: 79fb ldrb r3, [r7, #7] + 8000aba: 2b07 cmp r3, #7 + 8000abc: d9f4 bls.n 8000aa8 +} + 8000abe: bf00 nop + 8000ac0: bf00 nop + 8000ac2: 3708 adds r7, #8 + 8000ac4: 46bd mov sp, r7 + 8000ac6: bd80 pop {r7, pc} + +08000ac8 : +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + 8000ac8: b580 push {r7, lr} + 8000aca: b082 sub sp, #8 + 8000acc: af00 add r7, sp, #0 + 8000ace: 4603 mov r3, r0 + 8000ad0: 460a mov r2, r1 + 8000ad2: 71fb strb r3, [r7, #7] + 8000ad4: 4613 mov r3, r2 + 8000ad6: 71bb strb r3, [r7, #6] + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); + 8000ad8: 79bb ldrb r3, [r7, #6] + 8000ada: 4a05 ldr r2, [pc, #20] @ (8000af0 ) + 8000adc: 5cd2 ldrb r2, [r2, r3] + 8000ade: 79fb ldrb r3, [r7, #7] + 8000ae0: 4611 mov r1, r2 + 8000ae2: 4618 mov r0, r3 + 8000ae4: f000 f806 bl 8000af4 +} + 8000ae8: bf00 nop + 8000aea: 3708 adds r7, #8 + 8000aec: 46bd mov sp, r7 + 8000aee: bd80 pop {r7, pc} + 8000af0: 08002a18 .word 0x08002a18 + +08000af4 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000af4: b580 push {r7, lr} + 8000af6: b082 sub sp, #8 + 8000af8: af00 add r7, sp, #0 + 8000afa: 4603 mov r3, r0 + 8000afc: 460a mov r2, r1 + 8000afe: 71fb strb r3, [r7, #7] + 8000b00: 4613 mov r3, r2 + 8000b02: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000b04: 4b09 ldr r3, [pc, #36] @ (8000b2c ) + 8000b06: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000b0a: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000b0c: 79fb ldrb r3, [r7, #7] + 8000b0e: 4618 mov r0, r3 + 8000b10: f000 f80e bl 8000b30 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000b14: 79bb ldrb r3, [r7, #6] + 8000b16: 4618 mov r0, r3 + 8000b18: f000 f80a bl 8000b30 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000b1c: 4b03 ldr r3, [pc, #12] @ (8000b2c ) + 8000b1e: 2201 movs r2, #1 + 8000b20: 619a str r2, [r3, #24] + } + 8000b22: bf00 nop + 8000b24: 3708 adds r7, #8 + 8000b26: 46bd mov sp, r7 + 8000b28: bd80 pop {r7, pc} + 8000b2a: bf00 nop + 8000b2c: 40020800 .word 0x40020800 + +08000b30 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000b30: b580 push {r7, lr} + 8000b32: b082 sub sp, #8 + 8000b34: af00 add r7, sp, #0 + 8000b36: 4603 mov r3, r0 + 8000b38: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000b3a: 1df9 adds r1, r7, #7 + 8000b3c: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000b40: 2201 movs r2, #1 + 8000b42: 4803 ldr r0, [pc, #12] @ (8000b50 ) + 8000b44: f001 f94d bl 8001de2 + +} + 8000b48: bf00 nop + 8000b4a: 3708 adds r7, #8 + 8000b4c: 46bd mov sp, r7 + 8000b4e: bd80 pop {r7, pc} + 8000b50: 20000028 .word 0x20000028 + +08000b54 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000b54: b580 push {r7, lr} + 8000b56: b082 sub sp, #8 + 8000b58: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000b5a: 2300 movs r3, #0 + 8000b5c: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000b5e: 2003 movs r0, #3 + 8000b60: f000 f932 bl 8000dc8 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000b64: 200f movs r0, #15 + 8000b66: f000 f80d bl 8000b84 + 8000b6a: 4603 mov r3, r0 + 8000b6c: 2b00 cmp r3, #0 + 8000b6e: d002 beq.n 8000b76 + { + status = HAL_ERROR; + 8000b70: 2301 movs r3, #1 + 8000b72: 71fb strb r3, [r7, #7] + 8000b74: e001 b.n 8000b7a + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000b76: f7ff fe57 bl 8000828 + } + + /* Return function status */ + return status; + 8000b7a: 79fb ldrb r3, [r7, #7] +} + 8000b7c: 4618 mov r0, r3 + 8000b7e: 3708 adds r7, #8 + 8000b80: 46bd mov sp, r7 + 8000b82: bd80 pop {r7, pc} + +08000b84 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000b84: b580 push {r7, lr} + 8000b86: b084 sub sp, #16 + 8000b88: af00 add r7, sp, #0 + 8000b8a: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000b8c: 2300 movs r3, #0 + 8000b8e: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000b90: 4b16 ldr r3, [pc, #88] @ (8000bec ) + 8000b92: 681b ldr r3, [r3, #0] + 8000b94: 2b00 cmp r3, #0 + 8000b96: d022 beq.n 8000bde + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000b98: 4b15 ldr r3, [pc, #84] @ (8000bf0 ) + 8000b9a: 681a ldr r2, [r3, #0] + 8000b9c: 4b13 ldr r3, [pc, #76] @ (8000bec ) + 8000b9e: 681b ldr r3, [r3, #0] + 8000ba0: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000ba4: fbb1 f3f3 udiv r3, r1, r3 + 8000ba8: fbb2 f3f3 udiv r3, r2, r3 + 8000bac: 4618 mov r0, r3 + 8000bae: f000 f940 bl 8000e32 + 8000bb2: 4603 mov r3, r0 + 8000bb4: 2b00 cmp r3, #0 + 8000bb6: d10f bne.n 8000bd8 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000bb8: 687b ldr r3, [r7, #4] + 8000bba: 2b0f cmp r3, #15 + 8000bbc: d809 bhi.n 8000bd2 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000bbe: 2200 movs r2, #0 + 8000bc0: 6879 ldr r1, [r7, #4] + 8000bc2: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000bc6: f000 f90a bl 8000dde + uwTickPrio = TickPriority; + 8000bca: 4a0a ldr r2, [pc, #40] @ (8000bf4 ) + 8000bcc: 687b ldr r3, [r7, #4] + 8000bce: 6013 str r3, [r2, #0] + 8000bd0: e007 b.n 8000be2 + } + else + { + status = HAL_ERROR; + 8000bd2: 2301 movs r3, #1 + 8000bd4: 73fb strb r3, [r7, #15] + 8000bd6: e004 b.n 8000be2 + } + } + else + { + status = HAL_ERROR; + 8000bd8: 2301 movs r3, #1 + 8000bda: 73fb strb r3, [r7, #15] + 8000bdc: e001 b.n 8000be2 + } + } + else + { + status = HAL_ERROR; + 8000bde: 2301 movs r3, #1 + 8000be0: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000be2: 7bfb ldrb r3, [r7, #15] +} + 8000be4: 4618 mov r0, r3 + 8000be6: 3710 adds r7, #16 + 8000be8: 46bd mov sp, r7 + 8000bea: bd80 pop {r7, pc} + 8000bec: 20000008 .word 0x20000008 + 8000bf0: 20000000 .word 0x20000000 + 8000bf4: 20000004 .word 0x20000004 + +08000bf8 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000bf8: b480 push {r7} + 8000bfa: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000bfc: 4b05 ldr r3, [pc, #20] @ (8000c14 ) + 8000bfe: 681a ldr r2, [r3, #0] + 8000c00: 4b05 ldr r3, [pc, #20] @ (8000c18 ) + 8000c02: 681b ldr r3, [r3, #0] + 8000c04: 4413 add r3, r2 + 8000c06: 4a03 ldr r2, [pc, #12] @ (8000c14 ) + 8000c08: 6013 str r3, [r2, #0] +} + 8000c0a: bf00 nop + 8000c0c: 46bd mov sp, r7 + 8000c0e: bc80 pop {r7} + 8000c10: 4770 bx lr + 8000c12: bf00 nop + 8000c14: 200000c4 .word 0x200000c4 + 8000c18: 20000008 .word 0x20000008 + +08000c1c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000c1c: b480 push {r7} + 8000c1e: af00 add r7, sp, #0 + return uwTick; + 8000c20: 4b02 ldr r3, [pc, #8] @ (8000c2c ) + 8000c22: 681b ldr r3, [r3, #0] +} + 8000c24: 4618 mov r0, r3 + 8000c26: 46bd mov sp, r7 + 8000c28: bc80 pop {r7} + 8000c2a: 4770 bx lr + 8000c2c: 200000c4 .word 0x200000c4 + +08000c30 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000c30: b480 push {r7} + 8000c32: b085 sub sp, #20 + 8000c34: af00 add r7, sp, #0 + 8000c36: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000c38: 687b ldr r3, [r7, #4] + 8000c3a: f003 0307 and.w r3, r3, #7 + 8000c3e: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000c40: 4b0c ldr r3, [pc, #48] @ (8000c74 <__NVIC_SetPriorityGrouping+0x44>) + 8000c42: 68db ldr r3, [r3, #12] + 8000c44: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000c46: 68ba ldr r2, [r7, #8] + 8000c48: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000c4c: 4013 ands r3, r2 + 8000c4e: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000c50: 68fb ldr r3, [r7, #12] + 8000c52: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000c54: 68bb ldr r3, [r7, #8] + 8000c56: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000c58: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000c5c: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000c60: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000c62: 4a04 ldr r2, [pc, #16] @ (8000c74 <__NVIC_SetPriorityGrouping+0x44>) + 8000c64: 68bb ldr r3, [r7, #8] + 8000c66: 60d3 str r3, [r2, #12] +} + 8000c68: bf00 nop + 8000c6a: 3714 adds r7, #20 + 8000c6c: 46bd mov sp, r7 + 8000c6e: bc80 pop {r7} + 8000c70: 4770 bx lr + 8000c72: bf00 nop + 8000c74: e000ed00 .word 0xe000ed00 + +08000c78 <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000c78: b480 push {r7} + 8000c7a: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000c7c: 4b04 ldr r3, [pc, #16] @ (8000c90 <__NVIC_GetPriorityGrouping+0x18>) + 8000c7e: 68db ldr r3, [r3, #12] + 8000c80: 0a1b lsrs r3, r3, #8 + 8000c82: f003 0307 and.w r3, r3, #7 +} + 8000c86: 4618 mov r0, r3 + 8000c88: 46bd mov sp, r7 + 8000c8a: bc80 pop {r7} + 8000c8c: 4770 bx lr + 8000c8e: bf00 nop + 8000c90: e000ed00 .word 0xe000ed00 + +08000c94 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000c94: b480 push {r7} + 8000c96: b083 sub sp, #12 + 8000c98: af00 add r7, sp, #0 + 8000c9a: 4603 mov r3, r0 + 8000c9c: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000c9e: f997 3007 ldrsb.w r3, [r7, #7] + 8000ca2: 2b00 cmp r3, #0 + 8000ca4: db0b blt.n 8000cbe <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000ca6: 79fb ldrb r3, [r7, #7] + 8000ca8: f003 021f and.w r2, r3, #31 + 8000cac: 4906 ldr r1, [pc, #24] @ (8000cc8 <__NVIC_EnableIRQ+0x34>) + 8000cae: f997 3007 ldrsb.w r3, [r7, #7] + 8000cb2: 095b lsrs r3, r3, #5 + 8000cb4: 2001 movs r0, #1 + 8000cb6: fa00 f202 lsl.w r2, r0, r2 + 8000cba: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000cbe: bf00 nop + 8000cc0: 370c adds r7, #12 + 8000cc2: 46bd mov sp, r7 + 8000cc4: bc80 pop {r7} + 8000cc6: 4770 bx lr + 8000cc8: e000e100 .word 0xe000e100 + +08000ccc <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000ccc: b480 push {r7} + 8000cce: b083 sub sp, #12 + 8000cd0: af00 add r7, sp, #0 + 8000cd2: 4603 mov r3, r0 + 8000cd4: 6039 str r1, [r7, #0] + 8000cd6: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000cd8: f997 3007 ldrsb.w r3, [r7, #7] + 8000cdc: 2b00 cmp r3, #0 + 8000cde: db0a blt.n 8000cf6 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000ce0: 683b ldr r3, [r7, #0] + 8000ce2: b2da uxtb r2, r3 + 8000ce4: 490c ldr r1, [pc, #48] @ (8000d18 <__NVIC_SetPriority+0x4c>) + 8000ce6: f997 3007 ldrsb.w r3, [r7, #7] + 8000cea: 0112 lsls r2, r2, #4 + 8000cec: b2d2 uxtb r2, r2 + 8000cee: 440b add r3, r1 + 8000cf0: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000cf4: e00a b.n 8000d0c <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000cf6: 683b ldr r3, [r7, #0] + 8000cf8: b2da uxtb r2, r3 + 8000cfa: 4908 ldr r1, [pc, #32] @ (8000d1c <__NVIC_SetPriority+0x50>) + 8000cfc: 79fb ldrb r3, [r7, #7] + 8000cfe: f003 030f and.w r3, r3, #15 + 8000d02: 3b04 subs r3, #4 + 8000d04: 0112 lsls r2, r2, #4 + 8000d06: b2d2 uxtb r2, r2 + 8000d08: 440b add r3, r1 + 8000d0a: 761a strb r2, [r3, #24] +} + 8000d0c: bf00 nop + 8000d0e: 370c adds r7, #12 + 8000d10: 46bd mov sp, r7 + 8000d12: bc80 pop {r7} + 8000d14: 4770 bx lr + 8000d16: bf00 nop + 8000d18: e000e100 .word 0xe000e100 + 8000d1c: e000ed00 .word 0xe000ed00 + +08000d20 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000d20: b480 push {r7} + 8000d22: b089 sub sp, #36 @ 0x24 + 8000d24: af00 add r7, sp, #0 + 8000d26: 60f8 str r0, [r7, #12] + 8000d28: 60b9 str r1, [r7, #8] + 8000d2a: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000d2c: 68fb ldr r3, [r7, #12] + 8000d2e: f003 0307 and.w r3, r3, #7 + 8000d32: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000d34: 69fb ldr r3, [r7, #28] + 8000d36: f1c3 0307 rsb r3, r3, #7 + 8000d3a: 2b04 cmp r3, #4 + 8000d3c: bf28 it cs + 8000d3e: 2304 movcs r3, #4 + 8000d40: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000d42: 69fb ldr r3, [r7, #28] + 8000d44: 3304 adds r3, #4 + 8000d46: 2b06 cmp r3, #6 + 8000d48: d902 bls.n 8000d50 + 8000d4a: 69fb ldr r3, [r7, #28] + 8000d4c: 3b03 subs r3, #3 + 8000d4e: e000 b.n 8000d52 + 8000d50: 2300 movs r3, #0 + 8000d52: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000d54: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000d58: 69bb ldr r3, [r7, #24] + 8000d5a: fa02 f303 lsl.w r3, r2, r3 + 8000d5e: 43da mvns r2, r3 + 8000d60: 68bb ldr r3, [r7, #8] + 8000d62: 401a ands r2, r3 + 8000d64: 697b ldr r3, [r7, #20] + 8000d66: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000d68: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000d6c: 697b ldr r3, [r7, #20] + 8000d6e: fa01 f303 lsl.w r3, r1, r3 + 8000d72: 43d9 mvns r1, r3 + 8000d74: 687b ldr r3, [r7, #4] + 8000d76: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000d78: 4313 orrs r3, r2 + ); +} + 8000d7a: 4618 mov r0, r3 + 8000d7c: 3724 adds r7, #36 @ 0x24 + 8000d7e: 46bd mov sp, r7 + 8000d80: bc80 pop {r7} + 8000d82: 4770 bx lr + +08000d84 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000d84: b580 push {r7, lr} + 8000d86: b082 sub sp, #8 + 8000d88: af00 add r7, sp, #0 + 8000d8a: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000d8c: 687b ldr r3, [r7, #4] + 8000d8e: 3b01 subs r3, #1 + 8000d90: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000d94: d301 bcc.n 8000d9a + { + return (1UL); /* Reload value impossible */ + 8000d96: 2301 movs r3, #1 + 8000d98: e00f b.n 8000dba + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000d9a: 4a0a ldr r2, [pc, #40] @ (8000dc4 ) + 8000d9c: 687b ldr r3, [r7, #4] + 8000d9e: 3b01 subs r3, #1 + 8000da0: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000da2: 210f movs r1, #15 + 8000da4: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000da8: f7ff ff90 bl 8000ccc <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000dac: 4b05 ldr r3, [pc, #20] @ (8000dc4 ) + 8000dae: 2200 movs r2, #0 + 8000db0: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000db2: 4b04 ldr r3, [pc, #16] @ (8000dc4 ) + 8000db4: 2207 movs r2, #7 + 8000db6: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000db8: 2300 movs r3, #0 +} + 8000dba: 4618 mov r0, r3 + 8000dbc: 3708 adds r7, #8 + 8000dbe: 46bd mov sp, r7 + 8000dc0: bd80 pop {r7, pc} + 8000dc2: bf00 nop + 8000dc4: e000e010 .word 0xe000e010 + +08000dc8 : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000dc8: b580 push {r7, lr} + 8000dca: b082 sub sp, #8 + 8000dcc: af00 add r7, sp, #0 + 8000dce: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000dd0: 6878 ldr r0, [r7, #4] + 8000dd2: f7ff ff2d bl 8000c30 <__NVIC_SetPriorityGrouping> +} + 8000dd6: bf00 nop + 8000dd8: 3708 adds r7, #8 + 8000dda: 46bd mov sp, r7 + 8000ddc: bd80 pop {r7, pc} + +08000dde : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000dde: b580 push {r7, lr} + 8000de0: b086 sub sp, #24 + 8000de2: af00 add r7, sp, #0 + 8000de4: 4603 mov r3, r0 + 8000de6: 60b9 str r1, [r7, #8] + 8000de8: 607a str r2, [r7, #4] + 8000dea: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000dec: 2300 movs r3, #0 + 8000dee: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000df0: f7ff ff42 bl 8000c78 <__NVIC_GetPriorityGrouping> + 8000df4: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000df6: 687a ldr r2, [r7, #4] + 8000df8: 68b9 ldr r1, [r7, #8] + 8000dfa: 6978 ldr r0, [r7, #20] + 8000dfc: f7ff ff90 bl 8000d20 + 8000e00: 4602 mov r2, r0 + 8000e02: f997 300f ldrsb.w r3, [r7, #15] + 8000e06: 4611 mov r1, r2 + 8000e08: 4618 mov r0, r3 + 8000e0a: f7ff ff5f bl 8000ccc <__NVIC_SetPriority> +} + 8000e0e: bf00 nop + 8000e10: 3718 adds r7, #24 + 8000e12: 46bd mov sp, r7 + 8000e14: bd80 pop {r7, pc} + +08000e16 : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000e16: b580 push {r7, lr} + 8000e18: b082 sub sp, #8 + 8000e1a: af00 add r7, sp, #0 + 8000e1c: 4603 mov r3, r0 + 8000e1e: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000e20: f997 3007 ldrsb.w r3, [r7, #7] + 8000e24: 4618 mov r0, r3 + 8000e26: f7ff ff35 bl 8000c94 <__NVIC_EnableIRQ> +} + 8000e2a: bf00 nop + 8000e2c: 3708 adds r7, #8 + 8000e2e: 46bd mov sp, r7 + 8000e30: bd80 pop {r7, pc} + +08000e32 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000e32: b580 push {r7, lr} + 8000e34: b082 sub sp, #8 + 8000e36: af00 add r7, sp, #0 + 8000e38: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000e3a: 6878 ldr r0, [r7, #4] + 8000e3c: f7ff ffa2 bl 8000d84 + 8000e40: 4603 mov r3, r0 +} + 8000e42: 4618 mov r0, r3 + 8000e44: 3708 adds r7, #8 + 8000e46: 46bd mov sp, r7 + 8000e48: bd80 pop {r7, pc} + ... + +08000e4c : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000e4c: b480 push {r7} + 8000e4e: b087 sub sp, #28 + 8000e50: af00 add r7, sp, #0 + 8000e52: 6078 str r0, [r7, #4] + 8000e54: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000e56: 2300 movs r3, #0 + 8000e58: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000e5a: 2300 movs r3, #0 + 8000e5c: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8000e5e: 2300 movs r3, #0 + 8000e60: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8000e62: e160 b.n 8001126 + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8000e64: 683b ldr r3, [r7, #0] + 8000e66: 681a ldr r2, [r3, #0] + 8000e68: 2101 movs r1, #1 + 8000e6a: 697b ldr r3, [r7, #20] + 8000e6c: fa01 f303 lsl.w r3, r1, r3 + 8000e70: 4013 ands r3, r2 + 8000e72: 60fb str r3, [r7, #12] + + if (iocurrent) + 8000e74: 68fb ldr r3, [r7, #12] + 8000e76: 2b00 cmp r3, #0 + 8000e78: f000 8152 beq.w 8001120 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000e7c: 683b ldr r3, [r7, #0] + 8000e7e: 685b ldr r3, [r3, #4] + 8000e80: f003 0303 and.w r3, r3, #3 + 8000e84: 2b01 cmp r3, #1 + 8000e86: d005 beq.n 8000e94 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8000e88: 683b ldr r3, [r7, #0] + 8000e8a: 685b ldr r3, [r3, #4] + 8000e8c: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000e90: 2b02 cmp r3, #2 + 8000e92: d130 bne.n 8000ef6 + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8000e94: 687b ldr r3, [r7, #4] + 8000e96: 689b ldr r3, [r3, #8] + 8000e98: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 8000e9a: 697b ldr r3, [r7, #20] + 8000e9c: 005b lsls r3, r3, #1 + 8000e9e: 2203 movs r2, #3 + 8000ea0: fa02 f303 lsl.w r3, r2, r3 + 8000ea4: 43db mvns r3, r3 + 8000ea6: 693a ldr r2, [r7, #16] + 8000ea8: 4013 ands r3, r2 + 8000eaa: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8000eac: 683b ldr r3, [r7, #0] + 8000eae: 68da ldr r2, [r3, #12] + 8000eb0: 697b ldr r3, [r7, #20] + 8000eb2: 005b lsls r3, r3, #1 + 8000eb4: fa02 f303 lsl.w r3, r2, r3 + 8000eb8: 693a ldr r2, [r7, #16] + 8000eba: 4313 orrs r3, r2 + 8000ebc: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8000ebe: 687b ldr r3, [r7, #4] + 8000ec0: 693a ldr r2, [r7, #16] + 8000ec2: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8000ec4: 687b ldr r3, [r7, #4] + 8000ec6: 685b ldr r3, [r3, #4] + 8000ec8: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 8000eca: 2201 movs r2, #1 + 8000ecc: 697b ldr r3, [r7, #20] + 8000ece: fa02 f303 lsl.w r3, r2, r3 + 8000ed2: 43db mvns r3, r3 + 8000ed4: 693a ldr r2, [r7, #16] + 8000ed6: 4013 ands r3, r2 + 8000ed8: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8000eda: 683b ldr r3, [r7, #0] + 8000edc: 685b ldr r3, [r3, #4] + 8000ede: 091b lsrs r3, r3, #4 + 8000ee0: f003 0201 and.w r2, r3, #1 + 8000ee4: 697b ldr r3, [r7, #20] + 8000ee6: fa02 f303 lsl.w r3, r2, r3 + 8000eea: 693a ldr r2, [r7, #16] + 8000eec: 4313 orrs r3, r2 + 8000eee: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8000ef0: 687b ldr r3, [r7, #4] + 8000ef2: 693a ldr r2, [r7, #16] + 8000ef4: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8000ef6: 683b ldr r3, [r7, #0] + 8000ef8: 685b ldr r3, [r3, #4] + 8000efa: f003 0303 and.w r3, r3, #3 + 8000efe: 2b03 cmp r3, #3 + 8000f00: d017 beq.n 8000f32 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8000f02: 687b ldr r3, [r7, #4] + 8000f04: 68db ldr r3, [r3, #12] + 8000f06: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 8000f08: 697b ldr r3, [r7, #20] + 8000f0a: 005b lsls r3, r3, #1 + 8000f0c: 2203 movs r2, #3 + 8000f0e: fa02 f303 lsl.w r3, r2, r3 + 8000f12: 43db mvns r3, r3 + 8000f14: 693a ldr r2, [r7, #16] + 8000f16: 4013 ands r3, r2 + 8000f18: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 8000f1a: 683b ldr r3, [r7, #0] + 8000f1c: 689a ldr r2, [r3, #8] + 8000f1e: 697b ldr r3, [r7, #20] + 8000f20: 005b lsls r3, r3, #1 + 8000f22: fa02 f303 lsl.w r3, r2, r3 + 8000f26: 693a ldr r2, [r7, #16] + 8000f28: 4313 orrs r3, r2 + 8000f2a: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8000f2c: 687b ldr r3, [r7, #4] + 8000f2e: 693a ldr r2, [r7, #16] + 8000f30: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8000f32: 683b ldr r3, [r7, #0] + 8000f34: 685b ldr r3, [r3, #4] + 8000f36: f003 0303 and.w r3, r3, #3 + 8000f3a: 2b02 cmp r3, #2 + 8000f3c: d123 bne.n 8000f86 + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 8000f3e: 697b ldr r3, [r7, #20] + 8000f40: 08da lsrs r2, r3, #3 + 8000f42: 687b ldr r3, [r7, #4] + 8000f44: 3208 adds r2, #8 + 8000f46: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000f4a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 8000f4c: 697b ldr r3, [r7, #20] + 8000f4e: f003 0307 and.w r3, r3, #7 + 8000f52: 009b lsls r3, r3, #2 + 8000f54: 220f movs r2, #15 + 8000f56: fa02 f303 lsl.w r3, r2, r3 + 8000f5a: 43db mvns r3, r3 + 8000f5c: 693a ldr r2, [r7, #16] + 8000f5e: 4013 ands r3, r2 + 8000f60: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8000f62: 683b ldr r3, [r7, #0] + 8000f64: 691a ldr r2, [r3, #16] + 8000f66: 697b ldr r3, [r7, #20] + 8000f68: f003 0307 and.w r3, r3, #7 + 8000f6c: 009b lsls r3, r3, #2 + 8000f6e: fa02 f303 lsl.w r3, r2, r3 + 8000f72: 693a ldr r2, [r7, #16] + 8000f74: 4313 orrs r3, r2 + 8000f76: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8000f78: 697b ldr r3, [r7, #20] + 8000f7a: 08da lsrs r2, r3, #3 + 8000f7c: 687b ldr r3, [r7, #4] + 8000f7e: 3208 adds r2, #8 + 8000f80: 6939 ldr r1, [r7, #16] + 8000f82: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8000f86: 687b ldr r3, [r7, #4] + 8000f88: 681b ldr r3, [r3, #0] + 8000f8a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8000f8c: 697b ldr r3, [r7, #20] + 8000f8e: 005b lsls r3, r3, #1 + 8000f90: 2203 movs r2, #3 + 8000f92: fa02 f303 lsl.w r3, r2, r3 + 8000f96: 43db mvns r3, r3 + 8000f98: 693a ldr r2, [r7, #16] + 8000f9a: 4013 ands r3, r2 + 8000f9c: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8000f9e: 683b ldr r3, [r7, #0] + 8000fa0: 685b ldr r3, [r3, #4] + 8000fa2: f003 0203 and.w r2, r3, #3 + 8000fa6: 697b ldr r3, [r7, #20] + 8000fa8: 005b lsls r3, r3, #1 + 8000faa: fa02 f303 lsl.w r3, r2, r3 + 8000fae: 693a ldr r2, [r7, #16] + 8000fb0: 4313 orrs r3, r2 + 8000fb2: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8000fb4: 687b ldr r3, [r7, #4] + 8000fb6: 693a ldr r2, [r7, #16] + 8000fb8: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 8000fba: 683b ldr r3, [r7, #0] + 8000fbc: 685b ldr r3, [r3, #4] + 8000fbe: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8000fc2: 2b00 cmp r3, #0 + 8000fc4: f000 80ac beq.w 8001120 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000fc8: 4b5e ldr r3, [pc, #376] @ (8001144 ) + 8000fca: 6a1b ldr r3, [r3, #32] + 8000fcc: 4a5d ldr r2, [pc, #372] @ (8001144 ) + 8000fce: f043 0301 orr.w r3, r3, #1 + 8000fd2: 6213 str r3, [r2, #32] + 8000fd4: 4b5b ldr r3, [pc, #364] @ (8001144 ) + 8000fd6: 6a1b ldr r3, [r3, #32] + 8000fd8: f003 0301 and.w r3, r3, #1 + 8000fdc: 60bb str r3, [r7, #8] + 8000fde: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8000fe0: 4a59 ldr r2, [pc, #356] @ (8001148 ) + 8000fe2: 697b ldr r3, [r7, #20] + 8000fe4: 089b lsrs r3, r3, #2 + 8000fe6: 3302 adds r3, #2 + 8000fe8: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000fec: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8000fee: 697b ldr r3, [r7, #20] + 8000ff0: f003 0303 and.w r3, r3, #3 + 8000ff4: 009b lsls r3, r3, #2 + 8000ff6: 220f movs r2, #15 + 8000ff8: fa02 f303 lsl.w r3, r2, r3 + 8000ffc: 43db mvns r3, r3 + 8000ffe: 693a ldr r2, [r7, #16] + 8001000: 4013 ands r3, r2 + 8001002: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8001004: 687b ldr r3, [r7, #4] + 8001006: 4a51 ldr r2, [pc, #324] @ (800114c ) + 8001008: 4293 cmp r3, r2 + 800100a: d025 beq.n 8001058 + 800100c: 687b ldr r3, [r7, #4] + 800100e: 4a50 ldr r2, [pc, #320] @ (8001150 ) + 8001010: 4293 cmp r3, r2 + 8001012: d01f beq.n 8001054 + 8001014: 687b ldr r3, [r7, #4] + 8001016: 4a4f ldr r2, [pc, #316] @ (8001154 ) + 8001018: 4293 cmp r3, r2 + 800101a: d019 beq.n 8001050 + 800101c: 687b ldr r3, [r7, #4] + 800101e: 4a4e ldr r2, [pc, #312] @ (8001158 ) + 8001020: 4293 cmp r3, r2 + 8001022: d013 beq.n 800104c + 8001024: 687b ldr r3, [r7, #4] + 8001026: 4a4d ldr r2, [pc, #308] @ (800115c ) + 8001028: 4293 cmp r3, r2 + 800102a: d00d beq.n 8001048 + 800102c: 687b ldr r3, [r7, #4] + 800102e: 4a4c ldr r2, [pc, #304] @ (8001160 ) + 8001030: 4293 cmp r3, r2 + 8001032: d007 beq.n 8001044 + 8001034: 687b ldr r3, [r7, #4] + 8001036: 4a4b ldr r2, [pc, #300] @ (8001164 ) + 8001038: 4293 cmp r3, r2 + 800103a: d101 bne.n 8001040 + 800103c: 2306 movs r3, #6 + 800103e: e00c b.n 800105a + 8001040: 2307 movs r3, #7 + 8001042: e00a b.n 800105a + 8001044: 2305 movs r3, #5 + 8001046: e008 b.n 800105a + 8001048: 2304 movs r3, #4 + 800104a: e006 b.n 800105a + 800104c: 2303 movs r3, #3 + 800104e: e004 b.n 800105a + 8001050: 2302 movs r3, #2 + 8001052: e002 b.n 800105a + 8001054: 2301 movs r3, #1 + 8001056: e000 b.n 800105a + 8001058: 2300 movs r3, #0 + 800105a: 697a ldr r2, [r7, #20] + 800105c: f002 0203 and.w r2, r2, #3 + 8001060: 0092 lsls r2, r2, #2 + 8001062: 4093 lsls r3, r2 + 8001064: 693a ldr r2, [r7, #16] + 8001066: 4313 orrs r3, r2 + 8001068: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 800106a: 4937 ldr r1, [pc, #220] @ (8001148 ) + 800106c: 697b ldr r3, [r7, #20] + 800106e: 089b lsrs r3, r3, #2 + 8001070: 3302 adds r3, #2 + 8001072: 693a ldr r2, [r7, #16] + 8001074: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 8001078: 4b3b ldr r3, [pc, #236] @ (8001168 ) + 800107a: 689b ldr r3, [r3, #8] + 800107c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800107e: 68fb ldr r3, [r7, #12] + 8001080: 43db mvns r3, r3 + 8001082: 693a ldr r2, [r7, #16] + 8001084: 4013 ands r3, r2 + 8001086: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 8001088: 683b ldr r3, [r7, #0] + 800108a: 685b ldr r3, [r3, #4] + 800108c: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001090: 2b00 cmp r3, #0 + 8001092: d003 beq.n 800109c + { + SET_BIT(temp, iocurrent); + 8001094: 693a ldr r2, [r7, #16] + 8001096: 68fb ldr r3, [r7, #12] + 8001098: 4313 orrs r3, r2 + 800109a: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 800109c: 4a32 ldr r2, [pc, #200] @ (8001168 ) + 800109e: 693b ldr r3, [r7, #16] + 80010a0: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 80010a2: 4b31 ldr r3, [pc, #196] @ (8001168 ) + 80010a4: 68db ldr r3, [r3, #12] + 80010a6: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80010a8: 68fb ldr r3, [r7, #12] + 80010aa: 43db mvns r3, r3 + 80010ac: 693a ldr r2, [r7, #16] + 80010ae: 4013 ands r3, r2 + 80010b0: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 80010b2: 683b ldr r3, [r7, #0] + 80010b4: 685b ldr r3, [r3, #4] + 80010b6: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 80010ba: 2b00 cmp r3, #0 + 80010bc: d003 beq.n 80010c6 + { + SET_BIT(temp, iocurrent); + 80010be: 693a ldr r2, [r7, #16] + 80010c0: 68fb ldr r3, [r7, #12] + 80010c2: 4313 orrs r3, r2 + 80010c4: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 80010c6: 4a28 ldr r2, [pc, #160] @ (8001168 ) + 80010c8: 693b ldr r3, [r7, #16] + 80010ca: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 80010cc: 4b26 ldr r3, [pc, #152] @ (8001168 ) + 80010ce: 685b ldr r3, [r3, #4] + 80010d0: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80010d2: 68fb ldr r3, [r7, #12] + 80010d4: 43db mvns r3, r3 + 80010d6: 693a ldr r2, [r7, #16] + 80010d8: 4013 ands r3, r2 + 80010da: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 80010dc: 683b ldr r3, [r7, #0] + 80010de: 685b ldr r3, [r3, #4] + 80010e0: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80010e4: 2b00 cmp r3, #0 + 80010e6: d003 beq.n 80010f0 + { + SET_BIT(temp, iocurrent); + 80010e8: 693a ldr r2, [r7, #16] + 80010ea: 68fb ldr r3, [r7, #12] + 80010ec: 4313 orrs r3, r2 + 80010ee: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 80010f0: 4a1d ldr r2, [pc, #116] @ (8001168 ) + 80010f2: 693b ldr r3, [r7, #16] + 80010f4: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 80010f6: 4b1c ldr r3, [pc, #112] @ (8001168 ) + 80010f8: 681b ldr r3, [r3, #0] + 80010fa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80010fc: 68fb ldr r3, [r7, #12] + 80010fe: 43db mvns r3, r3 + 8001100: 693a ldr r2, [r7, #16] + 8001102: 4013 ands r3, r2 + 8001104: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 8001106: 683b ldr r3, [r7, #0] + 8001108: 685b ldr r3, [r3, #4] + 800110a: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 800110e: 2b00 cmp r3, #0 + 8001110: d003 beq.n 800111a + { + SET_BIT(temp, iocurrent); + 8001112: 693a ldr r2, [r7, #16] + 8001114: 68fb ldr r3, [r7, #12] + 8001116: 4313 orrs r3, r2 + 8001118: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 800111a: 4a13 ldr r2, [pc, #76] @ (8001168 ) + 800111c: 693b ldr r3, [r7, #16] + 800111e: 6013 str r3, [r2, #0] + } + } + + position++; + 8001120: 697b ldr r3, [r7, #20] + 8001122: 3301 adds r3, #1 + 8001124: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 8001126: 683b ldr r3, [r7, #0] + 8001128: 681a ldr r2, [r3, #0] + 800112a: 697b ldr r3, [r7, #20] + 800112c: fa22 f303 lsr.w r3, r2, r3 + 8001130: 2b00 cmp r3, #0 + 8001132: f47f ae97 bne.w 8000e64 + } +} + 8001136: bf00 nop + 8001138: bf00 nop + 800113a: 371c adds r7, #28 + 800113c: 46bd mov sp, r7 + 800113e: bc80 pop {r7} + 8001140: 4770 bx lr + 8001142: bf00 nop + 8001144: 40023800 .word 0x40023800 + 8001148: 40010000 .word 0x40010000 + 800114c: 40020000 .word 0x40020000 + 8001150: 40020400 .word 0x40020400 + 8001154: 40020800 .word 0x40020800 + 8001158: 40020c00 .word 0x40020c00 + 800115c: 40021000 .word 0x40021000 + 8001160: 40021400 .word 0x40021400 + 8001164: 40021800 .word 0x40021800 + 8001168: 40010400 .word 0x40010400 + +0800116c : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 800116c: b480 push {r7} + 800116e: b083 sub sp, #12 + 8001170: af00 add r7, sp, #0 + 8001172: 6078 str r0, [r7, #4] + 8001174: 460b mov r3, r1 + 8001176: 807b strh r3, [r7, #2] + 8001178: 4613 mov r3, r2 + 800117a: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 800117c: 787b ldrb r3, [r7, #1] + 800117e: 2b00 cmp r3, #0 + 8001180: d003 beq.n 800118a + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001182: 887a ldrh r2, [r7, #2] + 8001184: 687b ldr r3, [r7, #4] + 8001186: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8001188: e003 b.n 8001192 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 800118a: 887b ldrh r3, [r7, #2] + 800118c: 041a lsls r2, r3, #16 + 800118e: 687b ldr r3, [r7, #4] + 8001190: 619a str r2, [r3, #24] +} + 8001192: bf00 nop + 8001194: 370c adds r7, #12 + 8001196: 46bd mov sp, r7 + 8001198: bc80 pop {r7} + 800119a: 4770 bx lr + +0800119c : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 800119c: b580 push {r7, lr} + 800119e: b082 sub sp, #8 + 80011a0: af00 add r7, sp, #0 + 80011a2: 4603 mov r3, r0 + 80011a4: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 80011a6: 4b08 ldr r3, [pc, #32] @ (80011c8 ) + 80011a8: 695a ldr r2, [r3, #20] + 80011aa: 88fb ldrh r3, [r7, #6] + 80011ac: 4013 ands r3, r2 + 80011ae: 2b00 cmp r3, #0 + 80011b0: d006 beq.n 80011c0 + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 80011b2: 4a05 ldr r2, [pc, #20] @ (80011c8 ) + 80011b4: 88fb ldrh r3, [r7, #6] + 80011b6: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 80011b8: 88fb ldrh r3, [r7, #6] + 80011ba: 4618 mov r0, r3 + 80011bc: f7ff fafe bl 80007bc + } +} + 80011c0: bf00 nop + 80011c2: 3708 adds r7, #8 + 80011c4: 46bd mov sp, r7 + 80011c6: bd80 pop {r7, pc} + 80011c8: 40010400 .word 0x40010400 + +080011cc : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 80011cc: b580 push {r7, lr} + 80011ce: b088 sub sp, #32 + 80011d0: af00 add r7, sp, #0 + 80011d2: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 80011d4: 687b ldr r3, [r7, #4] + 80011d6: 2b00 cmp r3, #0 + 80011d8: d101 bne.n 80011de + { + return HAL_ERROR; + 80011da: 2301 movs r3, #1 + 80011dc: e31d b.n 800181a + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 80011de: 4b94 ldr r3, [pc, #592] @ (8001430 ) + 80011e0: 689b ldr r3, [r3, #8] + 80011e2: f003 030c and.w r3, r3, #12 + 80011e6: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 80011e8: 4b91 ldr r3, [pc, #580] @ (8001430 ) + 80011ea: 689b ldr r3, [r3, #8] + 80011ec: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80011f0: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 80011f2: 687b ldr r3, [r7, #4] + 80011f4: 681b ldr r3, [r3, #0] + 80011f6: f003 0301 and.w r3, r3, #1 + 80011fa: 2b00 cmp r3, #0 + 80011fc: d07b beq.n 80012f6 + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 80011fe: 69bb ldr r3, [r7, #24] + 8001200: 2b08 cmp r3, #8 + 8001202: d006 beq.n 8001212 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8001204: 69bb ldr r3, [r7, #24] + 8001206: 2b0c cmp r3, #12 + 8001208: d10f bne.n 800122a + 800120a: 697b ldr r3, [r7, #20] + 800120c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8001210: d10b bne.n 800122a + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001212: 4b87 ldr r3, [pc, #540] @ (8001430 ) + 8001214: 681b ldr r3, [r3, #0] + 8001216: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800121a: 2b00 cmp r3, #0 + 800121c: d06a beq.n 80012f4 + 800121e: 687b ldr r3, [r7, #4] + 8001220: 685b ldr r3, [r3, #4] + 8001222: 2b00 cmp r3, #0 + 8001224: d166 bne.n 80012f4 + { + return HAL_ERROR; + 8001226: 2301 movs r3, #1 + 8001228: e2f7 b.n 800181a + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 800122a: 687b ldr r3, [r7, #4] + 800122c: 685b ldr r3, [r3, #4] + 800122e: 2b01 cmp r3, #1 + 8001230: d106 bne.n 8001240 + 8001232: 4b7f ldr r3, [pc, #508] @ (8001430 ) + 8001234: 681b ldr r3, [r3, #0] + 8001236: 4a7e ldr r2, [pc, #504] @ (8001430 ) + 8001238: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 800123c: 6013 str r3, [r2, #0] + 800123e: e02d b.n 800129c + 8001240: 687b ldr r3, [r7, #4] + 8001242: 685b ldr r3, [r3, #4] + 8001244: 2b00 cmp r3, #0 + 8001246: d10c bne.n 8001262 + 8001248: 4b79 ldr r3, [pc, #484] @ (8001430 ) + 800124a: 681b ldr r3, [r3, #0] + 800124c: 4a78 ldr r2, [pc, #480] @ (8001430 ) + 800124e: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001252: 6013 str r3, [r2, #0] + 8001254: 4b76 ldr r3, [pc, #472] @ (8001430 ) + 8001256: 681b ldr r3, [r3, #0] + 8001258: 4a75 ldr r2, [pc, #468] @ (8001430 ) + 800125a: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800125e: 6013 str r3, [r2, #0] + 8001260: e01c b.n 800129c + 8001262: 687b ldr r3, [r7, #4] + 8001264: 685b ldr r3, [r3, #4] + 8001266: 2b05 cmp r3, #5 + 8001268: d10c bne.n 8001284 + 800126a: 4b71 ldr r3, [pc, #452] @ (8001430 ) + 800126c: 681b ldr r3, [r3, #0] + 800126e: 4a70 ldr r2, [pc, #448] @ (8001430 ) + 8001270: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8001274: 6013 str r3, [r2, #0] + 8001276: 4b6e ldr r3, [pc, #440] @ (8001430 ) + 8001278: 681b ldr r3, [r3, #0] + 800127a: 4a6d ldr r2, [pc, #436] @ (8001430 ) + 800127c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001280: 6013 str r3, [r2, #0] + 8001282: e00b b.n 800129c + 8001284: 4b6a ldr r3, [pc, #424] @ (8001430 ) + 8001286: 681b ldr r3, [r3, #0] + 8001288: 4a69 ldr r2, [pc, #420] @ (8001430 ) + 800128a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800128e: 6013 str r3, [r2, #0] + 8001290: 4b67 ldr r3, [pc, #412] @ (8001430 ) + 8001292: 681b ldr r3, [r3, #0] + 8001294: 4a66 ldr r2, [pc, #408] @ (8001430 ) + 8001296: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800129a: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 800129c: 687b ldr r3, [r7, #4] + 800129e: 685b ldr r3, [r3, #4] + 80012a0: 2b00 cmp r3, #0 + 80012a2: d013 beq.n 80012cc + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012a4: f7ff fcba bl 8000c1c + 80012a8: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80012aa: e008 b.n 80012be + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 80012ac: f7ff fcb6 bl 8000c1c + 80012b0: 4602 mov r2, r0 + 80012b2: 693b ldr r3, [r7, #16] + 80012b4: 1ad3 subs r3, r2, r3 + 80012b6: 2b64 cmp r3, #100 @ 0x64 + 80012b8: d901 bls.n 80012be + { + return HAL_TIMEOUT; + 80012ba: 2303 movs r3, #3 + 80012bc: e2ad b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80012be: 4b5c ldr r3, [pc, #368] @ (8001430 ) + 80012c0: 681b ldr r3, [r3, #0] + 80012c2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80012c6: 2b00 cmp r3, #0 + 80012c8: d0f0 beq.n 80012ac + 80012ca: e014 b.n 80012f6 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012cc: f7ff fca6 bl 8000c1c + 80012d0: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80012d2: e008 b.n 80012e6 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 80012d4: f7ff fca2 bl 8000c1c + 80012d8: 4602 mov r2, r0 + 80012da: 693b ldr r3, [r7, #16] + 80012dc: 1ad3 subs r3, r2, r3 + 80012de: 2b64 cmp r3, #100 @ 0x64 + 80012e0: d901 bls.n 80012e6 + { + return HAL_TIMEOUT; + 80012e2: 2303 movs r3, #3 + 80012e4: e299 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80012e6: 4b52 ldr r3, [pc, #328] @ (8001430 ) + 80012e8: 681b ldr r3, [r3, #0] + 80012ea: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80012ee: 2b00 cmp r3, #0 + 80012f0: d1f0 bne.n 80012d4 + 80012f2: e000 b.n 80012f6 + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80012f4: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80012f6: 687b ldr r3, [r7, #4] + 80012f8: 681b ldr r3, [r3, #0] + 80012fa: f003 0302 and.w r3, r3, #2 + 80012fe: 2b00 cmp r3, #0 + 8001300: d05a beq.n 80013b8 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 8001302: 69bb ldr r3, [r7, #24] + 8001304: 2b04 cmp r3, #4 + 8001306: d005 beq.n 8001314 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 8001308: 69bb ldr r3, [r7, #24] + 800130a: 2b0c cmp r3, #12 + 800130c: d119 bne.n 8001342 + 800130e: 697b ldr r3, [r7, #20] + 8001310: 2b00 cmp r3, #0 + 8001312: d116 bne.n 8001342 + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001314: 4b46 ldr r3, [pc, #280] @ (8001430 ) + 8001316: 681b ldr r3, [r3, #0] + 8001318: f003 0302 and.w r3, r3, #2 + 800131c: 2b00 cmp r3, #0 + 800131e: d005 beq.n 800132c + 8001320: 687b ldr r3, [r7, #4] + 8001322: 68db ldr r3, [r3, #12] + 8001324: 2b01 cmp r3, #1 + 8001326: d001 beq.n 800132c + { + return HAL_ERROR; + 8001328: 2301 movs r3, #1 + 800132a: e276 b.n 800181a + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800132c: 4b40 ldr r3, [pc, #256] @ (8001430 ) + 800132e: 685b ldr r3, [r3, #4] + 8001330: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001334: 687b ldr r3, [r7, #4] + 8001336: 691b ldr r3, [r3, #16] + 8001338: 021b lsls r3, r3, #8 + 800133a: 493d ldr r1, [pc, #244] @ (8001430 ) + 800133c: 4313 orrs r3, r2 + 800133e: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001340: e03a b.n 80013b8 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8001342: 687b ldr r3, [r7, #4] + 8001344: 68db ldr r3, [r3, #12] + 8001346: 2b00 cmp r3, #0 + 8001348: d020 beq.n 800138c + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 800134a: 4b3a ldr r3, [pc, #232] @ (8001434 ) + 800134c: 2201 movs r2, #1 + 800134e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001350: f7ff fc64 bl 8000c1c + 8001354: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001356: e008 b.n 800136a + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001358: f7ff fc60 bl 8000c1c + 800135c: 4602 mov r2, r0 + 800135e: 693b ldr r3, [r7, #16] + 8001360: 1ad3 subs r3, r2, r3 + 8001362: 2b02 cmp r3, #2 + 8001364: d901 bls.n 800136a + { + return HAL_TIMEOUT; + 8001366: 2303 movs r3, #3 + 8001368: e257 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800136a: 4b31 ldr r3, [pc, #196] @ (8001430 ) + 800136c: 681b ldr r3, [r3, #0] + 800136e: f003 0302 and.w r3, r3, #2 + 8001372: 2b00 cmp r3, #0 + 8001374: d0f0 beq.n 8001358 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001376: 4b2e ldr r3, [pc, #184] @ (8001430 ) + 8001378: 685b ldr r3, [r3, #4] + 800137a: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 800137e: 687b ldr r3, [r7, #4] + 8001380: 691b ldr r3, [r3, #16] + 8001382: 021b lsls r3, r3, #8 + 8001384: 492a ldr r1, [pc, #168] @ (8001430 ) + 8001386: 4313 orrs r3, r2 + 8001388: 604b str r3, [r1, #4] + 800138a: e015 b.n 80013b8 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 800138c: 4b29 ldr r3, [pc, #164] @ (8001434 ) + 800138e: 2200 movs r2, #0 + 8001390: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001392: f7ff fc43 bl 8000c1c + 8001396: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001398: e008 b.n 80013ac + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800139a: f7ff fc3f bl 8000c1c + 800139e: 4602 mov r2, r0 + 80013a0: 693b ldr r3, [r7, #16] + 80013a2: 1ad3 subs r3, r2, r3 + 80013a4: 2b02 cmp r3, #2 + 80013a6: d901 bls.n 80013ac + { + return HAL_TIMEOUT; + 80013a8: 2303 movs r3, #3 + 80013aa: e236 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 80013ac: 4b20 ldr r3, [pc, #128] @ (8001430 ) + 80013ae: 681b ldr r3, [r3, #0] + 80013b0: f003 0302 and.w r3, r3, #2 + 80013b4: 2b00 cmp r3, #0 + 80013b6: d1f0 bne.n 800139a + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 80013b8: 687b ldr r3, [r7, #4] + 80013ba: 681b ldr r3, [r3, #0] + 80013bc: f003 0310 and.w r3, r3, #16 + 80013c0: 2b00 cmp r3, #0 + 80013c2: f000 80b8 beq.w 8001536 + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 80013c6: 69bb ldr r3, [r7, #24] + 80013c8: 2b00 cmp r3, #0 + 80013ca: d170 bne.n 80014ae + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 80013cc: 4b18 ldr r3, [pc, #96] @ (8001430 ) + 80013ce: 681b ldr r3, [r3, #0] + 80013d0: f403 7300 and.w r3, r3, #512 @ 0x200 + 80013d4: 2b00 cmp r3, #0 + 80013d6: d005 beq.n 80013e4 + 80013d8: 687b ldr r3, [r7, #4] + 80013da: 699b ldr r3, [r3, #24] + 80013dc: 2b00 cmp r3, #0 + 80013de: d101 bne.n 80013e4 + { + return HAL_ERROR; + 80013e0: 2301 movs r3, #1 + 80013e2: e21a b.n 800181a + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 80013e4: 687b ldr r3, [r7, #4] + 80013e6: 6a1a ldr r2, [r3, #32] + 80013e8: 4b11 ldr r3, [pc, #68] @ (8001430 ) + 80013ea: 685b ldr r3, [r3, #4] + 80013ec: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80013f0: 429a cmp r2, r3 + 80013f2: d921 bls.n 8001438 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80013f4: 687b ldr r3, [r7, #4] + 80013f6: 6a1b ldr r3, [r3, #32] + 80013f8: 4618 mov r0, r3 + 80013fa: f000 fc09 bl 8001c10 + 80013fe: 4603 mov r3, r0 + 8001400: 2b00 cmp r3, #0 + 8001402: d001 beq.n 8001408 + { + return HAL_ERROR; + 8001404: 2301 movs r3, #1 + 8001406: e208 b.n 800181a + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001408: 4b09 ldr r3, [pc, #36] @ (8001430 ) + 800140a: 685b ldr r3, [r3, #4] + 800140c: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001410: 687b ldr r3, [r7, #4] + 8001412: 6a1b ldr r3, [r3, #32] + 8001414: 4906 ldr r1, [pc, #24] @ (8001430 ) + 8001416: 4313 orrs r3, r2 + 8001418: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800141a: 4b05 ldr r3, [pc, #20] @ (8001430 ) + 800141c: 685b ldr r3, [r3, #4] + 800141e: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001422: 687b ldr r3, [r7, #4] + 8001424: 69db ldr r3, [r3, #28] + 8001426: 061b lsls r3, r3, #24 + 8001428: 4901 ldr r1, [pc, #4] @ (8001430 ) + 800142a: 4313 orrs r3, r2 + 800142c: 604b str r3, [r1, #4] + 800142e: e020 b.n 8001472 + 8001430: 40023800 .word 0x40023800 + 8001434: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001438: 4b99 ldr r3, [pc, #612] @ (80016a0 ) + 800143a: 685b ldr r3, [r3, #4] + 800143c: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001440: 687b ldr r3, [r7, #4] + 8001442: 6a1b ldr r3, [r3, #32] + 8001444: 4996 ldr r1, [pc, #600] @ (80016a0 ) + 8001446: 4313 orrs r3, r2 + 8001448: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800144a: 4b95 ldr r3, [pc, #596] @ (80016a0 ) + 800144c: 685b ldr r3, [r3, #4] + 800144e: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001452: 687b ldr r3, [r7, #4] + 8001454: 69db ldr r3, [r3, #28] + 8001456: 061b lsls r3, r3, #24 + 8001458: 4991 ldr r1, [pc, #580] @ (80016a0 ) + 800145a: 4313 orrs r3, r2 + 800145c: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 800145e: 687b ldr r3, [r7, #4] + 8001460: 6a1b ldr r3, [r3, #32] + 8001462: 4618 mov r0, r3 + 8001464: f000 fbd4 bl 8001c10 + 8001468: 4603 mov r3, r0 + 800146a: 2b00 cmp r3, #0 + 800146c: d001 beq.n 8001472 + { + return HAL_ERROR; + 800146e: 2301 movs r3, #1 + 8001470: e1d3 b.n 800181a + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001472: 687b ldr r3, [r7, #4] + 8001474: 6a1b ldr r3, [r3, #32] + 8001476: 0b5b lsrs r3, r3, #13 + 8001478: 3301 adds r3, #1 + 800147a: f44f 4200 mov.w r2, #32768 @ 0x8000 + 800147e: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8001482: 4a87 ldr r2, [pc, #540] @ (80016a0 ) + 8001484: 6892 ldr r2, [r2, #8] + 8001486: 0912 lsrs r2, r2, #4 + 8001488: f002 020f and.w r2, r2, #15 + 800148c: 4985 ldr r1, [pc, #532] @ (80016a4 ) + 800148e: 5c8a ldrb r2, [r1, r2] + 8001490: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001492: 4a85 ldr r2, [pc, #532] @ (80016a8 ) + 8001494: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001496: 4b85 ldr r3, [pc, #532] @ (80016ac ) + 8001498: 681b ldr r3, [r3, #0] + 800149a: 4618 mov r0, r3 + 800149c: f7ff fb72 bl 8000b84 + 80014a0: 4603 mov r3, r0 + 80014a2: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 80014a4: 7bfb ldrb r3, [r7, #15] + 80014a6: 2b00 cmp r3, #0 + 80014a8: d045 beq.n 8001536 + { + return status; + 80014aa: 7bfb ldrb r3, [r7, #15] + 80014ac: e1b5 b.n 800181a + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 80014ae: 687b ldr r3, [r7, #4] + 80014b0: 699b ldr r3, [r3, #24] + 80014b2: 2b00 cmp r3, #0 + 80014b4: d029 beq.n 800150a + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 80014b6: 4b7e ldr r3, [pc, #504] @ (80016b0 ) + 80014b8: 2201 movs r2, #1 + 80014ba: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80014bc: f7ff fbae bl 8000c1c + 80014c0: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80014c2: e008 b.n 80014d6 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80014c4: f7ff fbaa bl 8000c1c + 80014c8: 4602 mov r2, r0 + 80014ca: 693b ldr r3, [r7, #16] + 80014cc: 1ad3 subs r3, r2, r3 + 80014ce: 2b02 cmp r3, #2 + 80014d0: d901 bls.n 80014d6 + { + return HAL_TIMEOUT; + 80014d2: 2303 movs r3, #3 + 80014d4: e1a1 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80014d6: 4b72 ldr r3, [pc, #456] @ (80016a0 ) + 80014d8: 681b ldr r3, [r3, #0] + 80014da: f403 7300 and.w r3, r3, #512 @ 0x200 + 80014de: 2b00 cmp r3, #0 + 80014e0: d0f0 beq.n 80014c4 + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80014e2: 4b6f ldr r3, [pc, #444] @ (80016a0 ) + 80014e4: 685b ldr r3, [r3, #4] + 80014e6: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80014ea: 687b ldr r3, [r7, #4] + 80014ec: 6a1b ldr r3, [r3, #32] + 80014ee: 496c ldr r1, [pc, #432] @ (80016a0 ) + 80014f0: 4313 orrs r3, r2 + 80014f2: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80014f4: 4b6a ldr r3, [pc, #424] @ (80016a0 ) + 80014f6: 685b ldr r3, [r3, #4] + 80014f8: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80014fc: 687b ldr r3, [r7, #4] + 80014fe: 69db ldr r3, [r3, #28] + 8001500: 061b lsls r3, r3, #24 + 8001502: 4967 ldr r1, [pc, #412] @ (80016a0 ) + 8001504: 4313 orrs r3, r2 + 8001506: 604b str r3, [r1, #4] + 8001508: e015 b.n 8001536 + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 800150a: 4b69 ldr r3, [pc, #420] @ (80016b0 ) + 800150c: 2200 movs r2, #0 + 800150e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001510: f7ff fb84 bl 8000c1c + 8001514: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 8001516: e008 b.n 800152a + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001518: f7ff fb80 bl 8000c1c + 800151c: 4602 mov r2, r0 + 800151e: 693b ldr r3, [r7, #16] + 8001520: 1ad3 subs r3, r2, r3 + 8001522: 2b02 cmp r3, #2 + 8001524: d901 bls.n 800152a + { + return HAL_TIMEOUT; + 8001526: 2303 movs r3, #3 + 8001528: e177 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 800152a: 4b5d ldr r3, [pc, #372] @ (80016a0 ) + 800152c: 681b ldr r3, [r3, #0] + 800152e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001532: 2b00 cmp r3, #0 + 8001534: d1f0 bne.n 8001518 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 8001536: 687b ldr r3, [r7, #4] + 8001538: 681b ldr r3, [r3, #0] + 800153a: f003 0308 and.w r3, r3, #8 + 800153e: 2b00 cmp r3, #0 + 8001540: d030 beq.n 80015a4 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8001542: 687b ldr r3, [r7, #4] + 8001544: 695b ldr r3, [r3, #20] + 8001546: 2b00 cmp r3, #0 + 8001548: d016 beq.n 8001578 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 800154a: 4b5a ldr r3, [pc, #360] @ (80016b4 ) + 800154c: 2201 movs r2, #1 + 800154e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001550: f7ff fb64 bl 8000c1c + 8001554: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001556: e008 b.n 800156a + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001558: f7ff fb60 bl 8000c1c + 800155c: 4602 mov r2, r0 + 800155e: 693b ldr r3, [r7, #16] + 8001560: 1ad3 subs r3, r2, r3 + 8001562: 2b02 cmp r3, #2 + 8001564: d901 bls.n 800156a + { + return HAL_TIMEOUT; + 8001566: 2303 movs r3, #3 + 8001568: e157 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800156a: 4b4d ldr r3, [pc, #308] @ (80016a0 ) + 800156c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800156e: f003 0302 and.w r3, r3, #2 + 8001572: 2b00 cmp r3, #0 + 8001574: d0f0 beq.n 8001558 + 8001576: e015 b.n 80015a4 + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001578: 4b4e ldr r3, [pc, #312] @ (80016b4 ) + 800157a: 2200 movs r2, #0 + 800157c: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800157e: f7ff fb4d bl 8000c1c + 8001582: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001584: e008 b.n 8001598 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001586: f7ff fb49 bl 8000c1c + 800158a: 4602 mov r2, r0 + 800158c: 693b ldr r3, [r7, #16] + 800158e: 1ad3 subs r3, r2, r3 + 8001590: 2b02 cmp r3, #2 + 8001592: d901 bls.n 8001598 + { + return HAL_TIMEOUT; + 8001594: 2303 movs r3, #3 + 8001596: e140 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001598: 4b41 ldr r3, [pc, #260] @ (80016a0 ) + 800159a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800159c: f003 0302 and.w r3, r3, #2 + 80015a0: 2b00 cmp r3, #0 + 80015a2: d1f0 bne.n 8001586 + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 80015a4: 687b ldr r3, [r7, #4] + 80015a6: 681b ldr r3, [r3, #0] + 80015a8: f003 0304 and.w r3, r3, #4 + 80015ac: 2b00 cmp r3, #0 + 80015ae: f000 80b5 beq.w 800171c + { + FlagStatus pwrclkchanged = RESET; + 80015b2: 2300 movs r3, #0 + 80015b4: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 80015b6: 4b3a ldr r3, [pc, #232] @ (80016a0 ) + 80015b8: 6a5b ldr r3, [r3, #36] @ 0x24 + 80015ba: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80015be: 2b00 cmp r3, #0 + 80015c0: d10d bne.n 80015de + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80015c2: 4b37 ldr r3, [pc, #220] @ (80016a0 ) + 80015c4: 6a5b ldr r3, [r3, #36] @ 0x24 + 80015c6: 4a36 ldr r2, [pc, #216] @ (80016a0 ) + 80015c8: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80015cc: 6253 str r3, [r2, #36] @ 0x24 + 80015ce: 4b34 ldr r3, [pc, #208] @ (80016a0 ) + 80015d0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80015d2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80015d6: 60bb str r3, [r7, #8] + 80015d8: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 80015da: 2301 movs r3, #1 + 80015dc: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80015de: 4b36 ldr r3, [pc, #216] @ (80016b8 ) + 80015e0: 681b ldr r3, [r3, #0] + 80015e2: f403 7380 and.w r3, r3, #256 @ 0x100 + 80015e6: 2b00 cmp r3, #0 + 80015e8: d118 bne.n 800161c + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80015ea: 4b33 ldr r3, [pc, #204] @ (80016b8 ) + 80015ec: 681b ldr r3, [r3, #0] + 80015ee: 4a32 ldr r2, [pc, #200] @ (80016b8 ) + 80015f0: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80015f4: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80015f6: f7ff fb11 bl 8000c1c + 80015fa: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80015fc: e008 b.n 8001610 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80015fe: f7ff fb0d bl 8000c1c + 8001602: 4602 mov r2, r0 + 8001604: 693b ldr r3, [r7, #16] + 8001606: 1ad3 subs r3, r2, r3 + 8001608: 2b64 cmp r3, #100 @ 0x64 + 800160a: d901 bls.n 8001610 + { + return HAL_TIMEOUT; + 800160c: 2303 movs r3, #3 + 800160e: e104 b.n 800181a + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001610: 4b29 ldr r3, [pc, #164] @ (80016b8 ) + 8001612: 681b ldr r3, [r3, #0] + 8001614: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001618: 2b00 cmp r3, #0 + 800161a: d0f0 beq.n 80015fe + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 800161c: 687b ldr r3, [r7, #4] + 800161e: 689b ldr r3, [r3, #8] + 8001620: 2b01 cmp r3, #1 + 8001622: d106 bne.n 8001632 + 8001624: 4b1e ldr r3, [pc, #120] @ (80016a0 ) + 8001626: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001628: 4a1d ldr r2, [pc, #116] @ (80016a0 ) + 800162a: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800162e: 6353 str r3, [r2, #52] @ 0x34 + 8001630: e02d b.n 800168e + 8001632: 687b ldr r3, [r7, #4] + 8001634: 689b ldr r3, [r3, #8] + 8001636: 2b00 cmp r3, #0 + 8001638: d10c bne.n 8001654 + 800163a: 4b19 ldr r3, [pc, #100] @ (80016a0 ) + 800163c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800163e: 4a18 ldr r2, [pc, #96] @ (80016a0 ) + 8001640: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001644: 6353 str r3, [r2, #52] @ 0x34 + 8001646: 4b16 ldr r3, [pc, #88] @ (80016a0 ) + 8001648: 6b5b ldr r3, [r3, #52] @ 0x34 + 800164a: 4a15 ldr r2, [pc, #84] @ (80016a0 ) + 800164c: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001650: 6353 str r3, [r2, #52] @ 0x34 + 8001652: e01c b.n 800168e + 8001654: 687b ldr r3, [r7, #4] + 8001656: 689b ldr r3, [r3, #8] + 8001658: 2b05 cmp r3, #5 + 800165a: d10c bne.n 8001676 + 800165c: 4b10 ldr r3, [pc, #64] @ (80016a0 ) + 800165e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001660: 4a0f ldr r2, [pc, #60] @ (80016a0 ) + 8001662: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8001666: 6353 str r3, [r2, #52] @ 0x34 + 8001668: 4b0d ldr r3, [pc, #52] @ (80016a0 ) + 800166a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800166c: 4a0c ldr r2, [pc, #48] @ (80016a0 ) + 800166e: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001672: 6353 str r3, [r2, #52] @ 0x34 + 8001674: e00b b.n 800168e + 8001676: 4b0a ldr r3, [pc, #40] @ (80016a0 ) + 8001678: 6b5b ldr r3, [r3, #52] @ 0x34 + 800167a: 4a09 ldr r2, [pc, #36] @ (80016a0 ) + 800167c: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001680: 6353 str r3, [r2, #52] @ 0x34 + 8001682: 4b07 ldr r3, [pc, #28] @ (80016a0 ) + 8001684: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001686: 4a06 ldr r2, [pc, #24] @ (80016a0 ) + 8001688: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800168c: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 800168e: 687b ldr r3, [r7, #4] + 8001690: 689b ldr r3, [r3, #8] + 8001692: 2b00 cmp r3, #0 + 8001694: d024 beq.n 80016e0 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001696: f7ff fac1 bl 8000c1c + 800169a: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 800169c: e019 b.n 80016d2 + 800169e: bf00 nop + 80016a0: 40023800 .word 0x40023800 + 80016a4: 08002a08 .word 0x08002a08 + 80016a8: 20000000 .word 0x20000000 + 80016ac: 20000004 .word 0x20000004 + 80016b0: 42470020 .word 0x42470020 + 80016b4: 42470680 .word 0x42470680 + 80016b8: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80016bc: f7ff faae bl 8000c1c + 80016c0: 4602 mov r2, r0 + 80016c2: 693b ldr r3, [r7, #16] + 80016c4: 1ad3 subs r3, r2, r3 + 80016c6: f241 3288 movw r2, #5000 @ 0x1388 + 80016ca: 4293 cmp r3, r2 + 80016cc: d901 bls.n 80016d2 + { + return HAL_TIMEOUT; + 80016ce: 2303 movs r3, #3 + 80016d0: e0a3 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 80016d2: 4b54 ldr r3, [pc, #336] @ (8001824 ) + 80016d4: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016d6: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016da: 2b00 cmp r3, #0 + 80016dc: d0ee beq.n 80016bc + 80016de: e014 b.n 800170a + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80016e0: f7ff fa9c bl 8000c1c + 80016e4: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80016e6: e00a b.n 80016fe + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80016e8: f7ff fa98 bl 8000c1c + 80016ec: 4602 mov r2, r0 + 80016ee: 693b ldr r3, [r7, #16] + 80016f0: 1ad3 subs r3, r2, r3 + 80016f2: f241 3288 movw r2, #5000 @ 0x1388 + 80016f6: 4293 cmp r3, r2 + 80016f8: d901 bls.n 80016fe + { + return HAL_TIMEOUT; + 80016fa: 2303 movs r3, #3 + 80016fc: e08d b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80016fe: 4b49 ldr r3, [pc, #292] @ (8001824 ) + 8001700: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001702: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001706: 2b00 cmp r3, #0 + 8001708: d1ee bne.n 80016e8 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 800170a: 7ffb ldrb r3, [r7, #31] + 800170c: 2b01 cmp r3, #1 + 800170e: d105 bne.n 800171c + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8001710: 4b44 ldr r3, [pc, #272] @ (8001824 ) + 8001712: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001714: 4a43 ldr r2, [pc, #268] @ (8001824 ) + 8001716: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 800171a: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 800171c: 687b ldr r3, [r7, #4] + 800171e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001720: 2b00 cmp r3, #0 + 8001722: d079 beq.n 8001818 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001724: 69bb ldr r3, [r7, #24] + 8001726: 2b0c cmp r3, #12 + 8001728: d056 beq.n 80017d8 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 800172a: 687b ldr r3, [r7, #4] + 800172c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800172e: 2b02 cmp r3, #2 + 8001730: d13b bne.n 80017aa + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001732: 4b3d ldr r3, [pc, #244] @ (8001828 ) + 8001734: 2200 movs r2, #0 + 8001736: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001738: f7ff fa70 bl 8000c1c + 800173c: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800173e: e008 b.n 8001752 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001740: f7ff fa6c bl 8000c1c + 8001744: 4602 mov r2, r0 + 8001746: 693b ldr r3, [r7, #16] + 8001748: 1ad3 subs r3, r2, r3 + 800174a: 2b02 cmp r3, #2 + 800174c: d901 bls.n 8001752 + { + return HAL_TIMEOUT; + 800174e: 2303 movs r3, #3 + 8001750: e063 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001752: 4b34 ldr r3, [pc, #208] @ (8001824 ) + 8001754: 681b ldr r3, [r3, #0] + 8001756: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800175a: 2b00 cmp r3, #0 + 800175c: d1f0 bne.n 8001740 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 800175e: 4b31 ldr r3, [pc, #196] @ (8001824 ) + 8001760: 689b ldr r3, [r3, #8] + 8001762: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 8001766: 687b ldr r3, [r7, #4] + 8001768: 6a99 ldr r1, [r3, #40] @ 0x28 + 800176a: 687b ldr r3, [r7, #4] + 800176c: 6adb ldr r3, [r3, #44] @ 0x2c + 800176e: 4319 orrs r1, r3 + 8001770: 687b ldr r3, [r7, #4] + 8001772: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001774: 430b orrs r3, r1 + 8001776: 492b ldr r1, [pc, #172] @ (8001824 ) + 8001778: 4313 orrs r3, r2 + 800177a: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 800177c: 4b2a ldr r3, [pc, #168] @ (8001828 ) + 800177e: 2201 movs r2, #1 + 8001780: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001782: f7ff fa4b bl 8000c1c + 8001786: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001788: e008 b.n 800179c + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800178a: f7ff fa47 bl 8000c1c + 800178e: 4602 mov r2, r0 + 8001790: 693b ldr r3, [r7, #16] + 8001792: 1ad3 subs r3, r2, r3 + 8001794: 2b02 cmp r3, #2 + 8001796: d901 bls.n 800179c + { + return HAL_TIMEOUT; + 8001798: 2303 movs r3, #3 + 800179a: e03e b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800179c: 4b21 ldr r3, [pc, #132] @ (8001824 ) + 800179e: 681b ldr r3, [r3, #0] + 80017a0: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80017a4: 2b00 cmp r3, #0 + 80017a6: d0f0 beq.n 800178a + 80017a8: e036 b.n 8001818 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80017aa: 4b1f ldr r3, [pc, #124] @ (8001828 ) + 80017ac: 2200 movs r2, #0 + 80017ae: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80017b0: f7ff fa34 bl 8000c1c + 80017b4: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80017b6: e008 b.n 80017ca + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80017b8: f7ff fa30 bl 8000c1c + 80017bc: 4602 mov r2, r0 + 80017be: 693b ldr r3, [r7, #16] + 80017c0: 1ad3 subs r3, r2, r3 + 80017c2: 2b02 cmp r3, #2 + 80017c4: d901 bls.n 80017ca + { + return HAL_TIMEOUT; + 80017c6: 2303 movs r3, #3 + 80017c8: e027 b.n 800181a + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80017ca: 4b16 ldr r3, [pc, #88] @ (8001824 ) + 80017cc: 681b ldr r3, [r3, #0] + 80017ce: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80017d2: 2b00 cmp r3, #0 + 80017d4: d1f0 bne.n 80017b8 + 80017d6: e01f b.n 8001818 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 80017d8: 687b ldr r3, [r7, #4] + 80017da: 6a5b ldr r3, [r3, #36] @ 0x24 + 80017dc: 2b01 cmp r3, #1 + 80017de: d101 bne.n 80017e4 + { + return HAL_ERROR; + 80017e0: 2301 movs r3, #1 + 80017e2: e01a b.n 800181a + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 80017e4: 4b0f ldr r3, [pc, #60] @ (8001824 ) + 80017e6: 689b ldr r3, [r3, #8] + 80017e8: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80017ea: 697b ldr r3, [r7, #20] + 80017ec: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 80017f0: 687b ldr r3, [r7, #4] + 80017f2: 6a9b ldr r3, [r3, #40] @ 0x28 + 80017f4: 429a cmp r2, r3 + 80017f6: d10d bne.n 8001814 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80017f8: 697b ldr r3, [r7, #20] + 80017fa: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 80017fe: 687b ldr r3, [r7, #4] + 8001800: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8001802: 429a cmp r2, r3 + 8001804: d106 bne.n 8001814 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 8001806: 697b ldr r3, [r7, #20] + 8001808: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 800180c: 687b ldr r3, [r7, #4] + 800180e: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001810: 429a cmp r2, r3 + 8001812: d001 beq.n 8001818 + { + return HAL_ERROR; + 8001814: 2301 movs r3, #1 + 8001816: e000 b.n 800181a + } + } + } + } + + return HAL_OK; + 8001818: 2300 movs r3, #0 +} + 800181a: 4618 mov r0, r3 + 800181c: 3720 adds r7, #32 + 800181e: 46bd mov sp, r7 + 8001820: bd80 pop {r7, pc} + 8001822: bf00 nop + 8001824: 40023800 .word 0x40023800 + 8001828: 42470060 .word 0x42470060 + +0800182c : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 800182c: b580 push {r7, lr} + 800182e: b084 sub sp, #16 + 8001830: af00 add r7, sp, #0 + 8001832: 6078 str r0, [r7, #4] + 8001834: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 8001836: 687b ldr r3, [r7, #4] + 8001838: 2b00 cmp r3, #0 + 800183a: d101 bne.n 8001840 + { + return HAL_ERROR; + 800183c: 2301 movs r3, #1 + 800183e: e11a b.n 8001a76 + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001840: 4b8f ldr r3, [pc, #572] @ (8001a80 ) + 8001842: 681b ldr r3, [r3, #0] + 8001844: f003 0301 and.w r3, r3, #1 + 8001848: 683a ldr r2, [r7, #0] + 800184a: 429a cmp r2, r3 + 800184c: d919 bls.n 8001882 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 800184e: 683b ldr r3, [r7, #0] + 8001850: 2b01 cmp r3, #1 + 8001852: d105 bne.n 8001860 + 8001854: 4b8a ldr r3, [pc, #552] @ (8001a80 ) + 8001856: 681b ldr r3, [r3, #0] + 8001858: 4a89 ldr r2, [pc, #548] @ (8001a80 ) + 800185a: f043 0304 orr.w r3, r3, #4 + 800185e: 6013 str r3, [r2, #0] + 8001860: 4b87 ldr r3, [pc, #540] @ (8001a80 ) + 8001862: 681b ldr r3, [r3, #0] + 8001864: f023 0201 bic.w r2, r3, #1 + 8001868: 4985 ldr r1, [pc, #532] @ (8001a80 ) + 800186a: 683b ldr r3, [r7, #0] + 800186c: 4313 orrs r3, r2 + 800186e: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001870: 4b83 ldr r3, [pc, #524] @ (8001a80 ) + 8001872: 681b ldr r3, [r3, #0] + 8001874: f003 0301 and.w r3, r3, #1 + 8001878: 683a ldr r2, [r7, #0] + 800187a: 429a cmp r2, r3 + 800187c: d001 beq.n 8001882 + { + return HAL_ERROR; + 800187e: 2301 movs r3, #1 + 8001880: e0f9 b.n 8001a76 + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001882: 687b ldr r3, [r7, #4] + 8001884: 681b ldr r3, [r3, #0] + 8001886: f003 0302 and.w r3, r3, #2 + 800188a: 2b00 cmp r3, #0 + 800188c: d008 beq.n 80018a0 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 800188e: 4b7d ldr r3, [pc, #500] @ (8001a84 ) + 8001890: 689b ldr r3, [r3, #8] + 8001892: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001896: 687b ldr r3, [r7, #4] + 8001898: 689b ldr r3, [r3, #8] + 800189a: 497a ldr r1, [pc, #488] @ (8001a84 ) + 800189c: 4313 orrs r3, r2 + 800189e: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 80018a0: 687b ldr r3, [r7, #4] + 80018a2: 681b ldr r3, [r3, #0] + 80018a4: f003 0301 and.w r3, r3, #1 + 80018a8: 2b00 cmp r3, #0 + 80018aa: f000 808e beq.w 80019ca + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80018ae: 687b ldr r3, [r7, #4] + 80018b0: 685b ldr r3, [r3, #4] + 80018b2: 2b02 cmp r3, #2 + 80018b4: d107 bne.n 80018c6 + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80018b6: 4b73 ldr r3, [pc, #460] @ (8001a84 ) + 80018b8: 681b ldr r3, [r3, #0] + 80018ba: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80018be: 2b00 cmp r3, #0 + 80018c0: d121 bne.n 8001906 + { + return HAL_ERROR; + 80018c2: 2301 movs r3, #1 + 80018c4: e0d7 b.n 8001a76 + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80018c6: 687b ldr r3, [r7, #4] + 80018c8: 685b ldr r3, [r3, #4] + 80018ca: 2b03 cmp r3, #3 + 80018cc: d107 bne.n 80018de + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 80018ce: 4b6d ldr r3, [pc, #436] @ (8001a84 ) + 80018d0: 681b ldr r3, [r3, #0] + 80018d2: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80018d6: 2b00 cmp r3, #0 + 80018d8: d115 bne.n 8001906 + { + return HAL_ERROR; + 80018da: 2301 movs r3, #1 + 80018dc: e0cb b.n 8001a76 + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 80018de: 687b ldr r3, [r7, #4] + 80018e0: 685b ldr r3, [r3, #4] + 80018e2: 2b01 cmp r3, #1 + 80018e4: d107 bne.n 80018f6 + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80018e6: 4b67 ldr r3, [pc, #412] @ (8001a84 ) + 80018e8: 681b ldr r3, [r3, #0] + 80018ea: f003 0302 and.w r3, r3, #2 + 80018ee: 2b00 cmp r3, #0 + 80018f0: d109 bne.n 8001906 + { + return HAL_ERROR; + 80018f2: 2301 movs r3, #1 + 80018f4: e0bf b.n 8001a76 + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80018f6: 4b63 ldr r3, [pc, #396] @ (8001a84 ) + 80018f8: 681b ldr r3, [r3, #0] + 80018fa: f403 7300 and.w r3, r3, #512 @ 0x200 + 80018fe: 2b00 cmp r3, #0 + 8001900: d101 bne.n 8001906 + { + return HAL_ERROR; + 8001902: 2301 movs r3, #1 + 8001904: e0b7 b.n 8001a76 + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8001906: 4b5f ldr r3, [pc, #380] @ (8001a84 ) + 8001908: 689b ldr r3, [r3, #8] + 800190a: f023 0203 bic.w r2, r3, #3 + 800190e: 687b ldr r3, [r7, #4] + 8001910: 685b ldr r3, [r3, #4] + 8001912: 495c ldr r1, [pc, #368] @ (8001a84 ) + 8001914: 4313 orrs r3, r2 + 8001916: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001918: f7ff f980 bl 8000c1c + 800191c: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 800191e: 687b ldr r3, [r7, #4] + 8001920: 685b ldr r3, [r3, #4] + 8001922: 2b02 cmp r3, #2 + 8001924: d112 bne.n 800194c + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001926: e00a b.n 800193e + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001928: f7ff f978 bl 8000c1c + 800192c: 4602 mov r2, r0 + 800192e: 68fb ldr r3, [r7, #12] + 8001930: 1ad3 subs r3, r2, r3 + 8001932: f241 3288 movw r2, #5000 @ 0x1388 + 8001936: 4293 cmp r3, r2 + 8001938: d901 bls.n 800193e + { + return HAL_TIMEOUT; + 800193a: 2303 movs r3, #3 + 800193c: e09b b.n 8001a76 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 800193e: 4b51 ldr r3, [pc, #324] @ (8001a84 ) + 8001940: 689b ldr r3, [r3, #8] + 8001942: f003 030c and.w r3, r3, #12 + 8001946: 2b08 cmp r3, #8 + 8001948: d1ee bne.n 8001928 + 800194a: e03e b.n 80019ca + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 800194c: 687b ldr r3, [r7, #4] + 800194e: 685b ldr r3, [r3, #4] + 8001950: 2b03 cmp r3, #3 + 8001952: d112 bne.n 800197a + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001954: e00a b.n 800196c + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001956: f7ff f961 bl 8000c1c + 800195a: 4602 mov r2, r0 + 800195c: 68fb ldr r3, [r7, #12] + 800195e: 1ad3 subs r3, r2, r3 + 8001960: f241 3288 movw r2, #5000 @ 0x1388 + 8001964: 4293 cmp r3, r2 + 8001966: d901 bls.n 800196c + { + return HAL_TIMEOUT; + 8001968: 2303 movs r3, #3 + 800196a: e084 b.n 8001a76 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800196c: 4b45 ldr r3, [pc, #276] @ (8001a84 ) + 800196e: 689b ldr r3, [r3, #8] + 8001970: f003 030c and.w r3, r3, #12 + 8001974: 2b0c cmp r3, #12 + 8001976: d1ee bne.n 8001956 + 8001978: e027 b.n 80019ca + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 800197a: 687b ldr r3, [r7, #4] + 800197c: 685b ldr r3, [r3, #4] + 800197e: 2b01 cmp r3, #1 + 8001980: d11d bne.n 80019be + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001982: e00a b.n 800199a + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001984: f7ff f94a bl 8000c1c + 8001988: 4602 mov r2, r0 + 800198a: 68fb ldr r3, [r7, #12] + 800198c: 1ad3 subs r3, r2, r3 + 800198e: f241 3288 movw r2, #5000 @ 0x1388 + 8001992: 4293 cmp r3, r2 + 8001994: d901 bls.n 800199a + { + return HAL_TIMEOUT; + 8001996: 2303 movs r3, #3 + 8001998: e06d b.n 8001a76 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 800199a: 4b3a ldr r3, [pc, #232] @ (8001a84 ) + 800199c: 689b ldr r3, [r3, #8] + 800199e: f003 030c and.w r3, r3, #12 + 80019a2: 2b04 cmp r3, #4 + 80019a4: d1ee bne.n 8001984 + 80019a6: e010 b.n 80019ca + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80019a8: f7ff f938 bl 8000c1c + 80019ac: 4602 mov r2, r0 + 80019ae: 68fb ldr r3, [r7, #12] + 80019b0: 1ad3 subs r3, r2, r3 + 80019b2: f241 3288 movw r2, #5000 @ 0x1388 + 80019b6: 4293 cmp r3, r2 + 80019b8: d901 bls.n 80019be + { + return HAL_TIMEOUT; + 80019ba: 2303 movs r3, #3 + 80019bc: e05b b.n 8001a76 + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 80019be: 4b31 ldr r3, [pc, #196] @ (8001a84 ) + 80019c0: 689b ldr r3, [r3, #8] + 80019c2: f003 030c and.w r3, r3, #12 + 80019c6: 2b00 cmp r3, #0 + 80019c8: d1ee bne.n 80019a8 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 80019ca: 4b2d ldr r3, [pc, #180] @ (8001a80 ) + 80019cc: 681b ldr r3, [r3, #0] + 80019ce: f003 0301 and.w r3, r3, #1 + 80019d2: 683a ldr r2, [r7, #0] + 80019d4: 429a cmp r2, r3 + 80019d6: d219 bcs.n 8001a0c + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80019d8: 683b ldr r3, [r7, #0] + 80019da: 2b01 cmp r3, #1 + 80019dc: d105 bne.n 80019ea + 80019de: 4b28 ldr r3, [pc, #160] @ (8001a80 ) + 80019e0: 681b ldr r3, [r3, #0] + 80019e2: 4a27 ldr r2, [pc, #156] @ (8001a80 ) + 80019e4: f043 0304 orr.w r3, r3, #4 + 80019e8: 6013 str r3, [r2, #0] + 80019ea: 4b25 ldr r3, [pc, #148] @ (8001a80 ) + 80019ec: 681b ldr r3, [r3, #0] + 80019ee: f023 0201 bic.w r2, r3, #1 + 80019f2: 4923 ldr r1, [pc, #140] @ (8001a80 ) + 80019f4: 683b ldr r3, [r7, #0] + 80019f6: 4313 orrs r3, r2 + 80019f8: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 80019fa: 4b21 ldr r3, [pc, #132] @ (8001a80 ) + 80019fc: 681b ldr r3, [r3, #0] + 80019fe: f003 0301 and.w r3, r3, #1 + 8001a02: 683a ldr r2, [r7, #0] + 8001a04: 429a cmp r2, r3 + 8001a06: d001 beq.n 8001a0c + { + return HAL_ERROR; + 8001a08: 2301 movs r3, #1 + 8001a0a: e034 b.n 8001a76 + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001a0c: 687b ldr r3, [r7, #4] + 8001a0e: 681b ldr r3, [r3, #0] + 8001a10: f003 0304 and.w r3, r3, #4 + 8001a14: 2b00 cmp r3, #0 + 8001a16: d008 beq.n 8001a2a + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001a18: 4b1a ldr r3, [pc, #104] @ (8001a84 ) + 8001a1a: 689b ldr r3, [r3, #8] + 8001a1c: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001a20: 687b ldr r3, [r7, #4] + 8001a22: 68db ldr r3, [r3, #12] + 8001a24: 4917 ldr r1, [pc, #92] @ (8001a84 ) + 8001a26: 4313 orrs r3, r2 + 8001a28: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001a2a: 687b ldr r3, [r7, #4] + 8001a2c: 681b ldr r3, [r3, #0] + 8001a2e: f003 0308 and.w r3, r3, #8 + 8001a32: 2b00 cmp r3, #0 + 8001a34: d009 beq.n 8001a4a + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001a36: 4b13 ldr r3, [pc, #76] @ (8001a84 ) + 8001a38: 689b ldr r3, [r3, #8] + 8001a3a: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001a3e: 687b ldr r3, [r7, #4] + 8001a40: 691b ldr r3, [r3, #16] + 8001a42: 00db lsls r3, r3, #3 + 8001a44: 490f ldr r1, [pc, #60] @ (8001a84 ) + 8001a46: 4313 orrs r3, r2 + 8001a48: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001a4a: f000 f823 bl 8001a94 + 8001a4e: 4602 mov r2, r0 + 8001a50: 4b0c ldr r3, [pc, #48] @ (8001a84 ) + 8001a52: 689b ldr r3, [r3, #8] + 8001a54: 091b lsrs r3, r3, #4 + 8001a56: f003 030f and.w r3, r3, #15 + 8001a5a: 490b ldr r1, [pc, #44] @ (8001a88 ) + 8001a5c: 5ccb ldrb r3, [r1, r3] + 8001a5e: fa22 f303 lsr.w r3, r2, r3 + 8001a62: 4a0a ldr r2, [pc, #40] @ (8001a8c ) + 8001a64: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001a66: 4b0a ldr r3, [pc, #40] @ (8001a90 ) + 8001a68: 681b ldr r3, [r3, #0] + 8001a6a: 4618 mov r0, r3 + 8001a6c: f7ff f88a bl 8000b84 + 8001a70: 4603 mov r3, r0 + 8001a72: 72fb strb r3, [r7, #11] + + return status; + 8001a74: 7afb ldrb r3, [r7, #11] +} + 8001a76: 4618 mov r0, r3 + 8001a78: 3710 adds r7, #16 + 8001a7a: 46bd mov sp, r7 + 8001a7c: bd80 pop {r7, pc} + 8001a7e: bf00 nop + 8001a80: 40023c00 .word 0x40023c00 + 8001a84: 40023800 .word 0x40023800 + 8001a88: 08002a08 .word 0x08002a08 + 8001a8c: 20000000 .word 0x20000000 + 8001a90: 20000004 .word 0x20000004 + +08001a94 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001a94: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001a98: b08e sub sp, #56 @ 0x38 + 8001a9a: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001a9c: 4b58 ldr r3, [pc, #352] @ (8001c00 ) + 8001a9e: 689b ldr r3, [r3, #8] + 8001aa0: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001aa2: 6afb ldr r3, [r7, #44] @ 0x2c + 8001aa4: f003 030c and.w r3, r3, #12 + 8001aa8: 2b0c cmp r3, #12 + 8001aaa: d00d beq.n 8001ac8 + 8001aac: 2b0c cmp r3, #12 + 8001aae: f200 8092 bhi.w 8001bd6 + 8001ab2: 2b04 cmp r3, #4 + 8001ab4: d002 beq.n 8001abc + 8001ab6: 2b08 cmp r3, #8 + 8001ab8: d003 beq.n 8001ac2 + 8001aba: e08c b.n 8001bd6 + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001abc: 4b51 ldr r3, [pc, #324] @ (8001c04 ) + 8001abe: 633b str r3, [r7, #48] @ 0x30 + break; + 8001ac0: e097 b.n 8001bf2 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001ac2: 4b51 ldr r3, [pc, #324] @ (8001c08 ) + 8001ac4: 633b str r3, [r7, #48] @ 0x30 + break; + 8001ac6: e094 b.n 8001bf2 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001ac8: 6afb ldr r3, [r7, #44] @ 0x2c + 8001aca: 0c9b lsrs r3, r3, #18 + 8001acc: f003 020f and.w r2, r3, #15 + 8001ad0: 4b4e ldr r3, [pc, #312] @ (8001c0c ) + 8001ad2: 5c9b ldrb r3, [r3, r2] + 8001ad4: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001ad6: 6afb ldr r3, [r7, #44] @ 0x2c + 8001ad8: 0d9b lsrs r3, r3, #22 + 8001ada: f003 0303 and.w r3, r3, #3 + 8001ade: 3301 adds r3, #1 + 8001ae0: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001ae2: 4b47 ldr r3, [pc, #284] @ (8001c00 ) + 8001ae4: 689b ldr r3, [r3, #8] + 8001ae6: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001aea: 2b00 cmp r3, #0 + 8001aec: d021 beq.n 8001b32 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001aee: 6abb ldr r3, [r7, #40] @ 0x28 + 8001af0: 2200 movs r2, #0 + 8001af2: 61bb str r3, [r7, #24] + 8001af4: 61fa str r2, [r7, #28] + 8001af6: 4b44 ldr r3, [pc, #272] @ (8001c08 ) + 8001af8: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001afc: 464a mov r2, r9 + 8001afe: fb03 f202 mul.w r2, r3, r2 + 8001b02: 2300 movs r3, #0 + 8001b04: 4644 mov r4, r8 + 8001b06: fb04 f303 mul.w r3, r4, r3 + 8001b0a: 4413 add r3, r2 + 8001b0c: 4a3e ldr r2, [pc, #248] @ (8001c08 ) + 8001b0e: 4644 mov r4, r8 + 8001b10: fba4 0102 umull r0, r1, r4, r2 + 8001b14: 440b add r3, r1 + 8001b16: 4619 mov r1, r3 + 8001b18: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001b1a: 2200 movs r2, #0 + 8001b1c: 613b str r3, [r7, #16] + 8001b1e: 617a str r2, [r7, #20] + 8001b20: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001b24: f7fe fb2a bl 800017c <__aeabi_uldivmod> + 8001b28: 4602 mov r2, r0 + 8001b2a: 460b mov r3, r1 + 8001b2c: 4613 mov r3, r2 + 8001b2e: 637b str r3, [r7, #52] @ 0x34 + 8001b30: e04e b.n 8001bd0 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001b32: 6abb ldr r3, [r7, #40] @ 0x28 + 8001b34: 2200 movs r2, #0 + 8001b36: 469a mov sl, r3 + 8001b38: 4693 mov fp, r2 + 8001b3a: 4652 mov r2, sl + 8001b3c: 465b mov r3, fp + 8001b3e: f04f 0000 mov.w r0, #0 + 8001b42: f04f 0100 mov.w r1, #0 + 8001b46: 0159 lsls r1, r3, #5 + 8001b48: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001b4c: 0150 lsls r0, r2, #5 + 8001b4e: 4602 mov r2, r0 + 8001b50: 460b mov r3, r1 + 8001b52: ebb2 080a subs.w r8, r2, sl + 8001b56: eb63 090b sbc.w r9, r3, fp + 8001b5a: f04f 0200 mov.w r2, #0 + 8001b5e: f04f 0300 mov.w r3, #0 + 8001b62: ea4f 1389 mov.w r3, r9, lsl #6 + 8001b66: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001b6a: ea4f 1288 mov.w r2, r8, lsl #6 + 8001b6e: ebb2 0408 subs.w r4, r2, r8 + 8001b72: eb63 0509 sbc.w r5, r3, r9 + 8001b76: f04f 0200 mov.w r2, #0 + 8001b7a: f04f 0300 mov.w r3, #0 + 8001b7e: 00eb lsls r3, r5, #3 + 8001b80: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001b84: 00e2 lsls r2, r4, #3 + 8001b86: 4614 mov r4, r2 + 8001b88: 461d mov r5, r3 + 8001b8a: eb14 030a adds.w r3, r4, sl + 8001b8e: 603b str r3, [r7, #0] + 8001b90: eb45 030b adc.w r3, r5, fp + 8001b94: 607b str r3, [r7, #4] + 8001b96: f04f 0200 mov.w r2, #0 + 8001b9a: f04f 0300 mov.w r3, #0 + 8001b9e: e9d7 4500 ldrd r4, r5, [r7] + 8001ba2: 4629 mov r1, r5 + 8001ba4: 028b lsls r3, r1, #10 + 8001ba6: 4620 mov r0, r4 + 8001ba8: 4629 mov r1, r5 + 8001baa: 4604 mov r4, r0 + 8001bac: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001bb0: 4601 mov r1, r0 + 8001bb2: 028a lsls r2, r1, #10 + 8001bb4: 4610 mov r0, r2 + 8001bb6: 4619 mov r1, r3 + 8001bb8: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001bba: 2200 movs r2, #0 + 8001bbc: 60bb str r3, [r7, #8] + 8001bbe: 60fa str r2, [r7, #12] + 8001bc0: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001bc4: f7fe fada bl 800017c <__aeabi_uldivmod> + 8001bc8: 4602 mov r2, r0 + 8001bca: 460b mov r3, r1 + 8001bcc: 4613 mov r3, r2 + 8001bce: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001bd0: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001bd2: 633b str r3, [r7, #48] @ 0x30 + break; + 8001bd4: e00d b.n 8001bf2 + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001bd6: 4b0a ldr r3, [pc, #40] @ (8001c00 ) + 8001bd8: 685b ldr r3, [r3, #4] + 8001bda: 0b5b lsrs r3, r3, #13 + 8001bdc: f003 0307 and.w r3, r3, #7 + 8001be0: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001be2: 6a3b ldr r3, [r7, #32] + 8001be4: 3301 adds r3, #1 + 8001be6: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001bea: fa02 f303 lsl.w r3, r2, r3 + 8001bee: 633b str r3, [r7, #48] @ 0x30 + break; + 8001bf0: bf00 nop + } + } + return sysclockfreq; + 8001bf2: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001bf4: 4618 mov r0, r3 + 8001bf6: 3738 adds r7, #56 @ 0x38 + 8001bf8: 46bd mov sp, r7 + 8001bfa: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001bfe: bf00 nop + 8001c00: 40023800 .word 0x40023800 + 8001c04: 00f42400 .word 0x00f42400 + 8001c08: 016e3600 .word 0x016e3600 + 8001c0c: 080029fc .word 0x080029fc + +08001c10 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001c10: b480 push {r7} + 8001c12: b087 sub sp, #28 + 8001c14: af00 add r7, sp, #0 + 8001c16: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001c18: 2300 movs r3, #0 + 8001c1a: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001c1c: 4b29 ldr r3, [pc, #164] @ (8001cc4 ) + 8001c1e: 689b ldr r3, [r3, #8] + 8001c20: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001c24: 2b00 cmp r3, #0 + 8001c26: d12c bne.n 8001c82 + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001c28: 4b26 ldr r3, [pc, #152] @ (8001cc4 ) + 8001c2a: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001c2c: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001c30: 2b00 cmp r3, #0 + 8001c32: d005 beq.n 8001c40 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001c34: 4b24 ldr r3, [pc, #144] @ (8001cc8 ) + 8001c36: 681b ldr r3, [r3, #0] + 8001c38: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001c3c: 617b str r3, [r7, #20] + 8001c3e: e016 b.n 8001c6e + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001c40: 4b20 ldr r3, [pc, #128] @ (8001cc4 ) + 8001c42: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001c44: 4a1f ldr r2, [pc, #124] @ (8001cc4 ) + 8001c46: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001c4a: 6253 str r3, [r2, #36] @ 0x24 + 8001c4c: 4b1d ldr r3, [pc, #116] @ (8001cc4 ) + 8001c4e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001c50: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001c54: 60fb str r3, [r7, #12] + 8001c56: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001c58: 4b1b ldr r3, [pc, #108] @ (8001cc8 ) + 8001c5a: 681b ldr r3, [r3, #0] + 8001c5c: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001c60: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001c62: 4b18 ldr r3, [pc, #96] @ (8001cc4 ) + 8001c64: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001c66: 4a17 ldr r2, [pc, #92] @ (8001cc4 ) + 8001c68: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001c6c: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001c6e: 697b ldr r3, [r7, #20] + 8001c70: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001c74: d105 bne.n 8001c82 + 8001c76: 687b ldr r3, [r7, #4] + 8001c78: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001c7c: d101 bne.n 8001c82 + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001c7e: 2301 movs r3, #1 + 8001c80: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001c82: 693b ldr r3, [r7, #16] + 8001c84: 2b01 cmp r3, #1 + 8001c86: d105 bne.n 8001c94 + 8001c88: 4b10 ldr r3, [pc, #64] @ (8001ccc ) + 8001c8a: 681b ldr r3, [r3, #0] + 8001c8c: 4a0f ldr r2, [pc, #60] @ (8001ccc ) + 8001c8e: f043 0304 orr.w r3, r3, #4 + 8001c92: 6013 str r3, [r2, #0] + 8001c94: 4b0d ldr r3, [pc, #52] @ (8001ccc ) + 8001c96: 681b ldr r3, [r3, #0] + 8001c98: f023 0201 bic.w r2, r3, #1 + 8001c9c: 490b ldr r1, [pc, #44] @ (8001ccc ) + 8001c9e: 693b ldr r3, [r7, #16] + 8001ca0: 4313 orrs r3, r2 + 8001ca2: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001ca4: 4b09 ldr r3, [pc, #36] @ (8001ccc ) + 8001ca6: 681b ldr r3, [r3, #0] + 8001ca8: f003 0301 and.w r3, r3, #1 + 8001cac: 693a ldr r2, [r7, #16] + 8001cae: 429a cmp r2, r3 + 8001cb0: d001 beq.n 8001cb6 + { + return HAL_ERROR; + 8001cb2: 2301 movs r3, #1 + 8001cb4: e000 b.n 8001cb8 + } + + return HAL_OK; + 8001cb6: 2300 movs r3, #0 +} + 8001cb8: 4618 mov r0, r3 + 8001cba: 371c adds r7, #28 + 8001cbc: 46bd mov sp, r7 + 8001cbe: bc80 pop {r7} + 8001cc0: 4770 bx lr + 8001cc2: bf00 nop + 8001cc4: 40023800 .word 0x40023800 + 8001cc8: 40007000 .word 0x40007000 + 8001ccc: 40023c00 .word 0x40023c00 + +08001cd0 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001cd0: b580 push {r7, lr} + 8001cd2: b082 sub sp, #8 + 8001cd4: af00 add r7, sp, #0 + 8001cd6: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001cd8: 687b ldr r3, [r7, #4] + 8001cda: 2b00 cmp r3, #0 + 8001cdc: d101 bne.n 8001ce2 + { + return HAL_ERROR; + 8001cde: 2301 movs r3, #1 + 8001ce0: e07b b.n 8001dda + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001ce2: 687b ldr r3, [r7, #4] + 8001ce4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ce6: 2b00 cmp r3, #0 + 8001ce8: d108 bne.n 8001cfc + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001cea: 687b ldr r3, [r7, #4] + 8001cec: 685b ldr r3, [r3, #4] + 8001cee: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001cf2: d009 beq.n 8001d08 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001cf4: 687b ldr r3, [r7, #4] + 8001cf6: 2200 movs r2, #0 + 8001cf8: 61da str r2, [r3, #28] + 8001cfa: e005 b.n 8001d08 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001cfc: 687b ldr r3, [r7, #4] + 8001cfe: 2200 movs r2, #0 + 8001d00: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001d02: 687b ldr r3, [r7, #4] + 8001d04: 2200 movs r2, #0 + 8001d06: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001d08: 687b ldr r3, [r7, #4] + 8001d0a: 2200 movs r2, #0 + 8001d0c: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001d0e: 687b ldr r3, [r7, #4] + 8001d10: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001d14: b2db uxtb r3, r3 + 8001d16: 2b00 cmp r3, #0 + 8001d18: d106 bne.n 8001d28 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001d1a: 687b ldr r3, [r7, #4] + 8001d1c: 2200 movs r2, #0 + 8001d1e: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001d22: 6878 ldr r0, [r7, #4] + 8001d24: f7fe fdae bl 8000884 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001d28: 687b ldr r3, [r7, #4] + 8001d2a: 2202 movs r2, #2 + 8001d2c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001d30: 687b ldr r3, [r7, #4] + 8001d32: 681b ldr r3, [r3, #0] + 8001d34: 681a ldr r2, [r3, #0] + 8001d36: 687b ldr r3, [r7, #4] + 8001d38: 681b ldr r3, [r3, #0] + 8001d3a: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001d3e: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001d40: 687b ldr r3, [r7, #4] + 8001d42: 685b ldr r3, [r3, #4] + 8001d44: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001d48: 687b ldr r3, [r7, #4] + 8001d4a: 689b ldr r3, [r3, #8] + 8001d4c: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001d50: 431a orrs r2, r3 + 8001d52: 687b ldr r3, [r7, #4] + 8001d54: 68db ldr r3, [r3, #12] + 8001d56: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001d5a: 431a orrs r2, r3 + 8001d5c: 687b ldr r3, [r7, #4] + 8001d5e: 691b ldr r3, [r3, #16] + 8001d60: f003 0302 and.w r3, r3, #2 + 8001d64: 431a orrs r2, r3 + 8001d66: 687b ldr r3, [r7, #4] + 8001d68: 695b ldr r3, [r3, #20] + 8001d6a: f003 0301 and.w r3, r3, #1 + 8001d6e: 431a orrs r2, r3 + 8001d70: 687b ldr r3, [r7, #4] + 8001d72: 699b ldr r3, [r3, #24] + 8001d74: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001d78: 431a orrs r2, r3 + 8001d7a: 687b ldr r3, [r7, #4] + 8001d7c: 69db ldr r3, [r3, #28] + 8001d7e: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001d82: 431a orrs r2, r3 + 8001d84: 687b ldr r3, [r7, #4] + 8001d86: 6a1b ldr r3, [r3, #32] + 8001d88: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001d8c: ea42 0103 orr.w r1, r2, r3 + 8001d90: 687b ldr r3, [r7, #4] + 8001d92: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001d94: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001d98: 687b ldr r3, [r7, #4] + 8001d9a: 681b ldr r3, [r3, #0] + 8001d9c: 430a orrs r2, r1 + 8001d9e: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001da0: 687b ldr r3, [r7, #4] + 8001da2: 699b ldr r3, [r3, #24] + 8001da4: 0c1b lsrs r3, r3, #16 + 8001da6: f003 0104 and.w r1, r3, #4 + 8001daa: 687b ldr r3, [r7, #4] + 8001dac: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001dae: f003 0210 and.w r2, r3, #16 + 8001db2: 687b ldr r3, [r7, #4] + 8001db4: 681b ldr r3, [r3, #0] + 8001db6: 430a orrs r2, r1 + 8001db8: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001dba: 687b ldr r3, [r7, #4] + 8001dbc: 681b ldr r3, [r3, #0] + 8001dbe: 69da ldr r2, [r3, #28] + 8001dc0: 687b ldr r3, [r7, #4] + 8001dc2: 681b ldr r3, [r3, #0] + 8001dc4: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001dc8: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001dca: 687b ldr r3, [r7, #4] + 8001dcc: 2200 movs r2, #0 + 8001dce: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001dd0: 687b ldr r3, [r7, #4] + 8001dd2: 2201 movs r2, #1 + 8001dd4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001dd8: 2300 movs r3, #0 +} + 8001dda: 4618 mov r0, r3 + 8001ddc: 3708 adds r7, #8 + 8001dde: 46bd mov sp, r7 + 8001de0: bd80 pop {r7, pc} + +08001de2 : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001de2: b580 push {r7, lr} + 8001de4: b088 sub sp, #32 + 8001de6: af00 add r7, sp, #0 + 8001de8: 60f8 str r0, [r7, #12] + 8001dea: 60b9 str r1, [r7, #8] + 8001dec: 603b str r3, [r7, #0] + 8001dee: 4613 mov r3, r2 + 8001df0: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001df2: f7fe ff13 bl 8000c1c + 8001df6: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001df8: 88fb ldrh r3, [r7, #6] + 8001dfa: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001dfc: 68fb ldr r3, [r7, #12] + 8001dfe: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001e02: b2db uxtb r3, r3 + 8001e04: 2b01 cmp r3, #1 + 8001e06: d001 beq.n 8001e0c + { + return HAL_BUSY; + 8001e08: 2302 movs r3, #2 + 8001e0a: e12a b.n 8002062 + } + + if ((pData == NULL) || (Size == 0U)) + 8001e0c: 68bb ldr r3, [r7, #8] + 8001e0e: 2b00 cmp r3, #0 + 8001e10: d002 beq.n 8001e18 + 8001e12: 88fb ldrh r3, [r7, #6] + 8001e14: 2b00 cmp r3, #0 + 8001e16: d101 bne.n 8001e1c + { + return HAL_ERROR; + 8001e18: 2301 movs r3, #1 + 8001e1a: e122 b.n 8002062 + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001e1c: 68fb ldr r3, [r7, #12] + 8001e1e: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001e22: 2b01 cmp r3, #1 + 8001e24: d101 bne.n 8001e2a + 8001e26: 2302 movs r3, #2 + 8001e28: e11b b.n 8002062 + 8001e2a: 68fb ldr r3, [r7, #12] + 8001e2c: 2201 movs r2, #1 + 8001e2e: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001e32: 68fb ldr r3, [r7, #12] + 8001e34: 2203 movs r2, #3 + 8001e36: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001e3a: 68fb ldr r3, [r7, #12] + 8001e3c: 2200 movs r2, #0 + 8001e3e: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001e40: 68fb ldr r3, [r7, #12] + 8001e42: 68ba ldr r2, [r7, #8] + 8001e44: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001e46: 68fb ldr r3, [r7, #12] + 8001e48: 88fa ldrh r2, [r7, #6] + 8001e4a: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8001e4c: 68fb ldr r3, [r7, #12] + 8001e4e: 88fa ldrh r2, [r7, #6] + 8001e50: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8001e52: 68fb ldr r3, [r7, #12] + 8001e54: 2200 movs r2, #0 + 8001e56: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8001e58: 68fb ldr r3, [r7, #12] + 8001e5a: 2200 movs r2, #0 + 8001e5c: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8001e5e: 68fb ldr r3, [r7, #12] + 8001e60: 2200 movs r2, #0 + 8001e62: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8001e64: 68fb ldr r3, [r7, #12] + 8001e66: 2200 movs r2, #0 + 8001e68: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8001e6a: 68fb ldr r3, [r7, #12] + 8001e6c: 2200 movs r2, #0 + 8001e6e: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001e70: 68fb ldr r3, [r7, #12] + 8001e72: 689b ldr r3, [r3, #8] + 8001e74: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001e78: d10f bne.n 8001e9a + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8001e7a: 68fb ldr r3, [r7, #12] + 8001e7c: 681b ldr r3, [r3, #0] + 8001e7e: 681a ldr r2, [r3, #0] + 8001e80: 68fb ldr r3, [r7, #12] + 8001e82: 681b ldr r3, [r3, #0] + 8001e84: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001e88: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8001e8a: 68fb ldr r3, [r7, #12] + 8001e8c: 681b ldr r3, [r3, #0] + 8001e8e: 681a ldr r2, [r3, #0] + 8001e90: 68fb ldr r3, [r7, #12] + 8001e92: 681b ldr r3, [r3, #0] + 8001e94: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8001e98: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8001e9a: 68fb ldr r3, [r7, #12] + 8001e9c: 681b ldr r3, [r3, #0] + 8001e9e: 681b ldr r3, [r3, #0] + 8001ea0: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001ea4: 2b40 cmp r3, #64 @ 0x40 + 8001ea6: d007 beq.n 8001eb8 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8001ea8: 68fb ldr r3, [r7, #12] + 8001eaa: 681b ldr r3, [r3, #0] + 8001eac: 681a ldr r2, [r3, #0] + 8001eae: 68fb ldr r3, [r7, #12] + 8001eb0: 681b ldr r3, [r3, #0] + 8001eb2: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8001eb6: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8001eb8: 68fb ldr r3, [r7, #12] + 8001eba: 68db ldr r3, [r3, #12] + 8001ebc: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8001ec0: d152 bne.n 8001f68 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001ec2: 68fb ldr r3, [r7, #12] + 8001ec4: 685b ldr r3, [r3, #4] + 8001ec6: 2b00 cmp r3, #0 + 8001ec8: d002 beq.n 8001ed0 + 8001eca: 8b7b ldrh r3, [r7, #26] + 8001ecc: 2b01 cmp r3, #1 + 8001ece: d145 bne.n 8001f5c + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001ed0: 68fb ldr r3, [r7, #12] + 8001ed2: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001ed4: 881a ldrh r2, [r3, #0] + 8001ed6: 68fb ldr r3, [r7, #12] + 8001ed8: 681b ldr r3, [r3, #0] + 8001eda: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001edc: 68fb ldr r3, [r7, #12] + 8001ede: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001ee0: 1c9a adds r2, r3, #2 + 8001ee2: 68fb ldr r3, [r7, #12] + 8001ee4: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001ee6: 68fb ldr r3, [r7, #12] + 8001ee8: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001eea: b29b uxth r3, r3 + 8001eec: 3b01 subs r3, #1 + 8001eee: b29a uxth r2, r3 + 8001ef0: 68fb ldr r3, [r7, #12] + 8001ef2: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8001ef4: e032 b.n 8001f5c + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001ef6: 68fb ldr r3, [r7, #12] + 8001ef8: 681b ldr r3, [r3, #0] + 8001efa: 689b ldr r3, [r3, #8] + 8001efc: f003 0302 and.w r3, r3, #2 + 8001f00: 2b02 cmp r3, #2 + 8001f02: d112 bne.n 8001f2a + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001f04: 68fb ldr r3, [r7, #12] + 8001f06: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f08: 881a ldrh r2, [r3, #0] + 8001f0a: 68fb ldr r3, [r7, #12] + 8001f0c: 681b ldr r3, [r3, #0] + 8001f0e: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001f10: 68fb ldr r3, [r7, #12] + 8001f12: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f14: 1c9a adds r2, r3, #2 + 8001f16: 68fb ldr r3, [r7, #12] + 8001f18: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001f1a: 68fb ldr r3, [r7, #12] + 8001f1c: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f1e: b29b uxth r3, r3 + 8001f20: 3b01 subs r3, #1 + 8001f22: b29a uxth r2, r3 + 8001f24: 68fb ldr r3, [r7, #12] + 8001f26: 86da strh r2, [r3, #54] @ 0x36 + 8001f28: e018 b.n 8001f5c + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001f2a: f7fe fe77 bl 8000c1c + 8001f2e: 4602 mov r2, r0 + 8001f30: 69fb ldr r3, [r7, #28] + 8001f32: 1ad3 subs r3, r2, r3 + 8001f34: 683a ldr r2, [r7, #0] + 8001f36: 429a cmp r2, r3 + 8001f38: d803 bhi.n 8001f42 + 8001f3a: 683b ldr r3, [r7, #0] + 8001f3c: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001f40: d102 bne.n 8001f48 + 8001f42: 683b ldr r3, [r7, #0] + 8001f44: 2b00 cmp r3, #0 + 8001f46: d109 bne.n 8001f5c + { + hspi->State = HAL_SPI_STATE_READY; + 8001f48: 68fb ldr r3, [r7, #12] + 8001f4a: 2201 movs r2, #1 + 8001f4c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001f50: 68fb ldr r3, [r7, #12] + 8001f52: 2200 movs r2, #0 + 8001f54: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001f58: 2303 movs r3, #3 + 8001f5a: e082 b.n 8002062 + while (hspi->TxXferCount > 0U) + 8001f5c: 68fb ldr r3, [r7, #12] + 8001f5e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f60: b29b uxth r3, r3 + 8001f62: 2b00 cmp r3, #0 + 8001f64: d1c7 bne.n 8001ef6 + 8001f66: e053 b.n 8002010 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001f68: 68fb ldr r3, [r7, #12] + 8001f6a: 685b ldr r3, [r3, #4] + 8001f6c: 2b00 cmp r3, #0 + 8001f6e: d002 beq.n 8001f76 + 8001f70: 8b7b ldrh r3, [r7, #26] + 8001f72: 2b01 cmp r3, #1 + 8001f74: d147 bne.n 8002006 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001f76: 68fb ldr r3, [r7, #12] + 8001f78: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001f7a: 68fb ldr r3, [r7, #12] + 8001f7c: 681b ldr r3, [r3, #0] + 8001f7e: 330c adds r3, #12 + 8001f80: 7812 ldrb r2, [r2, #0] + 8001f82: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001f84: 68fb ldr r3, [r7, #12] + 8001f86: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f88: 1c5a adds r2, r3, #1 + 8001f8a: 68fb ldr r3, [r7, #12] + 8001f8c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001f8e: 68fb ldr r3, [r7, #12] + 8001f90: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f92: b29b uxth r3, r3 + 8001f94: 3b01 subs r3, #1 + 8001f96: b29a uxth r2, r3 + 8001f98: 68fb ldr r3, [r7, #12] + 8001f9a: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8001f9c: e033 b.n 8002006 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001f9e: 68fb ldr r3, [r7, #12] + 8001fa0: 681b ldr r3, [r3, #0] + 8001fa2: 689b ldr r3, [r3, #8] + 8001fa4: f003 0302 and.w r3, r3, #2 + 8001fa8: 2b02 cmp r3, #2 + 8001faa: d113 bne.n 8001fd4 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001fac: 68fb ldr r3, [r7, #12] + 8001fae: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001fb0: 68fb ldr r3, [r7, #12] + 8001fb2: 681b ldr r3, [r3, #0] + 8001fb4: 330c adds r3, #12 + 8001fb6: 7812 ldrb r2, [r2, #0] + 8001fb8: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001fba: 68fb ldr r3, [r7, #12] + 8001fbc: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001fbe: 1c5a adds r2, r3, #1 + 8001fc0: 68fb ldr r3, [r7, #12] + 8001fc2: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001fc4: 68fb ldr r3, [r7, #12] + 8001fc6: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001fc8: b29b uxth r3, r3 + 8001fca: 3b01 subs r3, #1 + 8001fcc: b29a uxth r2, r3 + 8001fce: 68fb ldr r3, [r7, #12] + 8001fd0: 86da strh r2, [r3, #54] @ 0x36 + 8001fd2: e018 b.n 8002006 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001fd4: f7fe fe22 bl 8000c1c + 8001fd8: 4602 mov r2, r0 + 8001fda: 69fb ldr r3, [r7, #28] + 8001fdc: 1ad3 subs r3, r2, r3 + 8001fde: 683a ldr r2, [r7, #0] + 8001fe0: 429a cmp r2, r3 + 8001fe2: d803 bhi.n 8001fec + 8001fe4: 683b ldr r3, [r7, #0] + 8001fe6: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001fea: d102 bne.n 8001ff2 + 8001fec: 683b ldr r3, [r7, #0] + 8001fee: 2b00 cmp r3, #0 + 8001ff0: d109 bne.n 8002006 + { + hspi->State = HAL_SPI_STATE_READY; + 8001ff2: 68fb ldr r3, [r7, #12] + 8001ff4: 2201 movs r2, #1 + 8001ff6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001ffa: 68fb ldr r3, [r7, #12] + 8001ffc: 2200 movs r2, #0 + 8001ffe: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8002002: 2303 movs r3, #3 + 8002004: e02d b.n 8002062 + while (hspi->TxXferCount > 0U) + 8002006: 68fb ldr r3, [r7, #12] + 8002008: 8edb ldrh r3, [r3, #54] @ 0x36 + 800200a: b29b uxth r3, r3 + 800200c: 2b00 cmp r3, #0 + 800200e: d1c6 bne.n 8001f9e + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8002010: 69fa ldr r2, [r7, #28] + 8002012: 6839 ldr r1, [r7, #0] + 8002014: 68f8 ldr r0, [r7, #12] + 8002016: f000 f8b1 bl 800217c + 800201a: 4603 mov r3, r0 + 800201c: 2b00 cmp r3, #0 + 800201e: d002 beq.n 8002026 + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8002020: 68fb ldr r3, [r7, #12] + 8002022: 2220 movs r2, #32 + 8002024: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 8002026: 68fb ldr r3, [r7, #12] + 8002028: 689b ldr r3, [r3, #8] + 800202a: 2b00 cmp r3, #0 + 800202c: d10a bne.n 8002044 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 800202e: 2300 movs r3, #0 + 8002030: 617b str r3, [r7, #20] + 8002032: 68fb ldr r3, [r7, #12] + 8002034: 681b ldr r3, [r3, #0] + 8002036: 68db ldr r3, [r3, #12] + 8002038: 617b str r3, [r7, #20] + 800203a: 68fb ldr r3, [r7, #12] + 800203c: 681b ldr r3, [r3, #0] + 800203e: 689b ldr r3, [r3, #8] + 8002040: 617b str r3, [r7, #20] + 8002042: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 8002044: 68fb ldr r3, [r7, #12] + 8002046: 2201 movs r2, #1 + 8002048: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 800204c: 68fb ldr r3, [r7, #12] + 800204e: 2200 movs r2, #0 + 8002050: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8002054: 68fb ldr r3, [r7, #12] + 8002056: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002058: 2b00 cmp r3, #0 + 800205a: d001 beq.n 8002060 + { + return HAL_ERROR; + 800205c: 2301 movs r3, #1 + 800205e: e000 b.n 8002062 + } + else + { + return HAL_OK; + 8002060: 2300 movs r3, #0 + } +} + 8002062: 4618 mov r0, r3 + 8002064: 3720 adds r7, #32 + 8002066: 46bd mov sp, r7 + 8002068: bd80 pop {r7, pc} + ... + +0800206c : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 800206c: b580 push {r7, lr} + 800206e: b088 sub sp, #32 + 8002070: af00 add r7, sp, #0 + 8002072: 60f8 str r0, [r7, #12] + 8002074: 60b9 str r1, [r7, #8] + 8002076: 603b str r3, [r7, #0] + 8002078: 4613 mov r3, r2 + 800207a: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 800207c: f7fe fdce bl 8000c1c + 8002080: 4602 mov r2, r0 + 8002082: 6abb ldr r3, [r7, #40] @ 0x28 + 8002084: 1a9b subs r3, r3, r2 + 8002086: 683a ldr r2, [r7, #0] + 8002088: 4413 add r3, r2 + 800208a: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 800208c: f7fe fdc6 bl 8000c1c + 8002090: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8002092: 4b39 ldr r3, [pc, #228] @ (8002178 ) + 8002094: 681b ldr r3, [r3, #0] + 8002096: 015b lsls r3, r3, #5 + 8002098: 0d1b lsrs r3, r3, #20 + 800209a: 69fa ldr r2, [r7, #28] + 800209c: fb02 f303 mul.w r3, r2, r3 + 80020a0: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 80020a2: e054 b.n 800214e + { + if (Timeout != HAL_MAX_DELAY) + 80020a4: 683b ldr r3, [r7, #0] + 80020a6: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80020aa: d050 beq.n 800214e + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 80020ac: f7fe fdb6 bl 8000c1c + 80020b0: 4602 mov r2, r0 + 80020b2: 69bb ldr r3, [r7, #24] + 80020b4: 1ad3 subs r3, r2, r3 + 80020b6: 69fa ldr r2, [r7, #28] + 80020b8: 429a cmp r2, r3 + 80020ba: d902 bls.n 80020c2 + 80020bc: 69fb ldr r3, [r7, #28] + 80020be: 2b00 cmp r3, #0 + 80020c0: d13d bne.n 800213e + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 80020c2: 68fb ldr r3, [r7, #12] + 80020c4: 681b ldr r3, [r3, #0] + 80020c6: 685a ldr r2, [r3, #4] + 80020c8: 68fb ldr r3, [r7, #12] + 80020ca: 681b ldr r3, [r3, #0] + 80020cc: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 80020d0: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 80020d2: 68fb ldr r3, [r7, #12] + 80020d4: 685b ldr r3, [r3, #4] + 80020d6: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 80020da: d111 bne.n 8002100 + 80020dc: 68fb ldr r3, [r7, #12] + 80020de: 689b ldr r3, [r3, #8] + 80020e0: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 80020e4: d004 beq.n 80020f0 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 80020e6: 68fb ldr r3, [r7, #12] + 80020e8: 689b ldr r3, [r3, #8] + 80020ea: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80020ee: d107 bne.n 8002100 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80020f0: 68fb ldr r3, [r7, #12] + 80020f2: 681b ldr r3, [r3, #0] + 80020f4: 681a ldr r2, [r3, #0] + 80020f6: 68fb ldr r3, [r7, #12] + 80020f8: 681b ldr r3, [r3, #0] + 80020fa: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80020fe: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8002100: 68fb ldr r3, [r7, #12] + 8002102: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002104: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002108: d10f bne.n 800212a + { + SPI_RESET_CRC(hspi); + 800210a: 68fb ldr r3, [r7, #12] + 800210c: 681b ldr r3, [r3, #0] + 800210e: 681a ldr r2, [r3, #0] + 8002110: 68fb ldr r3, [r7, #12] + 8002112: 681b ldr r3, [r3, #0] + 8002114: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8002118: 601a str r2, [r3, #0] + 800211a: 68fb ldr r3, [r7, #12] + 800211c: 681b ldr r3, [r3, #0] + 800211e: 681a ldr r2, [r3, #0] + 8002120: 68fb ldr r3, [r7, #12] + 8002122: 681b ldr r3, [r3, #0] + 8002124: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8002128: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 800212a: 68fb ldr r3, [r7, #12] + 800212c: 2201 movs r2, #1 + 800212e: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8002132: 68fb ldr r3, [r7, #12] + 8002134: 2200 movs r2, #0 + 8002136: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 800213a: 2303 movs r3, #3 + 800213c: e017 b.n 800216e + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 800213e: 697b ldr r3, [r7, #20] + 8002140: 2b00 cmp r3, #0 + 8002142: d101 bne.n 8002148 + { + tmp_timeout = 0U; + 8002144: 2300 movs r3, #0 + 8002146: 61fb str r3, [r7, #28] + } + count--; + 8002148: 697b ldr r3, [r7, #20] + 800214a: 3b01 subs r3, #1 + 800214c: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 800214e: 68fb ldr r3, [r7, #12] + 8002150: 681b ldr r3, [r3, #0] + 8002152: 689a ldr r2, [r3, #8] + 8002154: 68bb ldr r3, [r7, #8] + 8002156: 4013 ands r3, r2 + 8002158: 68ba ldr r2, [r7, #8] + 800215a: 429a cmp r2, r3 + 800215c: bf0c ite eq + 800215e: 2301 moveq r3, #1 + 8002160: 2300 movne r3, #0 + 8002162: b2db uxtb r3, r3 + 8002164: 461a mov r2, r3 + 8002166: 79fb ldrb r3, [r7, #7] + 8002168: 429a cmp r2, r3 + 800216a: d19b bne.n 80020a4 + } + } + + return HAL_OK; + 800216c: 2300 movs r3, #0 +} + 800216e: 4618 mov r0, r3 + 8002170: 3720 adds r7, #32 + 8002172: 46bd mov sp, r7 + 8002174: bd80 pop {r7, pc} + 8002176: bf00 nop + 8002178: 20000000 .word 0x20000000 + +0800217c : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 800217c: b580 push {r7, lr} + 800217e: b088 sub sp, #32 + 8002180: af02 add r7, sp, #8 + 8002182: 60f8 str r0, [r7, #12] + 8002184: 60b9 str r1, [r7, #8] + 8002186: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8002188: 687b ldr r3, [r7, #4] + 800218a: 9300 str r3, [sp, #0] + 800218c: 68bb ldr r3, [r7, #8] + 800218e: 2201 movs r2, #1 + 8002190: 2102 movs r1, #2 + 8002192: 68f8 ldr r0, [r7, #12] + 8002194: f7ff ff6a bl 800206c + 8002198: 4603 mov r3, r0 + 800219a: 2b00 cmp r3, #0 + 800219c: d007 beq.n 80021ae + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 800219e: 68fb ldr r3, [r7, #12] + 80021a0: 6d5b ldr r3, [r3, #84] @ 0x54 + 80021a2: f043 0220 orr.w r2, r3, #32 + 80021a6: 68fb ldr r3, [r7, #12] + 80021a8: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80021aa: 2303 movs r3, #3 + 80021ac: e032 b.n 8002214 + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 80021ae: 4b1b ldr r3, [pc, #108] @ (800221c ) + 80021b0: 681b ldr r3, [r3, #0] + 80021b2: 4a1b ldr r2, [pc, #108] @ (8002220 ) + 80021b4: fba2 2303 umull r2, r3, r2, r3 + 80021b8: 0d5b lsrs r3, r3, #21 + 80021ba: f44f 727a mov.w r2, #1000 @ 0x3e8 + 80021be: fb02 f303 mul.w r3, r2, r3 + 80021c2: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 80021c4: 68fb ldr r3, [r7, #12] + 80021c6: 685b ldr r3, [r3, #4] + 80021c8: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 80021cc: d112 bne.n 80021f4 + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 80021ce: 687b ldr r3, [r7, #4] + 80021d0: 9300 str r3, [sp, #0] + 80021d2: 68bb ldr r3, [r7, #8] + 80021d4: 2200 movs r2, #0 + 80021d6: 2180 movs r1, #128 @ 0x80 + 80021d8: 68f8 ldr r0, [r7, #12] + 80021da: f7ff ff47 bl 800206c + 80021de: 4603 mov r3, r0 + 80021e0: 2b00 cmp r3, #0 + 80021e2: d016 beq.n 8002212 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 80021e4: 68fb ldr r3, [r7, #12] + 80021e6: 6d5b ldr r3, [r3, #84] @ 0x54 + 80021e8: f043 0220 orr.w r2, r3, #32 + 80021ec: 68fb ldr r3, [r7, #12] + 80021ee: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80021f0: 2303 movs r3, #3 + 80021f2: e00f b.n 8002214 + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 80021f4: 697b ldr r3, [r7, #20] + 80021f6: 2b00 cmp r3, #0 + 80021f8: d00a beq.n 8002210 + { + break; + } + count--; + 80021fa: 697b ldr r3, [r7, #20] + 80021fc: 3b01 subs r3, #1 + 80021fe: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8002200: 68fb ldr r3, [r7, #12] + 8002202: 681b ldr r3, [r3, #0] + 8002204: 689b ldr r3, [r3, #8] + 8002206: f003 0380 and.w r3, r3, #128 @ 0x80 + 800220a: 2b80 cmp r3, #128 @ 0x80 + 800220c: d0f2 beq.n 80021f4 + 800220e: e000 b.n 8002212 + break; + 8002210: bf00 nop + } + + return HAL_OK; + 8002212: 2300 movs r3, #0 +} + 8002214: 4618 mov r0, r3 + 8002216: 3718 adds r7, #24 + 8002218: 46bd mov sp, r7 + 800221a: bd80 pop {r7, pc} + 800221c: 20000000 .word 0x20000000 + 8002220: 165e9f81 .word 0x165e9f81 + +08002224 : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 8002224: b580 push {r7, lr} + 8002226: b082 sub sp, #8 + 8002228: af00 add r7, sp, #0 + 800222a: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 800222c: 687b ldr r3, [r7, #4] + 800222e: 2b00 cmp r3, #0 + 8002230: d101 bne.n 8002236 + { + return HAL_ERROR; + 8002232: 2301 movs r3, #1 + 8002234: e031 b.n 800229a + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002236: 687b ldr r3, [r7, #4] + 8002238: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 800223c: b2db uxtb r3, r3 + 800223e: 2b00 cmp r3, #0 + 8002240: d106 bne.n 8002250 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002242: 687b ldr r3, [r7, #4] + 8002244: 2200 movs r2, #0 + 8002246: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 800224a: 6878 ldr r0, [r7, #4] + 800224c: f7fe fb5e bl 800090c +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002250: 687b ldr r3, [r7, #4] + 8002252: 2202 movs r2, #2 + 8002254: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002258: 687b ldr r3, [r7, #4] + 800225a: 681a ldr r2, [r3, #0] + 800225c: 687b ldr r3, [r7, #4] + 800225e: 3304 adds r3, #4 + 8002260: 4619 mov r1, r3 + 8002262: 4610 mov r0, r2 + 8002264: f000 fa28 bl 80026b8 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002268: 687b ldr r3, [r7, #4] + 800226a: 2201 movs r2, #1 + 800226c: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002270: 687b ldr r3, [r7, #4] + 8002272: 2201 movs r2, #1 + 8002274: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002278: 687b ldr r3, [r7, #4] + 800227a: 2201 movs r2, #1 + 800227c: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002280: 687b ldr r3, [r7, #4] + 8002282: 2201 movs r2, #1 + 8002284: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002288: 687b ldr r3, [r7, #4] + 800228a: 2201 movs r2, #1 + 800228c: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002290: 687b ldr r3, [r7, #4] + 8002292: 2201 movs r2, #1 + 8002294: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002298: 2300 movs r3, #0 +} + 800229a: 4618 mov r0, r3 + 800229c: 3708 adds r7, #8 + 800229e: 46bd mov sp, r7 + 80022a0: bd80 pop {r7, pc} + ... + +080022a4 : + * @brief Starts the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) +{ + 80022a4: b480 push {r7} + 80022a6: b085 sub sp, #20 + 80022a8: af00 add r7, sp, #0 + 80022aa: 6078 str r0, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + 80022ac: 687b ldr r3, [r7, #4] + 80022ae: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 80022b2: b2db uxtb r3, r3 + 80022b4: 2b01 cmp r3, #1 + 80022b6: d001 beq.n 80022bc + { + return HAL_ERROR; + 80022b8: 2301 movs r3, #1 + 80022ba: e03a b.n 8002332 + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 80022bc: 687b ldr r3, [r7, #4] + 80022be: 2202 movs r2, #2 + 80022c0: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + 80022c4: 687b ldr r3, [r7, #4] + 80022c6: 681b ldr r3, [r3, #0] + 80022c8: 68da ldr r2, [r3, #12] + 80022ca: 687b ldr r3, [r7, #4] + 80022cc: 681b ldr r3, [r3, #0] + 80022ce: f042 0201 orr.w r2, r2, #1 + 80022d2: 60da str r2, [r3, #12] + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 80022d4: 687b ldr r3, [r7, #4] + 80022d6: 681b ldr r3, [r3, #0] + 80022d8: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80022dc: d00e beq.n 80022fc + 80022de: 687b ldr r3, [r7, #4] + 80022e0: 681b ldr r3, [r3, #0] + 80022e2: 4a16 ldr r2, [pc, #88] @ (800233c ) + 80022e4: 4293 cmp r3, r2 + 80022e6: d009 beq.n 80022fc + 80022e8: 687b ldr r3, [r7, #4] + 80022ea: 681b ldr r3, [r3, #0] + 80022ec: 4a14 ldr r2, [pc, #80] @ (8002340 ) + 80022ee: 4293 cmp r3, r2 + 80022f0: d004 beq.n 80022fc + 80022f2: 687b ldr r3, [r7, #4] + 80022f4: 681b ldr r3, [r3, #0] + 80022f6: 4a13 ldr r2, [pc, #76] @ (8002344 ) + 80022f8: 4293 cmp r3, r2 + 80022fa: d111 bne.n 8002320 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 80022fc: 687b ldr r3, [r7, #4] + 80022fe: 681b ldr r3, [r3, #0] + 8002300: 689b ldr r3, [r3, #8] + 8002302: f003 0307 and.w r3, r3, #7 + 8002306: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002308: 68fb ldr r3, [r7, #12] + 800230a: 2b06 cmp r3, #6 + 800230c: d010 beq.n 8002330 + { + __HAL_TIM_ENABLE(htim); + 800230e: 687b ldr r3, [r7, #4] + 8002310: 681b ldr r3, [r3, #0] + 8002312: 681a ldr r2, [r3, #0] + 8002314: 687b ldr r3, [r7, #4] + 8002316: 681b ldr r3, [r3, #0] + 8002318: f042 0201 orr.w r2, r2, #1 + 800231c: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 800231e: e007 b.n 8002330 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8002320: 687b ldr r3, [r7, #4] + 8002322: 681b ldr r3, [r3, #0] + 8002324: 681a ldr r2, [r3, #0] + 8002326: 687b ldr r3, [r7, #4] + 8002328: 681b ldr r3, [r3, #0] + 800232a: f042 0201 orr.w r2, r2, #1 + 800232e: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8002330: 2300 movs r3, #0 +} + 8002332: 4618 mov r0, r3 + 8002334: 3714 adds r7, #20 + 8002336: 46bd mov sp, r7 + 8002338: bc80 pop {r7} + 800233a: 4770 bx lr + 800233c: 40000400 .word 0x40000400 + 8002340: 40000800 .word 0x40000800 + 8002344: 40010800 .word 0x40010800 + +08002348 : + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + 8002348: b580 push {r7, lr} + 800234a: b084 sub sp, #16 + 800234c: af00 add r7, sp, #0 + 800234e: 6078 str r0, [r7, #4] + uint32_t itsource = htim->Instance->DIER; + 8002350: 687b ldr r3, [r7, #4] + 8002352: 681b ldr r3, [r3, #0] + 8002354: 68db ldr r3, [r3, #12] + 8002356: 60fb str r3, [r7, #12] + uint32_t itflag = htim->Instance->SR; + 8002358: 687b ldr r3, [r7, #4] + 800235a: 681b ldr r3, [r3, #0] + 800235c: 691b ldr r3, [r3, #16] + 800235e: 60bb str r3, [r7, #8] + + /* Capture compare 1 event */ + if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) + 8002360: 68bb ldr r3, [r7, #8] + 8002362: f003 0302 and.w r3, r3, #2 + 8002366: 2b00 cmp r3, #0 + 8002368: d020 beq.n 80023ac + { + if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) + 800236a: 68fb ldr r3, [r7, #12] + 800236c: f003 0302 and.w r3, r3, #2 + 8002370: 2b00 cmp r3, #0 + 8002372: d01b beq.n 80023ac + { + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); + 8002374: 687b ldr r3, [r7, #4] + 8002376: 681b ldr r3, [r3, #0] + 8002378: f06f 0202 mvn.w r2, #2 + 800237c: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + 800237e: 687b ldr r3, [r7, #4] + 8002380: 2201 movs r2, #1 + 8002382: 761a strb r2, [r3, #24] + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + 8002384: 687b ldr r3, [r7, #4] + 8002386: 681b ldr r3, [r3, #0] + 8002388: 699b ldr r3, [r3, #24] + 800238a: f003 0303 and.w r3, r3, #3 + 800238e: 2b00 cmp r3, #0 + 8002390: d003 beq.n 800239a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002392: 6878 ldr r0, [r7, #4] + 8002394: f000 f974 bl 8002680 + 8002398: e005 b.n 80023a6 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 800239a: 6878 ldr r0, [r7, #4] + 800239c: f000 f967 bl 800266e + HAL_TIM_PWM_PulseFinishedCallback(htim); + 80023a0: 6878 ldr r0, [r7, #4] + 80023a2: f000 f976 bl 8002692 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 80023a6: 687b ldr r3, [r7, #4] + 80023a8: 2200 movs r2, #0 + 80023aa: 761a strb r2, [r3, #24] + } + } + } + /* Capture compare 2 event */ + if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) + 80023ac: 68bb ldr r3, [r7, #8] + 80023ae: f003 0304 and.w r3, r3, #4 + 80023b2: 2b00 cmp r3, #0 + 80023b4: d020 beq.n 80023f8 + { + if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) + 80023b6: 68fb ldr r3, [r7, #12] + 80023b8: f003 0304 and.w r3, r3, #4 + 80023bc: 2b00 cmp r3, #0 + 80023be: d01b beq.n 80023f8 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); + 80023c0: 687b ldr r3, [r7, #4] + 80023c2: 681b ldr r3, [r3, #0] + 80023c4: f06f 0204 mvn.w r2, #4 + 80023c8: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + 80023ca: 687b ldr r3, [r7, #4] + 80023cc: 2202 movs r2, #2 + 80023ce: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + 80023d0: 687b ldr r3, [r7, #4] + 80023d2: 681b ldr r3, [r3, #0] + 80023d4: 699b ldr r3, [r3, #24] + 80023d6: f403 7340 and.w r3, r3, #768 @ 0x300 + 80023da: 2b00 cmp r3, #0 + 80023dc: d003 beq.n 80023e6 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 80023de: 6878 ldr r0, [r7, #4] + 80023e0: f000 f94e bl 8002680 + 80023e4: e005 b.n 80023f2 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 80023e6: 6878 ldr r0, [r7, #4] + 80023e8: f000 f941 bl 800266e + HAL_TIM_PWM_PulseFinishedCallback(htim); + 80023ec: 6878 ldr r0, [r7, #4] + 80023ee: f000 f950 bl 8002692 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 80023f2: 687b ldr r3, [r7, #4] + 80023f4: 2200 movs r2, #0 + 80023f6: 761a strb r2, [r3, #24] + } + } + /* Capture compare 3 event */ + if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) + 80023f8: 68bb ldr r3, [r7, #8] + 80023fa: f003 0308 and.w r3, r3, #8 + 80023fe: 2b00 cmp r3, #0 + 8002400: d020 beq.n 8002444 + { + if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) + 8002402: 68fb ldr r3, [r7, #12] + 8002404: f003 0308 and.w r3, r3, #8 + 8002408: 2b00 cmp r3, #0 + 800240a: d01b beq.n 8002444 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + 800240c: 687b ldr r3, [r7, #4] + 800240e: 681b ldr r3, [r3, #0] + 8002410: f06f 0208 mvn.w r2, #8 + 8002414: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + 8002416: 687b ldr r3, [r7, #4] + 8002418: 2204 movs r2, #4 + 800241a: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + 800241c: 687b ldr r3, [r7, #4] + 800241e: 681b ldr r3, [r3, #0] + 8002420: 69db ldr r3, [r3, #28] + 8002422: f003 0303 and.w r3, r3, #3 + 8002426: 2b00 cmp r3, #0 + 8002428: d003 beq.n 8002432 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 800242a: 6878 ldr r0, [r7, #4] + 800242c: f000 f928 bl 8002680 + 8002430: e005 b.n 800243e + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002432: 6878 ldr r0, [r7, #4] + 8002434: f000 f91b bl 800266e + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002438: 6878 ldr r0, [r7, #4] + 800243a: f000 f92a bl 8002692 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 800243e: 687b ldr r3, [r7, #4] + 8002440: 2200 movs r2, #0 + 8002442: 761a strb r2, [r3, #24] + } + } + /* Capture compare 4 event */ + if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) + 8002444: 68bb ldr r3, [r7, #8] + 8002446: f003 0310 and.w r3, r3, #16 + 800244a: 2b00 cmp r3, #0 + 800244c: d020 beq.n 8002490 + { + if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) + 800244e: 68fb ldr r3, [r7, #12] + 8002450: f003 0310 and.w r3, r3, #16 + 8002454: 2b00 cmp r3, #0 + 8002456: d01b beq.n 8002490 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); + 8002458: 687b ldr r3, [r7, #4] + 800245a: 681b ldr r3, [r3, #0] + 800245c: f06f 0210 mvn.w r2, #16 + 8002460: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + 8002462: 687b ldr r3, [r7, #4] + 8002464: 2208 movs r2, #8 + 8002466: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + 8002468: 687b ldr r3, [r7, #4] + 800246a: 681b ldr r3, [r3, #0] + 800246c: 69db ldr r3, [r3, #28] + 800246e: f403 7340 and.w r3, r3, #768 @ 0x300 + 8002472: 2b00 cmp r3, #0 + 8002474: d003 beq.n 800247e + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002476: 6878 ldr r0, [r7, #4] + 8002478: f000 f902 bl 8002680 + 800247c: e005 b.n 800248a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 800247e: 6878 ldr r0, [r7, #4] + 8002480: f000 f8f5 bl 800266e + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002484: 6878 ldr r0, [r7, #4] + 8002486: f000 f904 bl 8002692 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 800248a: 687b ldr r3, [r7, #4] + 800248c: 2200 movs r2, #0 + 800248e: 761a strb r2, [r3, #24] + } + } + /* TIM Update event */ + if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) + 8002490: 68bb ldr r3, [r7, #8] + 8002492: f003 0301 and.w r3, r3, #1 + 8002496: 2b00 cmp r3, #0 + 8002498: d00c beq.n 80024b4 + { + if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) + 800249a: 68fb ldr r3, [r7, #12] + 800249c: f003 0301 and.w r3, r3, #1 + 80024a0: 2b00 cmp r3, #0 + 80024a2: d007 beq.n 80024b4 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); + 80024a4: 687b ldr r3, [r7, #4] + 80024a6: 681b ldr r3, [r3, #0] + 80024a8: f06f 0201 mvn.w r2, #1 + 80024ac: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); + 80024ae: 6878 ldr r0, [r7, #4] + 80024b0: f7fe f9a0 bl 80007f4 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) + 80024b4: 68bb ldr r3, [r7, #8] + 80024b6: f003 0340 and.w r3, r3, #64 @ 0x40 + 80024ba: 2b00 cmp r3, #0 + 80024bc: d00c beq.n 80024d8 + { + if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) + 80024be: 68fb ldr r3, [r7, #12] + 80024c0: f003 0340 and.w r3, r3, #64 @ 0x40 + 80024c4: 2b00 cmp r3, #0 + 80024c6: d007 beq.n 80024d8 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); + 80024c8: 687b ldr r3, [r7, #4] + 80024ca: 681b ldr r3, [r3, #0] + 80024cc: f06f 0240 mvn.w r2, #64 @ 0x40 + 80024d0: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); + 80024d2: 6878 ldr r0, [r7, #4] + 80024d4: f000 f8e6 bl 80026a4 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + 80024d8: bf00 nop + 80024da: 3710 adds r7, #16 + 80024dc: 46bd mov sp, r7 + 80024de: bd80 pop {r7, pc} + +080024e0 : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 80024e0: b580 push {r7, lr} + 80024e2: b084 sub sp, #16 + 80024e4: af00 add r7, sp, #0 + 80024e6: 6078 str r0, [r7, #4] + 80024e8: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 80024ea: 2300 movs r3, #0 + 80024ec: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 80024ee: 687b ldr r3, [r7, #4] + 80024f0: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80024f4: 2b01 cmp r3, #1 + 80024f6: d101 bne.n 80024fc + 80024f8: 2302 movs r3, #2 + 80024fa: e0b4 b.n 8002666 + 80024fc: 687b ldr r3, [r7, #4] + 80024fe: 2201 movs r2, #1 + 8002500: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 8002504: 687b ldr r3, [r7, #4] + 8002506: 2202 movs r2, #2 + 8002508: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 800250c: 687b ldr r3, [r7, #4] + 800250e: 681b ldr r3, [r3, #0] + 8002510: 689b ldr r3, [r3, #8] + 8002512: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8002514: 68bb ldr r3, [r7, #8] + 8002516: f023 0377 bic.w r3, r3, #119 @ 0x77 + 800251a: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 800251c: 68bb ldr r3, [r7, #8] + 800251e: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8002522: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 8002524: 687b ldr r3, [r7, #4] + 8002526: 681b ldr r3, [r3, #0] + 8002528: 68ba ldr r2, [r7, #8] + 800252a: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 800252c: 683b ldr r3, [r7, #0] + 800252e: 681b ldr r3, [r3, #0] + 8002530: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002534: d03e beq.n 80025b4 + 8002536: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800253a: f200 8087 bhi.w 800264c + 800253e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002542: f000 8086 beq.w 8002652 + 8002546: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800254a: d87f bhi.n 800264c + 800254c: 2b70 cmp r3, #112 @ 0x70 + 800254e: d01a beq.n 8002586 + 8002550: 2b70 cmp r3, #112 @ 0x70 + 8002552: d87b bhi.n 800264c + 8002554: 2b60 cmp r3, #96 @ 0x60 + 8002556: d050 beq.n 80025fa + 8002558: 2b60 cmp r3, #96 @ 0x60 + 800255a: d877 bhi.n 800264c + 800255c: 2b50 cmp r3, #80 @ 0x50 + 800255e: d03c beq.n 80025da + 8002560: 2b50 cmp r3, #80 @ 0x50 + 8002562: d873 bhi.n 800264c + 8002564: 2b40 cmp r3, #64 @ 0x40 + 8002566: d058 beq.n 800261a + 8002568: 2b40 cmp r3, #64 @ 0x40 + 800256a: d86f bhi.n 800264c + 800256c: 2b30 cmp r3, #48 @ 0x30 + 800256e: d064 beq.n 800263a + 8002570: 2b30 cmp r3, #48 @ 0x30 + 8002572: d86b bhi.n 800264c + 8002574: 2b20 cmp r3, #32 + 8002576: d060 beq.n 800263a + 8002578: 2b20 cmp r3, #32 + 800257a: d867 bhi.n 800264c + 800257c: 2b00 cmp r3, #0 + 800257e: d05c beq.n 800263a + 8002580: 2b10 cmp r3, #16 + 8002582: d05a beq.n 800263a + 8002584: e062 b.n 800264c + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 8002586: 687b ldr r3, [r7, #4] + 8002588: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 800258a: 683b ldr r3, [r7, #0] + 800258c: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 800258e: 683b ldr r3, [r7, #0] + 8002590: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002592: 683b ldr r3, [r7, #0] + 8002594: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8002596: f000 f97c bl 8002892 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 800259a: 687b ldr r3, [r7, #4] + 800259c: 681b ldr r3, [r3, #0] + 800259e: 689b ldr r3, [r3, #8] + 80025a0: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 80025a2: 68bb ldr r3, [r7, #8] + 80025a4: f043 0377 orr.w r3, r3, #119 @ 0x77 + 80025a8: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 80025aa: 687b ldr r3, [r7, #4] + 80025ac: 681b ldr r3, [r3, #0] + 80025ae: 68ba ldr r2, [r7, #8] + 80025b0: 609a str r2, [r3, #8] + break; + 80025b2: e04f b.n 8002654 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 80025b4: 687b ldr r3, [r7, #4] + 80025b6: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 80025b8: 683b ldr r3, [r7, #0] + 80025ba: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 80025bc: 683b ldr r3, [r7, #0] + 80025be: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 80025c0: 683b ldr r3, [r7, #0] + 80025c2: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 80025c4: f000 f965 bl 8002892 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 80025c8: 687b ldr r3, [r7, #4] + 80025ca: 681b ldr r3, [r3, #0] + 80025cc: 689a ldr r2, [r3, #8] + 80025ce: 687b ldr r3, [r7, #4] + 80025d0: 681b ldr r3, [r3, #0] + 80025d2: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 80025d6: 609a str r2, [r3, #8] + break; + 80025d8: e03c b.n 8002654 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80025da: 687b ldr r3, [r7, #4] + 80025dc: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80025de: 683b ldr r3, [r7, #0] + 80025e0: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80025e2: 683b ldr r3, [r7, #0] + 80025e4: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80025e6: 461a mov r2, r3 + 80025e8: f000 f8dc bl 80027a4 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 80025ec: 687b ldr r3, [r7, #4] + 80025ee: 681b ldr r3, [r3, #0] + 80025f0: 2150 movs r1, #80 @ 0x50 + 80025f2: 4618 mov r0, r3 + 80025f4: f000 f933 bl 800285e + break; + 80025f8: e02c b.n 8002654 + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 80025fa: 687b ldr r3, [r7, #4] + 80025fc: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80025fe: 683b ldr r3, [r7, #0] + 8002600: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002602: 683b ldr r3, [r7, #0] + 8002604: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 8002606: 461a mov r2, r3 + 8002608: f000 f8fa bl 8002800 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 800260c: 687b ldr r3, [r7, #4] + 800260e: 681b ldr r3, [r3, #0] + 8002610: 2160 movs r1, #96 @ 0x60 + 8002612: 4618 mov r0, r3 + 8002614: f000 f923 bl 800285e + break; + 8002618: e01c b.n 8002654 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 800261a: 687b ldr r3, [r7, #4] + 800261c: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800261e: 683b ldr r3, [r7, #0] + 8002620: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002622: 683b ldr r3, [r7, #0] + 8002624: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8002626: 461a mov r2, r3 + 8002628: f000 f8bc bl 80027a4 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 800262c: 687b ldr r3, [r7, #4] + 800262e: 681b ldr r3, [r3, #0] + 8002630: 2140 movs r1, #64 @ 0x40 + 8002632: 4618 mov r0, r3 + 8002634: f000 f913 bl 800285e + break; + 8002638: e00c b.n 8002654 + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 800263a: 687b ldr r3, [r7, #4] + 800263c: 681a ldr r2, [r3, #0] + 800263e: 683b ldr r3, [r7, #0] + 8002640: 681b ldr r3, [r3, #0] + 8002642: 4619 mov r1, r3 + 8002644: 4610 mov r0, r2 + 8002646: f000 f90a bl 800285e + break; + 800264a: e003 b.n 8002654 + } + + default: + status = HAL_ERROR; + 800264c: 2301 movs r3, #1 + 800264e: 73fb strb r3, [r7, #15] + break; + 8002650: e000 b.n 8002654 + break; + 8002652: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 8002654: 687b ldr r3, [r7, #4] + 8002656: 2201 movs r2, #1 + 8002658: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 800265c: 687b ldr r3, [r7, #4] + 800265e: 2200 movs r2, #0 + 8002660: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002664: 7bfb ldrb r3, [r7, #15] +} + 8002666: 4618 mov r0, r3 + 8002668: 3710 adds r7, #16 + 800266a: 46bd mov sp, r7 + 800266c: bd80 pop {r7, pc} + +0800266e : + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + 800266e: b480 push {r7} + 8002670: b083 sub sp, #12 + 8002672: af00 add r7, sp, #0 + 8002674: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + 8002676: bf00 nop + 8002678: 370c adds r7, #12 + 800267a: 46bd mov sp, r7 + 800267c: bc80 pop {r7} + 800267e: 4770 bx lr + +08002680 : + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + 8002680: b480 push {r7} + 8002682: b083 sub sp, #12 + 8002684: af00 add r7, sp, #0 + 8002686: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + 8002688: bf00 nop + 800268a: 370c adds r7, #12 + 800268c: 46bd mov sp, r7 + 800268e: bc80 pop {r7} + 8002690: 4770 bx lr + +08002692 : + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + 8002692: b480 push {r7} + 8002694: b083 sub sp, #12 + 8002696: af00 add r7, sp, #0 + 8002698: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file + */ +} + 800269a: bf00 nop + 800269c: 370c adds r7, #12 + 800269e: 46bd mov sp, r7 + 80026a0: bc80 pop {r7} + 80026a2: 4770 bx lr + +080026a4 : + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + 80026a4: b480 push {r7} + 80026a6: b083 sub sp, #12 + 80026a8: af00 add r7, sp, #0 + 80026aa: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerCallback could be implemented in the user file + */ +} + 80026ac: bf00 nop + 80026ae: 370c adds r7, #12 + 80026b0: 46bd mov sp, r7 + 80026b2: bc80 pop {r7} + 80026b4: 4770 bx lr + ... + +080026b8 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 80026b8: b480 push {r7} + 80026ba: b085 sub sp, #20 + 80026bc: af00 add r7, sp, #0 + 80026be: 6078 str r0, [r7, #4] + 80026c0: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 80026c2: 687b ldr r3, [r7, #4] + 80026c4: 681b ldr r3, [r3, #0] + 80026c6: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 80026c8: 687b ldr r3, [r7, #4] + 80026ca: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80026ce: d00f beq.n 80026f0 + 80026d0: 687b ldr r3, [r7, #4] + 80026d2: 4a2e ldr r2, [pc, #184] @ (800278c ) + 80026d4: 4293 cmp r3, r2 + 80026d6: d00b beq.n 80026f0 + 80026d8: 687b ldr r3, [r7, #4] + 80026da: 4a2d ldr r2, [pc, #180] @ (8002790 ) + 80026dc: 4293 cmp r3, r2 + 80026de: d007 beq.n 80026f0 + 80026e0: 687b ldr r3, [r7, #4] + 80026e2: 4a2c ldr r2, [pc, #176] @ (8002794 ) + 80026e4: 4293 cmp r3, r2 + 80026e6: d003 beq.n 80026f0 + 80026e8: 687b ldr r3, [r7, #4] + 80026ea: 4a2b ldr r2, [pc, #172] @ (8002798 ) + 80026ec: 4293 cmp r3, r2 + 80026ee: d108 bne.n 8002702 + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 80026f0: 68fb ldr r3, [r7, #12] + 80026f2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80026f6: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 80026f8: 683b ldr r3, [r7, #0] + 80026fa: 685b ldr r3, [r3, #4] + 80026fc: 68fa ldr r2, [r7, #12] + 80026fe: 4313 orrs r3, r2 + 8002700: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8002702: 687b ldr r3, [r7, #4] + 8002704: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002708: d017 beq.n 800273a + 800270a: 687b ldr r3, [r7, #4] + 800270c: 4a1f ldr r2, [pc, #124] @ (800278c ) + 800270e: 4293 cmp r3, r2 + 8002710: d013 beq.n 800273a + 8002712: 687b ldr r3, [r7, #4] + 8002714: 4a1e ldr r2, [pc, #120] @ (8002790 ) + 8002716: 4293 cmp r3, r2 + 8002718: d00f beq.n 800273a + 800271a: 687b ldr r3, [r7, #4] + 800271c: 4a1d ldr r2, [pc, #116] @ (8002794 ) + 800271e: 4293 cmp r3, r2 + 8002720: d00b beq.n 800273a + 8002722: 687b ldr r3, [r7, #4] + 8002724: 4a1c ldr r2, [pc, #112] @ (8002798 ) + 8002726: 4293 cmp r3, r2 + 8002728: d007 beq.n 800273a + 800272a: 687b ldr r3, [r7, #4] + 800272c: 4a1b ldr r2, [pc, #108] @ (800279c ) + 800272e: 4293 cmp r3, r2 + 8002730: d003 beq.n 800273a + 8002732: 687b ldr r3, [r7, #4] + 8002734: 4a1a ldr r2, [pc, #104] @ (80027a0 ) + 8002736: 4293 cmp r3, r2 + 8002738: d108 bne.n 800274c + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 800273a: 68fb ldr r3, [r7, #12] + 800273c: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002740: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 8002742: 683b ldr r3, [r7, #0] + 8002744: 68db ldr r3, [r3, #12] + 8002746: 68fa ldr r2, [r7, #12] + 8002748: 4313 orrs r3, r2 + 800274a: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 800274c: 68fb ldr r3, [r7, #12] + 800274e: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8002752: 683b ldr r3, [r7, #0] + 8002754: 691b ldr r3, [r3, #16] + 8002756: 4313 orrs r3, r2 + 8002758: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 800275a: 683b ldr r3, [r7, #0] + 800275c: 689a ldr r2, [r3, #8] + 800275e: 687b ldr r3, [r7, #4] + 8002760: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 8002762: 683b ldr r3, [r7, #0] + 8002764: 681a ldr r2, [r3, #0] + 8002766: 687b ldr r3, [r7, #4] + 8002768: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 800276a: 687b ldr r3, [r7, #4] + 800276c: 681b ldr r3, [r3, #0] + 800276e: f043 0204 orr.w r2, r3, #4 + 8002772: 687b ldr r3, [r7, #4] + 8002774: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 8002776: 687b ldr r3, [r7, #4] + 8002778: 2201 movs r2, #1 + 800277a: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 800277c: 687b ldr r3, [r7, #4] + 800277e: 68fa ldr r2, [r7, #12] + 8002780: 601a str r2, [r3, #0] +} + 8002782: bf00 nop + 8002784: 3714 adds r7, #20 + 8002786: 46bd mov sp, r7 + 8002788: bc80 pop {r7} + 800278a: 4770 bx lr + 800278c: 40000400 .word 0x40000400 + 8002790: 40000800 .word 0x40000800 + 8002794: 40000c00 .word 0x40000c00 + 8002798: 40010800 .word 0x40010800 + 800279c: 40010c00 .word 0x40010c00 + 80027a0: 40011000 .word 0x40011000 + +080027a4 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 80027a4: b480 push {r7} + 80027a6: b087 sub sp, #28 + 80027a8: af00 add r7, sp, #0 + 80027aa: 60f8 str r0, [r7, #12] + 80027ac: 60b9 str r1, [r7, #8] + 80027ae: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 80027b0: 68fb ldr r3, [r7, #12] + 80027b2: 6a1b ldr r3, [r3, #32] + 80027b4: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 80027b6: 68fb ldr r3, [r7, #12] + 80027b8: 6a1b ldr r3, [r3, #32] + 80027ba: f023 0201 bic.w r2, r3, #1 + 80027be: 68fb ldr r3, [r7, #12] + 80027c0: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 80027c2: 68fb ldr r3, [r7, #12] + 80027c4: 699b ldr r3, [r3, #24] + 80027c6: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 80027c8: 693b ldr r3, [r7, #16] + 80027ca: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 80027ce: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 80027d0: 687b ldr r3, [r7, #4] + 80027d2: 011b lsls r3, r3, #4 + 80027d4: 693a ldr r2, [r7, #16] + 80027d6: 4313 orrs r3, r2 + 80027d8: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 80027da: 697b ldr r3, [r7, #20] + 80027dc: f023 030a bic.w r3, r3, #10 + 80027e0: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 80027e2: 697a ldr r2, [r7, #20] + 80027e4: 68bb ldr r3, [r7, #8] + 80027e6: 4313 orrs r3, r2 + 80027e8: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 80027ea: 68fb ldr r3, [r7, #12] + 80027ec: 693a ldr r2, [r7, #16] + 80027ee: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 80027f0: 68fb ldr r3, [r7, #12] + 80027f2: 697a ldr r2, [r7, #20] + 80027f4: 621a str r2, [r3, #32] +} + 80027f6: bf00 nop + 80027f8: 371c adds r7, #28 + 80027fa: 46bd mov sp, r7 + 80027fc: bc80 pop {r7} + 80027fe: 4770 bx lr + +08002800 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002800: b480 push {r7} + 8002802: b087 sub sp, #28 + 8002804: af00 add r7, sp, #0 + 8002806: 60f8 str r0, [r7, #12] + 8002808: 60b9 str r1, [r7, #8] + 800280a: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 800280c: 68fb ldr r3, [r7, #12] + 800280e: 6a1b ldr r3, [r3, #32] + 8002810: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002812: 68fb ldr r3, [r7, #12] + 8002814: 6a1b ldr r3, [r3, #32] + 8002816: f023 0210 bic.w r2, r3, #16 + 800281a: 68fb ldr r3, [r7, #12] + 800281c: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 800281e: 68fb ldr r3, [r7, #12] + 8002820: 699b ldr r3, [r3, #24] + 8002822: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8002824: 693b ldr r3, [r7, #16] + 8002826: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 800282a: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 800282c: 687b ldr r3, [r7, #4] + 800282e: 031b lsls r3, r3, #12 + 8002830: 693a ldr r2, [r7, #16] + 8002832: 4313 orrs r3, r2 + 8002834: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8002836: 697b ldr r3, [r7, #20] + 8002838: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 800283c: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 800283e: 68bb ldr r3, [r7, #8] + 8002840: 011b lsls r3, r3, #4 + 8002842: 697a ldr r2, [r7, #20] + 8002844: 4313 orrs r3, r2 + 8002846: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8002848: 68fb ldr r3, [r7, #12] + 800284a: 693a ldr r2, [r7, #16] + 800284c: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 800284e: 68fb ldr r3, [r7, #12] + 8002850: 697a ldr r2, [r7, #20] + 8002852: 621a str r2, [r3, #32] +} + 8002854: bf00 nop + 8002856: 371c adds r7, #28 + 8002858: 46bd mov sp, r7 + 800285a: bc80 pop {r7} + 800285c: 4770 bx lr + +0800285e : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 800285e: b480 push {r7} + 8002860: b085 sub sp, #20 + 8002862: af00 add r7, sp, #0 + 8002864: 6078 str r0, [r7, #4] + 8002866: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 8002868: 687b ldr r3, [r7, #4] + 800286a: 689b ldr r3, [r3, #8] + 800286c: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 800286e: 68fb ldr r3, [r7, #12] + 8002870: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002874: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8002876: 683a ldr r2, [r7, #0] + 8002878: 68fb ldr r3, [r7, #12] + 800287a: 4313 orrs r3, r2 + 800287c: f043 0307 orr.w r3, r3, #7 + 8002880: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002882: 687b ldr r3, [r7, #4] + 8002884: 68fa ldr r2, [r7, #12] + 8002886: 609a str r2, [r3, #8] +} + 8002888: bf00 nop + 800288a: 3714 adds r7, #20 + 800288c: 46bd mov sp, r7 + 800288e: bc80 pop {r7} + 8002890: 4770 bx lr + +08002892 : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8002892: b480 push {r7} + 8002894: b087 sub sp, #28 + 8002896: af00 add r7, sp, #0 + 8002898: 60f8 str r0, [r7, #12] + 800289a: 60b9 str r1, [r7, #8] + 800289c: 607a str r2, [r7, #4] + 800289e: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 80028a0: 68fb ldr r3, [r7, #12] + 80028a2: 689b ldr r3, [r3, #8] + 80028a4: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80028a6: 697b ldr r3, [r7, #20] + 80028a8: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80028ac: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 80028ae: 683b ldr r3, [r7, #0] + 80028b0: 021a lsls r2, r3, #8 + 80028b2: 687b ldr r3, [r7, #4] + 80028b4: 431a orrs r2, r3 + 80028b6: 68bb ldr r3, [r7, #8] + 80028b8: 4313 orrs r3, r2 + 80028ba: 697a ldr r2, [r7, #20] + 80028bc: 4313 orrs r3, r2 + 80028be: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 80028c0: 68fb ldr r3, [r7, #12] + 80028c2: 697a ldr r2, [r7, #20] + 80028c4: 609a str r2, [r3, #8] +} + 80028c6: bf00 nop + 80028c8: 371c adds r7, #28 + 80028ca: 46bd mov sp, r7 + 80028cc: bc80 pop {r7} + 80028ce: 4770 bx lr + +080028d0 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 80028d0: b480 push {r7} + 80028d2: b085 sub sp, #20 + 80028d4: af00 add r7, sp, #0 + 80028d6: 6078 str r0, [r7, #4] + 80028d8: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 80028da: 687b ldr r3, [r7, #4] + 80028dc: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80028e0: 2b01 cmp r3, #1 + 80028e2: d101 bne.n 80028e8 + 80028e4: 2302 movs r3, #2 + 80028e6: e046 b.n 8002976 + 80028e8: 687b ldr r3, [r7, #4] + 80028ea: 2201 movs r2, #1 + 80028ec: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 80028f0: 687b ldr r3, [r7, #4] + 80028f2: 2202 movs r2, #2 + 80028f4: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 80028f8: 687b ldr r3, [r7, #4] + 80028fa: 681b ldr r3, [r3, #0] + 80028fc: 685b ldr r3, [r3, #4] + 80028fe: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8002900: 687b ldr r3, [r7, #4] + 8002902: 681b ldr r3, [r3, #0] + 8002904: 689b ldr r3, [r3, #8] + 8002906: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8002908: 68fb ldr r3, [r7, #12] + 800290a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800290e: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8002910: 683b ldr r3, [r7, #0] + 8002912: 681b ldr r3, [r3, #0] + 8002914: 68fa ldr r2, [r7, #12] + 8002916: 4313 orrs r3, r2 + 8002918: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 800291a: 687b ldr r3, [r7, #4] + 800291c: 681b ldr r3, [r3, #0] + 800291e: 68fa ldr r2, [r7, #12] + 8002920: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002922: 687b ldr r3, [r7, #4] + 8002924: 681b ldr r3, [r3, #0] + 8002926: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800292a: d00e beq.n 800294a + 800292c: 687b ldr r3, [r7, #4] + 800292e: 681b ldr r3, [r3, #0] + 8002930: 4a13 ldr r2, [pc, #76] @ (8002980 ) + 8002932: 4293 cmp r3, r2 + 8002934: d009 beq.n 800294a + 8002936: 687b ldr r3, [r7, #4] + 8002938: 681b ldr r3, [r3, #0] + 800293a: 4a12 ldr r2, [pc, #72] @ (8002984 ) + 800293c: 4293 cmp r3, r2 + 800293e: d004 beq.n 800294a + 8002940: 687b ldr r3, [r7, #4] + 8002942: 681b ldr r3, [r3, #0] + 8002944: 4a10 ldr r2, [pc, #64] @ (8002988 ) + 8002946: 4293 cmp r3, r2 + 8002948: d10c bne.n 8002964 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 800294a: 68bb ldr r3, [r7, #8] + 800294c: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8002950: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 8002952: 683b ldr r3, [r7, #0] + 8002954: 685b ldr r3, [r3, #4] + 8002956: 68ba ldr r2, [r7, #8] + 8002958: 4313 orrs r3, r2 + 800295a: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 800295c: 687b ldr r3, [r7, #4] + 800295e: 681b ldr r3, [r3, #0] + 8002960: 68ba ldr r2, [r7, #8] + 8002962: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8002964: 687b ldr r3, [r7, #4] + 8002966: 2201 movs r2, #1 + 8002968: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 800296c: 687b ldr r3, [r7, #4] + 800296e: 2200 movs r2, #0 + 8002970: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 8002974: 2300 movs r3, #0 +} + 8002976: 4618 mov r0, r3 + 8002978: 3714 adds r7, #20 + 800297a: 46bd mov sp, r7 + 800297c: bc80 pop {r7} + 800297e: 4770 bx lr + 8002980: 40000400 .word 0x40000400 + 8002984: 40000800 .word 0x40000800 + 8002988: 40010800 .word 0x40010800 + +0800298c : + 800298c: 4603 mov r3, r0 + 800298e: 4402 add r2, r0 + 8002990: 4293 cmp r3, r2 + 8002992: d100 bne.n 8002996 + 8002994: 4770 bx lr + 8002996: f803 1b01 strb.w r1, [r3], #1 + 800299a: e7f9 b.n 8002990 + +0800299c <__libc_init_array>: + 800299c: b570 push {r4, r5, r6, lr} + 800299e: 2600 movs r6, #0 + 80029a0: 4d0c ldr r5, [pc, #48] @ (80029d4 <__libc_init_array+0x38>) + 80029a2: 4c0d ldr r4, [pc, #52] @ (80029d8 <__libc_init_array+0x3c>) + 80029a4: 1b64 subs r4, r4, r5 + 80029a6: 10a4 asrs r4, r4, #2 + 80029a8: 42a6 cmp r6, r4 + 80029aa: d109 bne.n 80029c0 <__libc_init_array+0x24> + 80029ac: f000 f81a bl 80029e4 <_init> + 80029b0: 2600 movs r6, #0 + 80029b2: 4d0a ldr r5, [pc, #40] @ (80029dc <__libc_init_array+0x40>) + 80029b4: 4c0a ldr r4, [pc, #40] @ (80029e0 <__libc_init_array+0x44>) + 80029b6: 1b64 subs r4, r4, r5 + 80029b8: 10a4 asrs r4, r4, #2 + 80029ba: 42a6 cmp r6, r4 + 80029bc: d105 bne.n 80029ca <__libc_init_array+0x2e> + 80029be: bd70 pop {r4, r5, r6, pc} + 80029c0: f855 3b04 ldr.w r3, [r5], #4 + 80029c4: 4798 blx r3 + 80029c6: 3601 adds r6, #1 + 80029c8: e7ee b.n 80029a8 <__libc_init_array+0xc> + 80029ca: f855 3b04 ldr.w r3, [r5], #4 + 80029ce: 4798 blx r3 + 80029d0: 3601 adds r6, #1 + 80029d2: e7f2 b.n 80029ba <__libc_init_array+0x1e> + 80029d4: 08002a30 .word 0x08002a30 + 80029d8: 08002a30 .word 0x08002a30 + 80029dc: 08002a30 .word 0x08002a30 + 80029e0: 08002a34 .word 0x08002a34 + +080029e4 <_init>: + 80029e4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80029e6: bf00 nop + 80029e8: bcf8 pop {r3, r4, r5, r6, r7} + 80029ea: bc08 pop {r3} + 80029ec: 469e mov lr, r3 + 80029ee: 4770 bx lr + +080029f0 <_fini>: + 80029f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80029f2: bf00 nop + 80029f4: bcf8 pop {r3, r4, r5, r6, r7} + 80029f6: bc08 pop {r3} + 80029f8: 469e mov lr, r3 + 80029fa: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.map b/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.map new file mode 100644 index 0000000..f327511 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_M_A_TIMER_MODULO.map @@ -0,0 +1,3420 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_Delay + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a41 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85b0a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f66 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b93 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b9f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x8597e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aae ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_ConfigChannel + 0x00000000 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x28c0 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.affiche 0x080004b0 0x60 ./Core/Src/main.o + 0x080004b0 affiche + .text.main 0x08000510 0x6c ./Core/Src/main.o + 0x08000510 main + .text.SystemClock_Config + 0x0800057c 0x8c ./Core/Src/main.o + 0x0800057c SystemClock_Config + .text.MX_SPI1_Init + 0x08000608 0x6c ./Core/Src/main.o + .text.MX_TIM2_Init + 0x08000674 0x9c ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000710 0xac ./Core/Src/main.o + .text.HAL_GPIO_EXTI_Callback + 0x080007bc 0x38 ./Core/Src/main.o + 0x080007bc HAL_GPIO_EXTI_Callback + .text.HAL_TIM_PeriodElapsedCallback + 0x080007f4 0x28 ./Core/Src/main.o + 0x080007f4 HAL_TIM_PeriodElapsedCallback + .text.Error_Handler + 0x0800081c 0xc ./Core/Src/main.o + 0x0800081c Error_Handler + .text.HAL_MspInit + 0x08000828 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000828 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000884 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000884 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x0800090c 0x48 ./Core/Src/stm32l1xx_hal_msp.o + 0x0800090c HAL_TIM_Base_MspInit + .text.NMI_Handler + 0x08000954 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000954 NMI_Handler + .text.HardFault_Handler + 0x0800095c 0x8 ./Core/Src/stm32l1xx_it.o + 0x0800095c HardFault_Handler + .text.MemManage_Handler + 0x08000964 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000964 MemManage_Handler + .text.BusFault_Handler + 0x0800096c 0x8 ./Core/Src/stm32l1xx_it.o + 0x0800096c BusFault_Handler + .text.UsageFault_Handler + 0x08000974 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000974 UsageFault_Handler + .text.SVC_Handler + 0x0800097c 0xc ./Core/Src/stm32l1xx_it.o + 0x0800097c SVC_Handler + .text.DebugMon_Handler + 0x08000988 0xc ./Core/Src/stm32l1xx_it.o + 0x08000988 DebugMon_Handler + .text.PendSV_Handler + 0x08000994 0xc ./Core/Src/stm32l1xx_it.o + 0x08000994 PendSV_Handler + .text.SysTick_Handler + 0x080009a0 0xc ./Core/Src/stm32l1xx_it.o + 0x080009a0 SysTick_Handler + .text.TIM2_IRQHandler + 0x080009ac 0x14 ./Core/Src/stm32l1xx_it.o + 0x080009ac TIM2_IRQHandler + .text.EXTI15_10_IRQHandler + 0x080009c0 0x18 ./Core/Src/stm32l1xx_it.o + 0x080009c0 EXTI15_10_IRQHandler + .text.SystemInit + 0x080009d8 0xc ./Core/Src/system_stm32l1xx.o + 0x080009d8 SystemInit + .text.Reset_Handler + 0x080009e4 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x080009e4 Reset_Handler + .text.Default_Handler + 0x08000a2c 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000a2c DMA2_Channel3_IRQHandler + 0x08000a2c EXTI2_IRQHandler + 0x08000a2c COMP_ACQ_IRQHandler + 0x08000a2c TIM10_IRQHandler + 0x08000a2c USB_HP_IRQHandler + 0x08000a2c TIM6_IRQHandler + 0x08000a2c PVD_IRQHandler + 0x08000a2c EXTI3_IRQHandler + 0x08000a2c EXTI0_IRQHandler + 0x08000a2c I2C2_EV_IRQHandler + 0x08000a2c SPI1_IRQHandler + 0x08000a2c USB_FS_WKUP_IRQHandler + 0x08000a2c DMA2_Channel2_IRQHandler + 0x08000a2c DMA1_Channel4_IRQHandler + 0x08000a2c ADC1_IRQHandler + 0x08000a2c USART3_IRQHandler + 0x08000a2c DMA1_Channel7_IRQHandler + 0x08000a2c LCD_IRQHandler + 0x08000a2c UART5_IRQHandler + 0x08000a2c TIM4_IRQHandler + 0x08000a2c DMA2_Channel1_IRQHandler + 0x08000a2c I2C1_EV_IRQHandler + 0x08000a2c DMA1_Channel6_IRQHandler + 0x08000a2c UART4_IRQHandler + 0x08000a2c DMA2_Channel4_IRQHandler + 0x08000a2c TIM3_IRQHandler + 0x08000a2c RCC_IRQHandler + 0x08000a2c DMA1_Channel1_IRQHandler + 0x08000a2c Default_Handler + 0x08000a2c TIM7_IRQHandler + 0x08000a2c TIM5_IRQHandler + 0x08000a2c EXTI9_5_IRQHandler + 0x08000a2c TIM9_IRQHandler + 0x08000a2c TAMPER_STAMP_IRQHandler + 0x08000a2c RTC_WKUP_IRQHandler + 0x08000a2c SPI2_IRQHandler + 0x08000a2c DMA2_Channel5_IRQHandler + 0x08000a2c DMA1_Channel5_IRQHandler + 0x08000a2c USB_LP_IRQHandler + 0x08000a2c EXTI4_IRQHandler + 0x08000a2c DMA1_Channel3_IRQHandler + 0x08000a2c COMP_IRQHandler + 0x08000a2c WWDG_IRQHandler + 0x08000a2c DAC_IRQHandler + 0x08000a2c EXTI1_IRQHandler + 0x08000a2c TIM11_IRQHandler + 0x08000a2c USART2_IRQHandler + 0x08000a2c I2C2_ER_IRQHandler + 0x08000a2c DMA1_Channel2_IRQHandler + 0x08000a2c FLASH_IRQHandler + 0x08000a2c USART1_IRQHandler + 0x08000a2c SPI3_IRQHandler + 0x08000a2c I2C1_ER_IRQHandler + 0x08000a2c RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000a2e 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a2e MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000a58 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a58 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000a68 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a68 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000a78 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a78 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000a9c 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a9c MAX7219_Clear + .text.MAX7219_DisplayChar + 0x08000ac8 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000ac8 MAX7219_DisplayChar + .text.MAX7219_Write + 0x08000af4 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000af4 MAX7219_Write + .text.MAX7219_SendByte + 0x08000b30 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000b54 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000b54 HAL_Init + .text.HAL_InitTick + 0x08000b84 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000b84 HAL_InitTick + .text.HAL_IncTick + 0x08000bf8 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000bf8 HAL_IncTick + .text.HAL_GetTick + 0x08000c1c 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000c1c HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x08000c30 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000c78 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000c94 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000ccc 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000d20 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000d84 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000dc8 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000dc8 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000dde 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000dde HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000e16 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000e16 HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x08000e32 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000e32 HAL_SYSTICK_Config + *fill* 0x08000e4a 0x2 + .text.HAL_GPIO_Init + 0x08000e4c 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000e4c HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x0800116c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x0800116c HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x0800119c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x0800119c HAL_GPIO_EXTI_IRQHandler + .text.HAL_RCC_OscConfig + 0x080011cc 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080011cc HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x0800182c 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x0800182c HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001a94 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001a94 HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001c10 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001cd0 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001cd0 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001de2 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001de2 HAL_SPI_Transmit + *fill* 0x0800206a 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x0800206c 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x0800217c 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x08002224 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002224 HAL_TIM_Base_Init + *fill* 0x080022a2 0x2 + .text.HAL_TIM_Base_Start_IT + 0x080022a4 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080022a4 HAL_TIM_Base_Start_IT + .text.HAL_TIM_IRQHandler + 0x08002348 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002348 HAL_TIM_IRQHandler + .text.HAL_TIM_ConfigClockSource + 0x080024e0 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024e0 HAL_TIM_ConfigClockSource + .text.HAL_TIM_OC_DelayElapsedCallback + 0x0800266e 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800266e HAL_TIM_OC_DelayElapsedCallback + .text.HAL_TIM_IC_CaptureCallback + 0x08002680 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002680 HAL_TIM_IC_CaptureCallback + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x08002692 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002692 HAL_TIM_PWM_PulseFinishedCallback + .text.HAL_TIM_TriggerCallback + 0x080026a4 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080026a4 HAL_TIM_TriggerCallback + *fill* 0x080026b6 0x2 + .text.TIM_Base_SetConfig + 0x080026b8 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x080027a4 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08002800 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x0800285e 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08002892 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIMEx_MasterConfigSynchronization + 0x080028d0 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x080028d0 HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x0800298c 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x0800298c memset + .text.__libc_init_array + 0x0800299c 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x0800299c __libc_init_array + *(.glue_7) + .glue_7 0x080029e4 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x080029e4 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x080029e4 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x080029e4 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x080029e4 _init + .init 0x080029e8 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x080029f0 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x080029f0 _fini + .fini 0x080029f4 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x080029fc . = ALIGN (0x4) + 0x080029fc _etext = . + +.vfp11_veneer 0x080029fc 0x0 + .vfp11_veneer 0x080029fc 0x0 linker stubs + +.v4_bx 0x080029fc 0x0 + .v4_bx 0x080029fc 0x0 linker stubs + +.iplt 0x080029fc 0x0 + .iplt 0x080029fc 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x080029fc 0x2c + 0x080029fc . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x080029fc 0x9 ./Core/Src/system_stm32l1xx.o + 0x080029fc PLLMulTable + *fill* 0x08002a05 0x3 + .rodata.AHBPrescTable + 0x08002a08 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002a08 AHBPrescTable + .rodata.conv_7seg + 0x08002a18 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08002a18 conv_7seg + 0x08002a28 . = ALIGN (0x4) + +.ARM.extab 0x08002a28 0x0 + 0x08002a28 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08002a28 . = ALIGN (0x4) + +.ARM 0x08002a28 0x8 + 0x08002a28 . = ALIGN (0x4) + 0x08002a28 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08002a28 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x08002a30 __exidx_end = . + 0x08002a30 . = ALIGN (0x4) + +.preinit_array 0x08002a30 0x0 + 0x08002a30 . = ALIGN (0x4) + 0x08002a30 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08002a30 PROVIDE (__preinit_array_end = .) + 0x08002a30 . = ALIGN (0x4) + +.init_array 0x08002a30 0x4 + 0x08002a30 . = ALIGN (0x4) + 0x08002a30 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08002a30 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08002a34 PROVIDE (__init_array_end = .) + 0x08002a34 . = ALIGN (0x4) + +.fini_array 0x08002a34 0x4 + 0x08002a34 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08002a34 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08002a38 . = ALIGN (0x4) + 0x08002a38 _sidata = LOADADDR (.data) + +.rel.dyn 0x08002a38 0x0 + .rel.iplt 0x08002a38 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x08002a38 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x08002a44 + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0xbc load address 0x08002a44 + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.htim2 0x20000080 0x40 ./Core/Src/main.o + 0x20000080 htim2 + .bss.marche 0x200000c0 0x1 ./Core/Src/main.o + 0x200000c0 marche + .bss.tempo_500ms_ok + 0x200000c1 0x1 ./Core/Src/main.o + 0x200000c1 tempo_500ms_ok + *fill* 0x200000c2 0x2 + .bss.uwTick 0x200000c4 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x200000c4 uwTick + *(COMMON) + 0x200000c8 . = ALIGN (0x4) + 0x200000c8 _ebss = . + 0x200000c8 __bss_end__ = _ebss + +._user_heap_stack + 0x200000c8 0x600 load address 0x08002a44 + 0x200000c8 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x200000c8 PROVIDE (_end = .) + 0x200002c8 . = (. + _Min_Heap_Size) + *fill* 0x200000c8 0x200 + 0x200006c8 . = (. + _Min_Stack_Size) + *fill* 0x200002c8 0x400 + 0x200006c8 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002fe 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000032b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000348 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP3_M_A_TIMER_MODULO.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x9760 + .debug_info 0x00000000 0x11ca ./Core/Src/main.o + .debug_info 0x000011ca 0xdaf ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00001f79 0x6be ./Core/Src/stm32l1xx_it.o + .debug_info 0x00002637 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x000028b3 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x000028e3 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x000030f1 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x000037e0 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x000044c5 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00004a77 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x00005412 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x000068eb 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x000090b8 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x19c7 + .debug_abbrev 0x00000000 0x2f1 ./Core/Src/main.o + .debug_abbrev 0x000002f1 0x1c2 ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x000004b3 0x18e ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x00000641 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x0000075d 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x00000781 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x0000096a 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000bdf 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000efb 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x000010cf 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x00001387 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x00001601 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x0000185f 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xa90 + .debug_aranges + 0x00000000 0x60 ./Core/Src/main.o + .debug_aranges + 0x00000060 0x40 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x000000a0 0x70 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000110 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000138 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000160 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001d8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002b8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003e0 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000438 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004c8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x00000698 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a68 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x801 + .debug_rnglists + 0x00000000 0x46 ./Core/Src/main.o + .debug_rnglists + 0x00000046 0x2c ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000072 0x4f ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000c1 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000db 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000f4 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x00000149 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001ec 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002c5 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x00000304 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000371 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004e0 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x000007e7 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xa9e1 + .debug_line 0x00000000 0x8b4 ./Core/Src/main.o + .debug_line 0x000008b4 0x749 ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00000ffd 0x7a0 ./Core/Src/stm32l1xx_it.o + .debug_line 0x0000179d 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001efe 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001f77 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002786 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00003112 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003d6d 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x0000473d 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x0000568c 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x000072d7 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a288 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x88678 + .debug_str 0x00000000 0x88678 ./Core/Src/main.o + 0x8677f (size before relaxing) + .debug_str 0x00088678 0x863cd ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x00088678 0x85dde ./Core/Src/stm32l1xx_it.o + .debug_str 0x00088678 0x8590b ./Core/Src/system_stm32l1xx.o + .debug_str 0x00088678 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x00088678 0x85e67 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x00088678 0x86033 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x00088678 0x8613f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x00088678 0x85a9e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x00088678 0x85dc7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x00088678 0x8622d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x00088678 0x86c0e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x00088678 0x85db3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2bb4 + .debug_frame 0x00000000 0x144 ./Core/Src/main.o + .debug_frame 0x00000144 0xc8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x0000020c 0x13c ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000348 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x000003a0 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000538 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000874 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000d5c 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000ea8 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x000010cc 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x000018f4 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002aa8 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002b08 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002b28 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002b54 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002b80 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.list b/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.list new file mode 100644 index 0000000..94b8a8a --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.list @@ -0,0 +1,8291 @@ + +TP3_PWM_GENERATOR.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00002e30 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000001c 08002f6c 08002f6c 00003f6c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08002f88 08002f88 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08002f88 08002f88 00003f88 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 08002f90 08002f90 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08002f90 08002f90 00003f90 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08002f94 08002f94 00003f94 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 08002f98 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000000f8 2000000c 08002fa4 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 20000104 08002fa4 00004104 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 000097ec 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000019a3 00000000 00000000 0000d821 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000a90 00000000 00000000 0000f1c8 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000803 00000000 00000000 0000fc58 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 0001045b 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000aa50 00000000 00000000 00025a54 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 00088675 00000000 00000000 000304a4 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b8b19 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002ba0 00000000 00000000 000b8b5c 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000bb6fc 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 08002f54 .word 0x08002f54 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 08002f54 .word 0x08002f54 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80004b0: b580 push {r7, lr} + 80004b2: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80004b4: f000 fb8c bl 8000bd0 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80004b8: f000 f814 bl 80004e4 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 80004bc: f000 f94e bl 800075c + MX_SPI1_Init(); + 80004c0: f000 f856 bl 8000570 + MX_TIM2_Init(); + 80004c4: f000 f88a bl 80005dc + MX_TIM3_Init(); + 80004c8: f000 f8d6 bl 8000678 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 80004cc: f000 fb03 bl 8000ad6 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + 80004d0: 2100 movs r1, #0 + 80004d2: 4803 ldr r0, [pc, #12] @ (80004e0 ) + 80004d4: f001 ff76 bl 80023c4 + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 80004d8: f000 fb34 bl 8000b44 + while (1) + 80004dc: bf00 nop + 80004de: e7fd b.n 80004dc + 80004e0: 200000c0 .word 0x200000c0 + +080004e4 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 80004e4: b580 push {r7, lr} + 80004e6: b092 sub sp, #72 @ 0x48 + 80004e8: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 80004ea: f107 0314 add.w r3, r7, #20 + 80004ee: 2234 movs r2, #52 @ 0x34 + 80004f0: 2100 movs r1, #0 + 80004f2: 4618 mov r0, r3 + 80004f4: f002 fd02 bl 8002efc + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 80004f8: 463b mov r3, r7 + 80004fa: 2200 movs r2, #0 + 80004fc: 601a str r2, [r3, #0] + 80004fe: 605a str r2, [r3, #4] + 8000500: 609a str r2, [r3, #8] + 8000502: 60da str r2, [r3, #12] + 8000504: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000506: 4b19 ldr r3, [pc, #100] @ (800056c ) + 8000508: 681b ldr r3, [r3, #0] + 800050a: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 800050e: 4a17 ldr r2, [pc, #92] @ (800056c ) + 8000510: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000514: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000516: 2302 movs r3, #2 + 8000518: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 800051a: 2301 movs r3, #1 + 800051c: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 800051e: 2310 movs r3, #16 + 8000520: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 8000522: 2300 movs r3, #0 + 8000524: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000526: f107 0314 add.w r3, r7, #20 + 800052a: 4618 mov r0, r3 + 800052c: f000 fe96 bl 800125c + 8000530: 4603 mov r3, r0 + 8000532: 2b00 cmp r3, #0 + 8000534: d001 beq.n 800053a + { + Error_Handler(); + 8000536: f000 f967 bl 8000808 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 800053a: 230f movs r3, #15 + 800053c: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 800053e: 2301 movs r3, #1 + 8000540: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 8000542: 2300 movs r3, #0 + 8000544: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 8000546: 2300 movs r3, #0 + 8000548: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 800054a: 2300 movs r3, #0 + 800054c: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 800054e: 463b mov r3, r7 + 8000550: 2100 movs r1, #0 + 8000552: 4618 mov r0, r3 + 8000554: f001 f9b2 bl 80018bc + 8000558: 4603 mov r3, r0 + 800055a: 2b00 cmp r3, #0 + 800055c: d001 beq.n 8000562 + { + Error_Handler(); + 800055e: f000 f953 bl 8000808 + } +} + 8000562: bf00 nop + 8000564: 3748 adds r7, #72 @ 0x48 + 8000566: 46bd mov sp, r7 + 8000568: bd80 pop {r7, pc} + 800056a: bf00 nop + 800056c: 40007000 .word 0x40007000 + +08000570 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 8000570: b580 push {r7, lr} + 8000572: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 8000574: 4b17 ldr r3, [pc, #92] @ (80005d4 ) + 8000576: 4a18 ldr r2, [pc, #96] @ (80005d8 ) + 8000578: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 800057a: 4b16 ldr r3, [pc, #88] @ (80005d4 ) + 800057c: f44f 7282 mov.w r2, #260 @ 0x104 + 8000580: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 8000582: 4b14 ldr r3, [pc, #80] @ (80005d4 ) + 8000584: 2200 movs r2, #0 + 8000586: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 8000588: 4b12 ldr r3, [pc, #72] @ (80005d4 ) + 800058a: 2200 movs r2, #0 + 800058c: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 800058e: 4b11 ldr r3, [pc, #68] @ (80005d4 ) + 8000590: 2200 movs r2, #0 + 8000592: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 8000594: 4b0f ldr r3, [pc, #60] @ (80005d4 ) + 8000596: 2200 movs r2, #0 + 8000598: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 800059a: 4b0e ldr r3, [pc, #56] @ (80005d4 ) + 800059c: f44f 7200 mov.w r2, #512 @ 0x200 + 80005a0: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 80005a2: 4b0c ldr r3, [pc, #48] @ (80005d4 ) + 80005a4: 2200 movs r2, #0 + 80005a6: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 80005a8: 4b0a ldr r3, [pc, #40] @ (80005d4 ) + 80005aa: 2200 movs r2, #0 + 80005ac: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 80005ae: 4b09 ldr r3, [pc, #36] @ (80005d4 ) + 80005b0: 2200 movs r2, #0 + 80005b2: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 80005b4: 4b07 ldr r3, [pc, #28] @ (80005d4 ) + 80005b6: 2200 movs r2, #0 + 80005b8: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 80005ba: 4b06 ldr r3, [pc, #24] @ (80005d4 ) + 80005bc: 220a movs r2, #10 + 80005be: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 80005c0: 4804 ldr r0, [pc, #16] @ (80005d4 ) + 80005c2: f001 fbcd bl 8001d60 + 80005c6: 4603 mov r3, r0 + 80005c8: 2b00 cmp r3, #0 + 80005ca: d001 beq.n 80005d0 + { + Error_Handler(); + 80005cc: f000 f91c bl 8000808 + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 80005d0: bf00 nop + 80005d2: bd80 pop {r7, pc} + 80005d4: 20000028 .word 0x20000028 + 80005d8: 40013000 .word 0x40013000 + +080005dc : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 80005dc: b580 push {r7, lr} + 80005de: b086 sub sp, #24 + 80005e0: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80005e2: f107 0308 add.w r3, r7, #8 + 80005e6: 2200 movs r2, #0 + 80005e8: 601a str r2, [r3, #0] + 80005ea: 605a str r2, [r3, #4] + 80005ec: 609a str r2, [r3, #8] + 80005ee: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80005f0: 463b mov r3, r7 + 80005f2: 2200 movs r2, #0 + 80005f4: 601a str r2, [r3, #0] + 80005f6: 605a str r2, [r3, #4] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 80005f8: 4b1e ldr r3, [pc, #120] @ (8000674 ) + 80005fa: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 80005fe: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 1000-1; + 8000600: 4b1c ldr r3, [pc, #112] @ (8000674 ) + 8000602: f240 32e7 movw r2, #999 @ 0x3e7 + 8000606: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000608: 4b1a ldr r3, [pc, #104] @ (8000674 ) + 800060a: 2200 movs r2, #0 + 800060c: 609a str r2, [r3, #8] + htim2.Init.Period = 16000-1; + 800060e: 4b19 ldr r3, [pc, #100] @ (8000674 ) + 8000610: f643 627f movw r2, #15999 @ 0x3e7f + 8000614: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000616: 4b17 ldr r3, [pc, #92] @ (8000674 ) + 8000618: 2200 movs r2, #0 + 800061a: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 800061c: 4b15 ldr r3, [pc, #84] @ (8000674 ) + 800061e: 2280 movs r2, #128 @ 0x80 + 8000620: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 8000622: 4814 ldr r0, [pc, #80] @ (8000674 ) + 8000624: f001 fe46 bl 80022b4 + 8000628: 4603 mov r3, r0 + 800062a: 2b00 cmp r3, #0 + 800062c: d001 beq.n 8000632 + { + Error_Handler(); + 800062e: f000 f8eb bl 8000808 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000632: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000636: 60bb str r3, [r7, #8] + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 8000638: f107 0308 add.w r3, r7, #8 + 800063c: 4619 mov r1, r3 + 800063e: 480d ldr r0, [pc, #52] @ (8000674 ) + 8000640: f002 f8e4 bl 800280c + 8000644: 4603 mov r3, r0 + 8000646: 2b00 cmp r3, #0 + 8000648: d001 beq.n 800064e + { + Error_Handler(); + 800064a: f000 f8dd bl 8000808 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 800064e: 2300 movs r3, #0 + 8000650: 603b str r3, [r7, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000652: 2300 movs r3, #0 + 8000654: 607b str r3, [r7, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 8000656: 463b mov r3, r7 + 8000658: 4619 mov r1, r3 + 800065a: 4806 ldr r0, [pc, #24] @ (8000674 ) + 800065c: f002 fbf0 bl 8002e40 + 8000660: 4603 mov r3, r0 + 8000662: 2b00 cmp r3, #0 + 8000664: d001 beq.n 800066a + { + Error_Handler(); + 8000666: f000 f8cf bl 8000808 + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + 800066a: bf00 nop + 800066c: 3718 adds r7, #24 + 800066e: 46bd mov sp, r7 + 8000670: bd80 pop {r7, pc} + 8000672: bf00 nop + 8000674: 20000080 .word 0x20000080 + +08000678 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 8000678: b580 push {r7, lr} + 800067a: b08a sub sp, #40 @ 0x28 + 800067c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800067e: f107 0318 add.w r3, r7, #24 + 8000682: 2200 movs r2, #0 + 8000684: 601a str r2, [r3, #0] + 8000686: 605a str r2, [r3, #4] + 8000688: 609a str r2, [r3, #8] + 800068a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800068c: f107 0310 add.w r3, r7, #16 + 8000690: 2200 movs r2, #0 + 8000692: 601a str r2, [r3, #0] + 8000694: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000696: 463b mov r3, r7 + 8000698: 2200 movs r2, #0 + 800069a: 601a str r2, [r3, #0] + 800069c: 605a str r2, [r3, #4] + 800069e: 609a str r2, [r3, #8] + 80006a0: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 80006a2: 4b2c ldr r3, [pc, #176] @ (8000754 ) + 80006a4: 4a2c ldr r2, [pc, #176] @ (8000758 ) + 80006a6: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 8-1; + 80006a8: 4b2a ldr r3, [pc, #168] @ (8000754 ) + 80006aa: 2207 movs r2, #7 + 80006ac: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 80006ae: 4b29 ldr r3, [pc, #164] @ (8000754 ) + 80006b0: 2200 movs r2, #0 + 80006b2: 609a str r2, [r3, #8] + htim3.Init.Period = 100-1; + 80006b4: 4b27 ldr r3, [pc, #156] @ (8000754 ) + 80006b6: 2263 movs r2, #99 @ 0x63 + 80006b8: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80006ba: 4b26 ldr r3, [pc, #152] @ (8000754 ) + 80006bc: 2200 movs r2, #0 + 80006be: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 80006c0: 4b24 ldr r3, [pc, #144] @ (8000754 ) + 80006c2: 2280 movs r2, #128 @ 0x80 + 80006c4: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 80006c6: 4823 ldr r0, [pc, #140] @ (8000754 ) + 80006c8: f001 fdf4 bl 80022b4 + 80006cc: 4603 mov r3, r0 + 80006ce: 2b00 cmp r3, #0 + 80006d0: d001 beq.n 80006d6 + { + Error_Handler(); + 80006d2: f000 f899 bl 8000808 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80006d6: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80006da: 61bb str r3, [r7, #24] + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 80006dc: f107 0318 add.w r3, r7, #24 + 80006e0: 4619 mov r1, r3 + 80006e2: 481c ldr r0, [pc, #112] @ (8000754 ) + 80006e4: f002 f892 bl 800280c + 80006e8: 4603 mov r3, r0 + 80006ea: 2b00 cmp r3, #0 + 80006ec: d001 beq.n 80006f2 + { + Error_Handler(); + 80006ee: f000 f88b bl 8000808 + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 80006f2: 4818 ldr r0, [pc, #96] @ (8000754 ) + 80006f4: f001 fe1d bl 8002332 + 80006f8: 4603 mov r3, r0 + 80006fa: 2b00 cmp r3, #0 + 80006fc: d001 beq.n 8000702 + { + Error_Handler(); + 80006fe: f000 f883 bl 8000808 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000702: 2300 movs r3, #0 + 8000704: 613b str r3, [r7, #16] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000706: 2300 movs r3, #0 + 8000708: 617b str r3, [r7, #20] + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 800070a: f107 0310 add.w r3, r7, #16 + 800070e: 4619 mov r1, r3 + 8000710: 4810 ldr r0, [pc, #64] @ (8000754 ) + 8000712: f002 fb95 bl 8002e40 + 8000716: 4603 mov r3, r0 + 8000718: 2b00 cmp r3, #0 + 800071a: d001 beq.n 8000720 + { + Error_Handler(); + 800071c: f000 f874 bl 8000808 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000720: 2360 movs r3, #96 @ 0x60 + 8000722: 603b str r3, [r7, #0] + sConfigOC.Pulse = 67; + 8000724: 2343 movs r3, #67 @ 0x43 + 8000726: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000728: 2300 movs r3, #0 + 800072a: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 800072c: 2300 movs r3, #0 + 800072e: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000730: 463b mov r3, r7 + 8000732: 2200 movs r2, #0 + 8000734: 4619 mov r1, r3 + 8000736: 4807 ldr r0, [pc, #28] @ (8000754 ) + 8000738: f001 ffa6 bl 8002688 + 800073c: 4603 mov r3, r0 + 800073e: 2b00 cmp r3, #0 + 8000740: d001 beq.n 8000746 + { + Error_Handler(); + 8000742: f000 f861 bl 8000808 + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 8000746: 4803 ldr r0, [pc, #12] @ (8000754 ) + 8000748: f000 f916 bl 8000978 + +} + 800074c: bf00 nop + 800074e: 3728 adds r7, #40 @ 0x28 + 8000750: 46bd mov sp, r7 + 8000752: bd80 pop {r7, pc} + 8000754: 200000c0 .word 0x200000c0 + 8000758: 40000400 .word 0x40000400 + +0800075c : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 800075c: b580 push {r7, lr} + 800075e: b088 sub sp, #32 + 8000760: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000762: f107 030c add.w r3, r7, #12 + 8000766: 2200 movs r2, #0 + 8000768: 601a str r2, [r3, #0] + 800076a: 605a str r2, [r3, #4] + 800076c: 609a str r2, [r3, #8] + 800076e: 60da str r2, [r3, #12] + 8000770: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000772: 4b22 ldr r3, [pc, #136] @ (80007fc ) + 8000774: 69db ldr r3, [r3, #28] + 8000776: 4a21 ldr r2, [pc, #132] @ (80007fc ) + 8000778: f043 0304 orr.w r3, r3, #4 + 800077c: 61d3 str r3, [r2, #28] + 800077e: 4b1f ldr r3, [pc, #124] @ (80007fc ) + 8000780: 69db ldr r3, [r3, #28] + 8000782: f003 0304 and.w r3, r3, #4 + 8000786: 60bb str r3, [r7, #8] + 8000788: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800078a: 4b1c ldr r3, [pc, #112] @ (80007fc ) + 800078c: 69db ldr r3, [r3, #28] + 800078e: 4a1b ldr r2, [pc, #108] @ (80007fc ) + 8000790: f043 0301 orr.w r3, r3, #1 + 8000794: 61d3 str r3, [r2, #28] + 8000796: 4b19 ldr r3, [pc, #100] @ (80007fc ) + 8000798: 69db ldr r3, [r3, #28] + 800079a: f003 0301 and.w r3, r3, #1 + 800079e: 607b str r3, [r7, #4] + 80007a0: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 80007a2: 2200 movs r2, #0 + 80007a4: 2101 movs r1, #1 + 80007a6: 4816 ldr r0, [pc, #88] @ (8000800 ) + 80007a8: f000 fd1e bl 80011e8 + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 80007ac: 2301 movs r3, #1 + 80007ae: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80007b0: 2301 movs r3, #1 + 80007b2: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80007b4: 2300 movs r3, #0 + 80007b6: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80007b8: 2300 movs r3, #0 + 80007ba: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80007bc: f107 030c add.w r3, r7, #12 + 80007c0: 4619 mov r1, r3 + 80007c2: 480f ldr r0, [pc, #60] @ (8000800 ) + 80007c4: f000 fb80 bl 8000ec8 + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 80007c8: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 80007cc: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 80007ce: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 80007d2: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80007d4: 2300 movs r3, #0 + 80007d6: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80007d8: f107 030c add.w r3, r7, #12 + 80007dc: 4619 mov r1, r3 + 80007de: 4809 ldr r0, [pc, #36] @ (8000804 ) + 80007e0: f000 fb72 bl 8000ec8 + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 80007e4: 2200 movs r2, #0 + 80007e6: 2100 movs r1, #0 + 80007e8: 2028 movs r0, #40 @ 0x28 + 80007ea: f000 fb36 bl 8000e5a + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 80007ee: 2028 movs r0, #40 @ 0x28 + 80007f0: f000 fb4f bl 8000e92 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80007f4: bf00 nop + 80007f6: 3720 adds r7, #32 + 80007f8: 46bd mov sp, r7 + 80007fa: bd80 pop {r7, pc} + 80007fc: 40023800 .word 0x40023800 + 8000800: 40020800 .word 0x40020800 + 8000804: 40020000 .word 0x40020000 + +08000808 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000808: b480 push {r7} + 800080a: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 800080c: b672 cpsid i +} + 800080e: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000810: bf00 nop + 8000812: e7fd b.n 8000810 + +08000814 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000814: b480 push {r7} + 8000816: b085 sub sp, #20 + 8000818: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 800081a: 4b14 ldr r3, [pc, #80] @ (800086c ) + 800081c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800081e: 4a13 ldr r2, [pc, #76] @ (800086c ) + 8000820: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000824: 6253 str r3, [r2, #36] @ 0x24 + 8000826: 4b11 ldr r3, [pc, #68] @ (800086c ) + 8000828: 6a5b ldr r3, [r3, #36] @ 0x24 + 800082a: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 800082e: 60fb str r3, [r7, #12] + 8000830: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000832: 4b0e ldr r3, [pc, #56] @ (800086c ) + 8000834: 6a1b ldr r3, [r3, #32] + 8000836: 4a0d ldr r2, [pc, #52] @ (800086c ) + 8000838: f043 0301 orr.w r3, r3, #1 + 800083c: 6213 str r3, [r2, #32] + 800083e: 4b0b ldr r3, [pc, #44] @ (800086c ) + 8000840: 6a1b ldr r3, [r3, #32] + 8000842: f003 0301 and.w r3, r3, #1 + 8000846: 60bb str r3, [r7, #8] + 8000848: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800084a: 4b08 ldr r3, [pc, #32] @ (800086c ) + 800084c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800084e: 4a07 ldr r2, [pc, #28] @ (800086c ) + 8000850: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000854: 6253 str r3, [r2, #36] @ 0x24 + 8000856: 4b05 ldr r3, [pc, #20] @ (800086c ) + 8000858: 6a5b ldr r3, [r3, #36] @ 0x24 + 800085a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800085e: 607b str r3, [r7, #4] + 8000860: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000862: bf00 nop + 8000864: 3714 adds r7, #20 + 8000866: 46bd mov sp, r7 + 8000868: bc80 pop {r7} + 800086a: 4770 bx lr + 800086c: 40023800 .word 0x40023800 + +08000870 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000870: b580 push {r7, lr} + 8000872: b08a sub sp, #40 @ 0x28 + 8000874: af00 add r7, sp, #0 + 8000876: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000878: f107 0314 add.w r3, r7, #20 + 800087c: 2200 movs r2, #0 + 800087e: 601a str r2, [r3, #0] + 8000880: 605a str r2, [r3, #4] + 8000882: 609a str r2, [r3, #8] + 8000884: 60da str r2, [r3, #12] + 8000886: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 8000888: 687b ldr r3, [r7, #4] + 800088a: 681b ldr r3, [r3, #0] + 800088c: 4a17 ldr r2, [pc, #92] @ (80008ec ) + 800088e: 4293 cmp r3, r2 + 8000890: d127 bne.n 80008e2 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 8000892: 4b17 ldr r3, [pc, #92] @ (80008f0 ) + 8000894: 6a1b ldr r3, [r3, #32] + 8000896: 4a16 ldr r2, [pc, #88] @ (80008f0 ) + 8000898: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 800089c: 6213 str r3, [r2, #32] + 800089e: 4b14 ldr r3, [pc, #80] @ (80008f0 ) + 80008a0: 6a1b ldr r3, [r3, #32] + 80008a2: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80008a6: 613b str r3, [r7, #16] + 80008a8: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80008aa: 4b11 ldr r3, [pc, #68] @ (80008f0 ) + 80008ac: 69db ldr r3, [r3, #28] + 80008ae: 4a10 ldr r2, [pc, #64] @ (80008f0 ) + 80008b0: f043 0301 orr.w r3, r3, #1 + 80008b4: 61d3 str r3, [r2, #28] + 80008b6: 4b0e ldr r3, [pc, #56] @ (80008f0 ) + 80008b8: 69db ldr r3, [r3, #28] + 80008ba: f003 0301 and.w r3, r3, #1 + 80008be: 60fb str r3, [r7, #12] + 80008c0: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 80008c2: 23e0 movs r3, #224 @ 0xe0 + 80008c4: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008c6: 2302 movs r3, #2 + 80008c8: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008ca: 2300 movs r3, #0 + 80008cc: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 80008ce: 2303 movs r3, #3 + 80008d0: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 80008d2: 2305 movs r3, #5 + 80008d4: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80008d6: f107 0314 add.w r3, r7, #20 + 80008da: 4619 mov r1, r3 + 80008dc: 4805 ldr r0, [pc, #20] @ (80008f4 ) + 80008de: f000 faf3 bl 8000ec8 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 80008e2: bf00 nop + 80008e4: 3728 adds r7, #40 @ 0x28 + 80008e6: 46bd mov sp, r7 + 80008e8: bd80 pop {r7, pc} + 80008ea: bf00 nop + 80008ec: 40013000 .word 0x40013000 + 80008f0: 40023800 .word 0x40023800 + 80008f4: 40020000 .word 0x40020000 + +080008f8 : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 80008f8: b580 push {r7, lr} + 80008fa: b084 sub sp, #16 + 80008fc: af00 add r7, sp, #0 + 80008fe: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 8000900: 687b ldr r3, [r7, #4] + 8000902: 681b ldr r3, [r3, #0] + 8000904: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000908: d114 bne.n 8000934 + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 800090a: 4b19 ldr r3, [pc, #100] @ (8000970 ) + 800090c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800090e: 4a18 ldr r2, [pc, #96] @ (8000970 ) + 8000910: f043 0301 orr.w r3, r3, #1 + 8000914: 6253 str r3, [r2, #36] @ 0x24 + 8000916: 4b16 ldr r3, [pc, #88] @ (8000970 ) + 8000918: 6a5b ldr r3, [r3, #36] @ 0x24 + 800091a: f003 0301 and.w r3, r3, #1 + 800091e: 60fb str r3, [r7, #12] + 8000920: 68fb ldr r3, [r7, #12] + /* TIM2 interrupt Init */ + HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + 8000922: 2200 movs r2, #0 + 8000924: 2100 movs r1, #0 + 8000926: 201c movs r0, #28 + 8000928: f000 fa97 bl 8000e5a + HAL_NVIC_EnableIRQ(TIM2_IRQn); + 800092c: 201c movs r0, #28 + 800092e: f000 fab0 bl 8000e92 + /* USER CODE BEGIN TIM3_MspInit 1 */ + + /* USER CODE END TIM3_MspInit 1 */ + } + +} + 8000932: e018 b.n 8000966 + else if(htim_base->Instance==TIM3) + 8000934: 687b ldr r3, [r7, #4] + 8000936: 681b ldr r3, [r3, #0] + 8000938: 4a0e ldr r2, [pc, #56] @ (8000974 ) + 800093a: 4293 cmp r3, r2 + 800093c: d113 bne.n 8000966 + __HAL_RCC_TIM3_CLK_ENABLE(); + 800093e: 4b0c ldr r3, [pc, #48] @ (8000970 ) + 8000940: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000942: 4a0b ldr r2, [pc, #44] @ (8000970 ) + 8000944: f043 0302 orr.w r3, r3, #2 + 8000948: 6253 str r3, [r2, #36] @ 0x24 + 800094a: 4b09 ldr r3, [pc, #36] @ (8000970 ) + 800094c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800094e: f003 0302 and.w r3, r3, #2 + 8000952: 60bb str r3, [r7, #8] + 8000954: 68bb ldr r3, [r7, #8] + HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); + 8000956: 2200 movs r2, #0 + 8000958: 2100 movs r1, #0 + 800095a: 201d movs r0, #29 + 800095c: f000 fa7d bl 8000e5a + HAL_NVIC_EnableIRQ(TIM3_IRQn); + 8000960: 201d movs r0, #29 + 8000962: f000 fa96 bl 8000e92 +} + 8000966: bf00 nop + 8000968: 3710 adds r7, #16 + 800096a: 46bd mov sp, r7 + 800096c: bd80 pop {r7, pc} + 800096e: bf00 nop + 8000970: 40023800 .word 0x40023800 + 8000974: 40000400 .word 0x40000400 + +08000978 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000978: b580 push {r7, lr} + 800097a: b088 sub sp, #32 + 800097c: af00 add r7, sp, #0 + 800097e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000980: f107 030c add.w r3, r7, #12 + 8000984: 2200 movs r2, #0 + 8000986: 601a str r2, [r3, #0] + 8000988: 605a str r2, [r3, #4] + 800098a: 609a str r2, [r3, #8] + 800098c: 60da str r2, [r3, #12] + 800098e: 611a str r2, [r3, #16] + if(htim->Instance==TIM3) + 8000990: 687b ldr r3, [r7, #4] + 8000992: 681b ldr r3, [r3, #0] + 8000994: 4a11 ldr r2, [pc, #68] @ (80009dc ) + 8000996: 4293 cmp r3, r2 + 8000998: d11b bne.n 80009d2 + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + + __HAL_RCC_GPIOC_CLK_ENABLE(); + 800099a: 4b11 ldr r3, [pc, #68] @ (80009e0 ) + 800099c: 69db ldr r3, [r3, #28] + 800099e: 4a10 ldr r2, [pc, #64] @ (80009e0 ) + 80009a0: f043 0304 orr.w r3, r3, #4 + 80009a4: 61d3 str r3, [r2, #28] + 80009a6: 4b0e ldr r3, [pc, #56] @ (80009e0 ) + 80009a8: 69db ldr r3, [r3, #28] + 80009aa: f003 0304 and.w r3, r3, #4 + 80009ae: 60bb str r3, [r7, #8] + 80009b0: 68bb ldr r3, [r7, #8] + /**TIM3 GPIO Configuration + PC6 ------> TIM3_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + 80009b2: 2340 movs r3, #64 @ 0x40 + 80009b4: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80009b6: 2302 movs r3, #2 + 80009b8: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80009ba: 2300 movs r3, #0 + 80009bc: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80009be: 2300 movs r3, #0 + 80009c0: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + 80009c2: 2302 movs r3, #2 + 80009c4: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80009c6: f107 030c add.w r3, r7, #12 + 80009ca: 4619 mov r1, r3 + 80009cc: 4805 ldr r0, [pc, #20] @ (80009e4 ) + 80009ce: f000 fa7b bl 8000ec8 + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + +} + 80009d2: bf00 nop + 80009d4: 3720 adds r7, #32 + 80009d6: 46bd mov sp, r7 + 80009d8: bd80 pop {r7, pc} + 80009da: bf00 nop + 80009dc: 40000400 .word 0x40000400 + 80009e0: 40023800 .word 0x40023800 + 80009e4: 40020800 .word 0x40020800 + +080009e8 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 80009e8: b480 push {r7} + 80009ea: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 80009ec: bf00 nop + 80009ee: e7fd b.n 80009ec + +080009f0 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 80009f0: b480 push {r7} + 80009f2: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 80009f4: bf00 nop + 80009f6: e7fd b.n 80009f4 + +080009f8 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 80009f8: b480 push {r7} + 80009fa: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 80009fc: bf00 nop + 80009fe: e7fd b.n 80009fc + +08000a00 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000a00: b480 push {r7} + 8000a02: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000a04: bf00 nop + 8000a06: e7fd b.n 8000a04 + +08000a08 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000a08: b480 push {r7} + 8000a0a: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000a0c: bf00 nop + 8000a0e: e7fd b.n 8000a0c + +08000a10 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000a10: b480 push {r7} + 8000a12: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000a14: bf00 nop + 8000a16: 46bd mov sp, r7 + 8000a18: bc80 pop {r7} + 8000a1a: 4770 bx lr + +08000a1c : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000a1c: b480 push {r7} + 8000a1e: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000a20: bf00 nop + 8000a22: 46bd mov sp, r7 + 8000a24: bc80 pop {r7} + 8000a26: 4770 bx lr + +08000a28 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000a28: b480 push {r7} + 8000a2a: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000a2c: bf00 nop + 8000a2e: 46bd mov sp, r7 + 8000a30: bc80 pop {r7} + 8000a32: 4770 bx lr + +08000a34 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000a34: b580 push {r7, lr} + 8000a36: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000a38: f000 f91c bl 8000c74 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000a3c: bf00 nop + 8000a3e: bd80 pop {r7, pc} + +08000a40 : + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + 8000a40: b580 push {r7, lr} + 8000a42: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + 8000a44: 4802 ldr r0, [pc, #8] @ (8000a50 ) + 8000a46: f001 fd53 bl 80024f0 + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + 8000a4a: bf00 nop + 8000a4c: bd80 pop {r7, pc} + 8000a4e: bf00 nop + 8000a50: 20000080 .word 0x20000080 + +08000a54 : + +/** + * @brief This function handles TIM3 global interrupt. + */ +void TIM3_IRQHandler(void) +{ + 8000a54: b580 push {r7, lr} + 8000a56: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM3_IRQn 0 */ + + /* USER CODE END TIM3_IRQn 0 */ + HAL_TIM_IRQHandler(&htim3); + 8000a58: 4802 ldr r0, [pc, #8] @ (8000a64 ) + 8000a5a: f001 fd49 bl 80024f0 + /* USER CODE BEGIN TIM3_IRQn 1 */ + + /* USER CODE END TIM3_IRQn 1 */ +} + 8000a5e: bf00 nop + 8000a60: bd80 pop {r7, pc} + 8000a62: bf00 nop + 8000a64: 200000c0 .word 0x200000c0 + +08000a68 : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 8000a68: b580 push {r7, lr} + 8000a6a: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 8000a6c: f44f 6000 mov.w r0, #2048 @ 0x800 + 8000a70: f000 fbd2 bl 8001218 + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 8000a74: f44f 5080 mov.w r0, #4096 @ 0x1000 + 8000a78: f000 fbce bl 8001218 + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8000a7c: bf00 nop + 8000a7e: bd80 pop {r7, pc} + +08000a80 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000a80: b480 push {r7} + 8000a82: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000a84: bf00 nop + 8000a86: 46bd mov sp, r7 + 8000a88: bc80 pop {r7} + 8000a8a: 4770 bx lr + +08000a8c : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000a8c: f7ff fff8 bl 8000a80 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000a90: 480b ldr r0, [pc, #44] @ (8000ac0 ) + ldr r1, =_edata + 8000a92: 490c ldr r1, [pc, #48] @ (8000ac4 ) + ldr r2, =_sidata + 8000a94: 4a0c ldr r2, [pc, #48] @ (8000ac8 ) + movs r3, #0 + 8000a96: 2300 movs r3, #0 + b LoopCopyDataInit + 8000a98: e002 b.n 8000aa0 + +08000a9a : + +CopyDataInit: + ldr r4, [r2, r3] + 8000a9a: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000a9c: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000a9e: 3304 adds r3, #4 + +08000aa0 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000aa0: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000aa2: 428c cmp r4, r1 + bcc CopyDataInit + 8000aa4: d3f9 bcc.n 8000a9a + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000aa6: 4a09 ldr r2, [pc, #36] @ (8000acc ) + ldr r4, =_ebss + 8000aa8: 4c09 ldr r4, [pc, #36] @ (8000ad0 ) + movs r3, #0 + 8000aaa: 2300 movs r3, #0 + b LoopFillZerobss + 8000aac: e001 b.n 8000ab2 + +08000aae : + +FillZerobss: + str r3, [r2] + 8000aae: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000ab0: 3204 adds r2, #4 + +08000ab2 : + +LoopFillZerobss: + cmp r2, r4 + 8000ab2: 42a2 cmp r2, r4 + bcc FillZerobss + 8000ab4: d3fb bcc.n 8000aae + +/* Call static constructors */ + bl __libc_init_array + 8000ab6: f002 fa29 bl 8002f0c <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000aba: f7ff fcf9 bl 80004b0
+ bx lr + 8000abe: 4770 bx lr + ldr r0, =_sdata + 8000ac0: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000ac4: 2000000c .word 0x2000000c + ldr r2, =_sidata + 8000ac8: 08002f98 .word 0x08002f98 + ldr r2, =_sbss + 8000acc: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000ad0: 20000104 .word 0x20000104 + +08000ad4 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000ad4: e7fe b.n 8000ad4 + +08000ad6 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000ad6: b580 push {r7, lr} + 8000ad8: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 8000ada: 2107 movs r1, #7 + 8000adc: 200b movs r0, #11 + 8000ade: f000 f847 bl 8000b70 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000ae2: 2100 movs r1, #0 + 8000ae4: 2009 movs r0, #9 + 8000ae6: f000 f843 bl 8000b70 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000aea: f000 f809 bl 8000b00 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000aee: f000 f80f bl 8000b10 + MAX7219_Clear(); // clear all digits + 8000af2: f000 f827 bl 8000b44 + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000af6: 200f movs r0, #15 + 8000af8: f000 f812 bl 8000b20 +} + 8000afc: bf00 nop + 8000afe: bd80 pop {r7, pc} + +08000b00 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000b00: b580 push {r7, lr} + 8000b02: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000b04: 2101 movs r1, #1 + 8000b06: 200c movs r0, #12 + 8000b08: f000 f832 bl 8000b70 +} + 8000b0c: bf00 nop + 8000b0e: bd80 pop {r7, pc} + +08000b10 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000b10: b580 push {r7, lr} + 8000b12: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000b14: 2100 movs r1, #0 + 8000b16: 200f movs r0, #15 + 8000b18: f000 f82a bl 8000b70 +} + 8000b1c: bf00 nop + 8000b1e: bd80 pop {r7, pc} + +08000b20 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000b20: b580 push {r7, lr} + 8000b22: b082 sub sp, #8 + 8000b24: af00 add r7, sp, #0 + 8000b26: 4603 mov r3, r0 + 8000b28: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000b2a: 79fb ldrb r3, [r7, #7] + 8000b2c: f003 030f and.w r3, r3, #15 + 8000b30: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000b32: 79fb ldrb r3, [r7, #7] + 8000b34: 4619 mov r1, r3 + 8000b36: 200a movs r0, #10 + 8000b38: f000 f81a bl 8000b70 +} + 8000b3c: bf00 nop + 8000b3e: 3708 adds r7, #8 + 8000b40: 46bd mov sp, r7 + 8000b42: bd80 pop {r7, pc} + +08000b44 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000b44: b580 push {r7, lr} + 8000b46: b082 sub sp, #8 + 8000b48: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000b4a: 2300 movs r3, #0 + 8000b4c: 71fb strb r3, [r7, #7] + 8000b4e: e007 b.n 8000b60 + MAX7219_Write(i, 0x00); // turn all segments off + 8000b50: 79fb ldrb r3, [r7, #7] + 8000b52: 2100 movs r1, #0 + 8000b54: 4618 mov r0, r3 + 8000b56: f000 f80b bl 8000b70 + for (i=0; i < 8; i++) + 8000b5a: 79fb ldrb r3, [r7, #7] + 8000b5c: 3301 adds r3, #1 + 8000b5e: 71fb strb r3, [r7, #7] + 8000b60: 79fb ldrb r3, [r7, #7] + 8000b62: 2b07 cmp r3, #7 + 8000b64: d9f4 bls.n 8000b50 +} + 8000b66: bf00 nop + 8000b68: bf00 nop + 8000b6a: 3708 adds r7, #8 + 8000b6c: 46bd mov sp, r7 + 8000b6e: bd80 pop {r7, pc} + +08000b70 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000b70: b580 push {r7, lr} + 8000b72: b082 sub sp, #8 + 8000b74: af00 add r7, sp, #0 + 8000b76: 4603 mov r3, r0 + 8000b78: 460a mov r2, r1 + 8000b7a: 71fb strb r3, [r7, #7] + 8000b7c: 4613 mov r3, r2 + 8000b7e: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000b80: 4b09 ldr r3, [pc, #36] @ (8000ba8 ) + 8000b82: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000b86: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000b88: 79fb ldrb r3, [r7, #7] + 8000b8a: 4618 mov r0, r3 + 8000b8c: f000 f80e bl 8000bac + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000b90: 79bb ldrb r3, [r7, #6] + 8000b92: 4618 mov r0, r3 + 8000b94: f000 f80a bl 8000bac + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000b98: 4b03 ldr r3, [pc, #12] @ (8000ba8 ) + 8000b9a: 2201 movs r2, #1 + 8000b9c: 619a str r2, [r3, #24] + } + 8000b9e: bf00 nop + 8000ba0: 3708 adds r7, #8 + 8000ba2: 46bd mov sp, r7 + 8000ba4: bd80 pop {r7, pc} + 8000ba6: bf00 nop + 8000ba8: 40020800 .word 0x40020800 + +08000bac : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000bac: b580 push {r7, lr} + 8000bae: b082 sub sp, #8 + 8000bb0: af00 add r7, sp, #0 + 8000bb2: 4603 mov r3, r0 + 8000bb4: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000bb6: 1df9 adds r1, r7, #7 + 8000bb8: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000bbc: 2201 movs r2, #1 + 8000bbe: 4803 ldr r0, [pc, #12] @ (8000bcc ) + 8000bc0: f001 f957 bl 8001e72 + +} + 8000bc4: bf00 nop + 8000bc6: 3708 adds r7, #8 + 8000bc8: 46bd mov sp, r7 + 8000bca: bd80 pop {r7, pc} + 8000bcc: 20000028 .word 0x20000028 + +08000bd0 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000bd0: b580 push {r7, lr} + 8000bd2: b082 sub sp, #8 + 8000bd4: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000bd6: 2300 movs r3, #0 + 8000bd8: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000bda: 2003 movs r0, #3 + 8000bdc: f000 f932 bl 8000e44 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000be0: 200f movs r0, #15 + 8000be2: f000 f80d bl 8000c00 + 8000be6: 4603 mov r3, r0 + 8000be8: 2b00 cmp r3, #0 + 8000bea: d002 beq.n 8000bf2 + { + status = HAL_ERROR; + 8000bec: 2301 movs r3, #1 + 8000bee: 71fb strb r3, [r7, #7] + 8000bf0: e001 b.n 8000bf6 + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000bf2: f7ff fe0f bl 8000814 + } + + /* Return function status */ + return status; + 8000bf6: 79fb ldrb r3, [r7, #7] +} + 8000bf8: 4618 mov r0, r3 + 8000bfa: 3708 adds r7, #8 + 8000bfc: 46bd mov sp, r7 + 8000bfe: bd80 pop {r7, pc} + +08000c00 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000c00: b580 push {r7, lr} + 8000c02: b084 sub sp, #16 + 8000c04: af00 add r7, sp, #0 + 8000c06: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000c08: 2300 movs r3, #0 + 8000c0a: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000c0c: 4b16 ldr r3, [pc, #88] @ (8000c68 ) + 8000c0e: 681b ldr r3, [r3, #0] + 8000c10: 2b00 cmp r3, #0 + 8000c12: d022 beq.n 8000c5a + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000c14: 4b15 ldr r3, [pc, #84] @ (8000c6c ) + 8000c16: 681a ldr r2, [r3, #0] + 8000c18: 4b13 ldr r3, [pc, #76] @ (8000c68 ) + 8000c1a: 681b ldr r3, [r3, #0] + 8000c1c: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000c20: fbb1 f3f3 udiv r3, r1, r3 + 8000c24: fbb2 f3f3 udiv r3, r2, r3 + 8000c28: 4618 mov r0, r3 + 8000c2a: f000 f940 bl 8000eae + 8000c2e: 4603 mov r3, r0 + 8000c30: 2b00 cmp r3, #0 + 8000c32: d10f bne.n 8000c54 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000c34: 687b ldr r3, [r7, #4] + 8000c36: 2b0f cmp r3, #15 + 8000c38: d809 bhi.n 8000c4e + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000c3a: 2200 movs r2, #0 + 8000c3c: 6879 ldr r1, [r7, #4] + 8000c3e: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000c42: f000 f90a bl 8000e5a + uwTickPrio = TickPriority; + 8000c46: 4a0a ldr r2, [pc, #40] @ (8000c70 ) + 8000c48: 687b ldr r3, [r7, #4] + 8000c4a: 6013 str r3, [r2, #0] + 8000c4c: e007 b.n 8000c5e + } + else + { + status = HAL_ERROR; + 8000c4e: 2301 movs r3, #1 + 8000c50: 73fb strb r3, [r7, #15] + 8000c52: e004 b.n 8000c5e + } + } + else + { + status = HAL_ERROR; + 8000c54: 2301 movs r3, #1 + 8000c56: 73fb strb r3, [r7, #15] + 8000c58: e001 b.n 8000c5e + } + } + else + { + status = HAL_ERROR; + 8000c5a: 2301 movs r3, #1 + 8000c5c: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000c5e: 7bfb ldrb r3, [r7, #15] +} + 8000c60: 4618 mov r0, r3 + 8000c62: 3710 adds r7, #16 + 8000c64: 46bd mov sp, r7 + 8000c66: bd80 pop {r7, pc} + 8000c68: 20000008 .word 0x20000008 + 8000c6c: 20000000 .word 0x20000000 + 8000c70: 20000004 .word 0x20000004 + +08000c74 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000c74: b480 push {r7} + 8000c76: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000c78: 4b05 ldr r3, [pc, #20] @ (8000c90 ) + 8000c7a: 681a ldr r2, [r3, #0] + 8000c7c: 4b05 ldr r3, [pc, #20] @ (8000c94 ) + 8000c7e: 681b ldr r3, [r3, #0] + 8000c80: 4413 add r3, r2 + 8000c82: 4a03 ldr r2, [pc, #12] @ (8000c90 ) + 8000c84: 6013 str r3, [r2, #0] +} + 8000c86: bf00 nop + 8000c88: 46bd mov sp, r7 + 8000c8a: bc80 pop {r7} + 8000c8c: 4770 bx lr + 8000c8e: bf00 nop + 8000c90: 20000100 .word 0x20000100 + 8000c94: 20000008 .word 0x20000008 + +08000c98 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000c98: b480 push {r7} + 8000c9a: af00 add r7, sp, #0 + return uwTick; + 8000c9c: 4b02 ldr r3, [pc, #8] @ (8000ca8 ) + 8000c9e: 681b ldr r3, [r3, #0] +} + 8000ca0: 4618 mov r0, r3 + 8000ca2: 46bd mov sp, r7 + 8000ca4: bc80 pop {r7} + 8000ca6: 4770 bx lr + 8000ca8: 20000100 .word 0x20000100 + +08000cac <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000cac: b480 push {r7} + 8000cae: b085 sub sp, #20 + 8000cb0: af00 add r7, sp, #0 + 8000cb2: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000cb4: 687b ldr r3, [r7, #4] + 8000cb6: f003 0307 and.w r3, r3, #7 + 8000cba: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000cbc: 4b0c ldr r3, [pc, #48] @ (8000cf0 <__NVIC_SetPriorityGrouping+0x44>) + 8000cbe: 68db ldr r3, [r3, #12] + 8000cc0: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000cc2: 68ba ldr r2, [r7, #8] + 8000cc4: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000cc8: 4013 ands r3, r2 + 8000cca: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000ccc: 68fb ldr r3, [r7, #12] + 8000cce: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000cd0: 68bb ldr r3, [r7, #8] + 8000cd2: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000cd4: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000cd8: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000cdc: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000cde: 4a04 ldr r2, [pc, #16] @ (8000cf0 <__NVIC_SetPriorityGrouping+0x44>) + 8000ce0: 68bb ldr r3, [r7, #8] + 8000ce2: 60d3 str r3, [r2, #12] +} + 8000ce4: bf00 nop + 8000ce6: 3714 adds r7, #20 + 8000ce8: 46bd mov sp, r7 + 8000cea: bc80 pop {r7} + 8000cec: 4770 bx lr + 8000cee: bf00 nop + 8000cf0: e000ed00 .word 0xe000ed00 + +08000cf4 <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000cf4: b480 push {r7} + 8000cf6: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000cf8: 4b04 ldr r3, [pc, #16] @ (8000d0c <__NVIC_GetPriorityGrouping+0x18>) + 8000cfa: 68db ldr r3, [r3, #12] + 8000cfc: 0a1b lsrs r3, r3, #8 + 8000cfe: f003 0307 and.w r3, r3, #7 +} + 8000d02: 4618 mov r0, r3 + 8000d04: 46bd mov sp, r7 + 8000d06: bc80 pop {r7} + 8000d08: 4770 bx lr + 8000d0a: bf00 nop + 8000d0c: e000ed00 .word 0xe000ed00 + +08000d10 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000d10: b480 push {r7} + 8000d12: b083 sub sp, #12 + 8000d14: af00 add r7, sp, #0 + 8000d16: 4603 mov r3, r0 + 8000d18: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000d1a: f997 3007 ldrsb.w r3, [r7, #7] + 8000d1e: 2b00 cmp r3, #0 + 8000d20: db0b blt.n 8000d3a <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000d22: 79fb ldrb r3, [r7, #7] + 8000d24: f003 021f and.w r2, r3, #31 + 8000d28: 4906 ldr r1, [pc, #24] @ (8000d44 <__NVIC_EnableIRQ+0x34>) + 8000d2a: f997 3007 ldrsb.w r3, [r7, #7] + 8000d2e: 095b lsrs r3, r3, #5 + 8000d30: 2001 movs r0, #1 + 8000d32: fa00 f202 lsl.w r2, r0, r2 + 8000d36: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000d3a: bf00 nop + 8000d3c: 370c adds r7, #12 + 8000d3e: 46bd mov sp, r7 + 8000d40: bc80 pop {r7} + 8000d42: 4770 bx lr + 8000d44: e000e100 .word 0xe000e100 + +08000d48 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000d48: b480 push {r7} + 8000d4a: b083 sub sp, #12 + 8000d4c: af00 add r7, sp, #0 + 8000d4e: 4603 mov r3, r0 + 8000d50: 6039 str r1, [r7, #0] + 8000d52: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000d54: f997 3007 ldrsb.w r3, [r7, #7] + 8000d58: 2b00 cmp r3, #0 + 8000d5a: db0a blt.n 8000d72 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000d5c: 683b ldr r3, [r7, #0] + 8000d5e: b2da uxtb r2, r3 + 8000d60: 490c ldr r1, [pc, #48] @ (8000d94 <__NVIC_SetPriority+0x4c>) + 8000d62: f997 3007 ldrsb.w r3, [r7, #7] + 8000d66: 0112 lsls r2, r2, #4 + 8000d68: b2d2 uxtb r2, r2 + 8000d6a: 440b add r3, r1 + 8000d6c: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000d70: e00a b.n 8000d88 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000d72: 683b ldr r3, [r7, #0] + 8000d74: b2da uxtb r2, r3 + 8000d76: 4908 ldr r1, [pc, #32] @ (8000d98 <__NVIC_SetPriority+0x50>) + 8000d78: 79fb ldrb r3, [r7, #7] + 8000d7a: f003 030f and.w r3, r3, #15 + 8000d7e: 3b04 subs r3, #4 + 8000d80: 0112 lsls r2, r2, #4 + 8000d82: b2d2 uxtb r2, r2 + 8000d84: 440b add r3, r1 + 8000d86: 761a strb r2, [r3, #24] +} + 8000d88: bf00 nop + 8000d8a: 370c adds r7, #12 + 8000d8c: 46bd mov sp, r7 + 8000d8e: bc80 pop {r7} + 8000d90: 4770 bx lr + 8000d92: bf00 nop + 8000d94: e000e100 .word 0xe000e100 + 8000d98: e000ed00 .word 0xe000ed00 + +08000d9c : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000d9c: b480 push {r7} + 8000d9e: b089 sub sp, #36 @ 0x24 + 8000da0: af00 add r7, sp, #0 + 8000da2: 60f8 str r0, [r7, #12] + 8000da4: 60b9 str r1, [r7, #8] + 8000da6: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000da8: 68fb ldr r3, [r7, #12] + 8000daa: f003 0307 and.w r3, r3, #7 + 8000dae: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000db0: 69fb ldr r3, [r7, #28] + 8000db2: f1c3 0307 rsb r3, r3, #7 + 8000db6: 2b04 cmp r3, #4 + 8000db8: bf28 it cs + 8000dba: 2304 movcs r3, #4 + 8000dbc: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000dbe: 69fb ldr r3, [r7, #28] + 8000dc0: 3304 adds r3, #4 + 8000dc2: 2b06 cmp r3, #6 + 8000dc4: d902 bls.n 8000dcc + 8000dc6: 69fb ldr r3, [r7, #28] + 8000dc8: 3b03 subs r3, #3 + 8000dca: e000 b.n 8000dce + 8000dcc: 2300 movs r3, #0 + 8000dce: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000dd0: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000dd4: 69bb ldr r3, [r7, #24] + 8000dd6: fa02 f303 lsl.w r3, r2, r3 + 8000dda: 43da mvns r2, r3 + 8000ddc: 68bb ldr r3, [r7, #8] + 8000dde: 401a ands r2, r3 + 8000de0: 697b ldr r3, [r7, #20] + 8000de2: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000de4: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000de8: 697b ldr r3, [r7, #20] + 8000dea: fa01 f303 lsl.w r3, r1, r3 + 8000dee: 43d9 mvns r1, r3 + 8000df0: 687b ldr r3, [r7, #4] + 8000df2: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000df4: 4313 orrs r3, r2 + ); +} + 8000df6: 4618 mov r0, r3 + 8000df8: 3724 adds r7, #36 @ 0x24 + 8000dfa: 46bd mov sp, r7 + 8000dfc: bc80 pop {r7} + 8000dfe: 4770 bx lr + +08000e00 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000e00: b580 push {r7, lr} + 8000e02: b082 sub sp, #8 + 8000e04: af00 add r7, sp, #0 + 8000e06: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000e08: 687b ldr r3, [r7, #4] + 8000e0a: 3b01 subs r3, #1 + 8000e0c: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000e10: d301 bcc.n 8000e16 + { + return (1UL); /* Reload value impossible */ + 8000e12: 2301 movs r3, #1 + 8000e14: e00f b.n 8000e36 + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000e16: 4a0a ldr r2, [pc, #40] @ (8000e40 ) + 8000e18: 687b ldr r3, [r7, #4] + 8000e1a: 3b01 subs r3, #1 + 8000e1c: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000e1e: 210f movs r1, #15 + 8000e20: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000e24: f7ff ff90 bl 8000d48 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000e28: 4b05 ldr r3, [pc, #20] @ (8000e40 ) + 8000e2a: 2200 movs r2, #0 + 8000e2c: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000e2e: 4b04 ldr r3, [pc, #16] @ (8000e40 ) + 8000e30: 2207 movs r2, #7 + 8000e32: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000e34: 2300 movs r3, #0 +} + 8000e36: 4618 mov r0, r3 + 8000e38: 3708 adds r7, #8 + 8000e3a: 46bd mov sp, r7 + 8000e3c: bd80 pop {r7, pc} + 8000e3e: bf00 nop + 8000e40: e000e010 .word 0xe000e010 + +08000e44 : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000e44: b580 push {r7, lr} + 8000e46: b082 sub sp, #8 + 8000e48: af00 add r7, sp, #0 + 8000e4a: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000e4c: 6878 ldr r0, [r7, #4] + 8000e4e: f7ff ff2d bl 8000cac <__NVIC_SetPriorityGrouping> +} + 8000e52: bf00 nop + 8000e54: 3708 adds r7, #8 + 8000e56: 46bd mov sp, r7 + 8000e58: bd80 pop {r7, pc} + +08000e5a : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000e5a: b580 push {r7, lr} + 8000e5c: b086 sub sp, #24 + 8000e5e: af00 add r7, sp, #0 + 8000e60: 4603 mov r3, r0 + 8000e62: 60b9 str r1, [r7, #8] + 8000e64: 607a str r2, [r7, #4] + 8000e66: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000e68: 2300 movs r3, #0 + 8000e6a: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000e6c: f7ff ff42 bl 8000cf4 <__NVIC_GetPriorityGrouping> + 8000e70: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000e72: 687a ldr r2, [r7, #4] + 8000e74: 68b9 ldr r1, [r7, #8] + 8000e76: 6978 ldr r0, [r7, #20] + 8000e78: f7ff ff90 bl 8000d9c + 8000e7c: 4602 mov r2, r0 + 8000e7e: f997 300f ldrsb.w r3, [r7, #15] + 8000e82: 4611 mov r1, r2 + 8000e84: 4618 mov r0, r3 + 8000e86: f7ff ff5f bl 8000d48 <__NVIC_SetPriority> +} + 8000e8a: bf00 nop + 8000e8c: 3718 adds r7, #24 + 8000e8e: 46bd mov sp, r7 + 8000e90: bd80 pop {r7, pc} + +08000e92 : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000e92: b580 push {r7, lr} + 8000e94: b082 sub sp, #8 + 8000e96: af00 add r7, sp, #0 + 8000e98: 4603 mov r3, r0 + 8000e9a: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000e9c: f997 3007 ldrsb.w r3, [r7, #7] + 8000ea0: 4618 mov r0, r3 + 8000ea2: f7ff ff35 bl 8000d10 <__NVIC_EnableIRQ> +} + 8000ea6: bf00 nop + 8000ea8: 3708 adds r7, #8 + 8000eaa: 46bd mov sp, r7 + 8000eac: bd80 pop {r7, pc} + +08000eae : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000eae: b580 push {r7, lr} + 8000eb0: b082 sub sp, #8 + 8000eb2: af00 add r7, sp, #0 + 8000eb4: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000eb6: 6878 ldr r0, [r7, #4] + 8000eb8: f7ff ffa2 bl 8000e00 + 8000ebc: 4603 mov r3, r0 +} + 8000ebe: 4618 mov r0, r3 + 8000ec0: 3708 adds r7, #8 + 8000ec2: 46bd mov sp, r7 + 8000ec4: bd80 pop {r7, pc} + ... + +08000ec8 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000ec8: b480 push {r7} + 8000eca: b087 sub sp, #28 + 8000ecc: af00 add r7, sp, #0 + 8000ece: 6078 str r0, [r7, #4] + 8000ed0: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000ed2: 2300 movs r3, #0 + 8000ed4: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000ed6: 2300 movs r3, #0 + 8000ed8: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8000eda: 2300 movs r3, #0 + 8000edc: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8000ede: e160 b.n 80011a2 + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8000ee0: 683b ldr r3, [r7, #0] + 8000ee2: 681a ldr r2, [r3, #0] + 8000ee4: 2101 movs r1, #1 + 8000ee6: 697b ldr r3, [r7, #20] + 8000ee8: fa01 f303 lsl.w r3, r1, r3 + 8000eec: 4013 ands r3, r2 + 8000eee: 60fb str r3, [r7, #12] + + if (iocurrent) + 8000ef0: 68fb ldr r3, [r7, #12] + 8000ef2: 2b00 cmp r3, #0 + 8000ef4: f000 8152 beq.w 800119c + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000ef8: 683b ldr r3, [r7, #0] + 8000efa: 685b ldr r3, [r3, #4] + 8000efc: f003 0303 and.w r3, r3, #3 + 8000f00: 2b01 cmp r3, #1 + 8000f02: d005 beq.n 8000f10 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8000f04: 683b ldr r3, [r7, #0] + 8000f06: 685b ldr r3, [r3, #4] + 8000f08: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000f0c: 2b02 cmp r3, #2 + 8000f0e: d130 bne.n 8000f72 + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8000f10: 687b ldr r3, [r7, #4] + 8000f12: 689b ldr r3, [r3, #8] + 8000f14: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 8000f16: 697b ldr r3, [r7, #20] + 8000f18: 005b lsls r3, r3, #1 + 8000f1a: 2203 movs r2, #3 + 8000f1c: fa02 f303 lsl.w r3, r2, r3 + 8000f20: 43db mvns r3, r3 + 8000f22: 693a ldr r2, [r7, #16] + 8000f24: 4013 ands r3, r2 + 8000f26: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8000f28: 683b ldr r3, [r7, #0] + 8000f2a: 68da ldr r2, [r3, #12] + 8000f2c: 697b ldr r3, [r7, #20] + 8000f2e: 005b lsls r3, r3, #1 + 8000f30: fa02 f303 lsl.w r3, r2, r3 + 8000f34: 693a ldr r2, [r7, #16] + 8000f36: 4313 orrs r3, r2 + 8000f38: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8000f3a: 687b ldr r3, [r7, #4] + 8000f3c: 693a ldr r2, [r7, #16] + 8000f3e: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8000f40: 687b ldr r3, [r7, #4] + 8000f42: 685b ldr r3, [r3, #4] + 8000f44: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 8000f46: 2201 movs r2, #1 + 8000f48: 697b ldr r3, [r7, #20] + 8000f4a: fa02 f303 lsl.w r3, r2, r3 + 8000f4e: 43db mvns r3, r3 + 8000f50: 693a ldr r2, [r7, #16] + 8000f52: 4013 ands r3, r2 + 8000f54: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8000f56: 683b ldr r3, [r7, #0] + 8000f58: 685b ldr r3, [r3, #4] + 8000f5a: 091b lsrs r3, r3, #4 + 8000f5c: f003 0201 and.w r2, r3, #1 + 8000f60: 697b ldr r3, [r7, #20] + 8000f62: fa02 f303 lsl.w r3, r2, r3 + 8000f66: 693a ldr r2, [r7, #16] + 8000f68: 4313 orrs r3, r2 + 8000f6a: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8000f6c: 687b ldr r3, [r7, #4] + 8000f6e: 693a ldr r2, [r7, #16] + 8000f70: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8000f72: 683b ldr r3, [r7, #0] + 8000f74: 685b ldr r3, [r3, #4] + 8000f76: f003 0303 and.w r3, r3, #3 + 8000f7a: 2b03 cmp r3, #3 + 8000f7c: d017 beq.n 8000fae + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8000f7e: 687b ldr r3, [r7, #4] + 8000f80: 68db ldr r3, [r3, #12] + 8000f82: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 8000f84: 697b ldr r3, [r7, #20] + 8000f86: 005b lsls r3, r3, #1 + 8000f88: 2203 movs r2, #3 + 8000f8a: fa02 f303 lsl.w r3, r2, r3 + 8000f8e: 43db mvns r3, r3 + 8000f90: 693a ldr r2, [r7, #16] + 8000f92: 4013 ands r3, r2 + 8000f94: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 8000f96: 683b ldr r3, [r7, #0] + 8000f98: 689a ldr r2, [r3, #8] + 8000f9a: 697b ldr r3, [r7, #20] + 8000f9c: 005b lsls r3, r3, #1 + 8000f9e: fa02 f303 lsl.w r3, r2, r3 + 8000fa2: 693a ldr r2, [r7, #16] + 8000fa4: 4313 orrs r3, r2 + 8000fa6: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8000fa8: 687b ldr r3, [r7, #4] + 8000faa: 693a ldr r2, [r7, #16] + 8000fac: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8000fae: 683b ldr r3, [r7, #0] + 8000fb0: 685b ldr r3, [r3, #4] + 8000fb2: f003 0303 and.w r3, r3, #3 + 8000fb6: 2b02 cmp r3, #2 + 8000fb8: d123 bne.n 8001002 + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 8000fba: 697b ldr r3, [r7, #20] + 8000fbc: 08da lsrs r2, r3, #3 + 8000fbe: 687b ldr r3, [r7, #4] + 8000fc0: 3208 adds r2, #8 + 8000fc2: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000fc6: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 8000fc8: 697b ldr r3, [r7, #20] + 8000fca: f003 0307 and.w r3, r3, #7 + 8000fce: 009b lsls r3, r3, #2 + 8000fd0: 220f movs r2, #15 + 8000fd2: fa02 f303 lsl.w r3, r2, r3 + 8000fd6: 43db mvns r3, r3 + 8000fd8: 693a ldr r2, [r7, #16] + 8000fda: 4013 ands r3, r2 + 8000fdc: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8000fde: 683b ldr r3, [r7, #0] + 8000fe0: 691a ldr r2, [r3, #16] + 8000fe2: 697b ldr r3, [r7, #20] + 8000fe4: f003 0307 and.w r3, r3, #7 + 8000fe8: 009b lsls r3, r3, #2 + 8000fea: fa02 f303 lsl.w r3, r2, r3 + 8000fee: 693a ldr r2, [r7, #16] + 8000ff0: 4313 orrs r3, r2 + 8000ff2: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8000ff4: 697b ldr r3, [r7, #20] + 8000ff6: 08da lsrs r2, r3, #3 + 8000ff8: 687b ldr r3, [r7, #4] + 8000ffa: 3208 adds r2, #8 + 8000ffc: 6939 ldr r1, [r7, #16] + 8000ffe: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8001002: 687b ldr r3, [r7, #4] + 8001004: 681b ldr r3, [r3, #0] + 8001006: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8001008: 697b ldr r3, [r7, #20] + 800100a: 005b lsls r3, r3, #1 + 800100c: 2203 movs r2, #3 + 800100e: fa02 f303 lsl.w r3, r2, r3 + 8001012: 43db mvns r3, r3 + 8001014: 693a ldr r2, [r7, #16] + 8001016: 4013 ands r3, r2 + 8001018: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 800101a: 683b ldr r3, [r7, #0] + 800101c: 685b ldr r3, [r3, #4] + 800101e: f003 0203 and.w r2, r3, #3 + 8001022: 697b ldr r3, [r7, #20] + 8001024: 005b lsls r3, r3, #1 + 8001026: fa02 f303 lsl.w r3, r2, r3 + 800102a: 693a ldr r2, [r7, #16] + 800102c: 4313 orrs r3, r2 + 800102e: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001030: 687b ldr r3, [r7, #4] + 8001032: 693a ldr r2, [r7, #16] + 8001034: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 8001036: 683b ldr r3, [r7, #0] + 8001038: 685b ldr r3, [r3, #4] + 800103a: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 800103e: 2b00 cmp r3, #0 + 8001040: f000 80ac beq.w 800119c + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8001044: 4b5e ldr r3, [pc, #376] @ (80011c0 ) + 8001046: 6a1b ldr r3, [r3, #32] + 8001048: 4a5d ldr r2, [pc, #372] @ (80011c0 ) + 800104a: f043 0301 orr.w r3, r3, #1 + 800104e: 6213 str r3, [r2, #32] + 8001050: 4b5b ldr r3, [pc, #364] @ (80011c0 ) + 8001052: 6a1b ldr r3, [r3, #32] + 8001054: f003 0301 and.w r3, r3, #1 + 8001058: 60bb str r3, [r7, #8] + 800105a: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 800105c: 4a59 ldr r2, [pc, #356] @ (80011c4 ) + 800105e: 697b ldr r3, [r7, #20] + 8001060: 089b lsrs r3, r3, #2 + 8001062: 3302 adds r3, #2 + 8001064: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001068: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 800106a: 697b ldr r3, [r7, #20] + 800106c: f003 0303 and.w r3, r3, #3 + 8001070: 009b lsls r3, r3, #2 + 8001072: 220f movs r2, #15 + 8001074: fa02 f303 lsl.w r3, r2, r3 + 8001078: 43db mvns r3, r3 + 800107a: 693a ldr r2, [r7, #16] + 800107c: 4013 ands r3, r2 + 800107e: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8001080: 687b ldr r3, [r7, #4] + 8001082: 4a51 ldr r2, [pc, #324] @ (80011c8 ) + 8001084: 4293 cmp r3, r2 + 8001086: d025 beq.n 80010d4 + 8001088: 687b ldr r3, [r7, #4] + 800108a: 4a50 ldr r2, [pc, #320] @ (80011cc ) + 800108c: 4293 cmp r3, r2 + 800108e: d01f beq.n 80010d0 + 8001090: 687b ldr r3, [r7, #4] + 8001092: 4a4f ldr r2, [pc, #316] @ (80011d0 ) + 8001094: 4293 cmp r3, r2 + 8001096: d019 beq.n 80010cc + 8001098: 687b ldr r3, [r7, #4] + 800109a: 4a4e ldr r2, [pc, #312] @ (80011d4 ) + 800109c: 4293 cmp r3, r2 + 800109e: d013 beq.n 80010c8 + 80010a0: 687b ldr r3, [r7, #4] + 80010a2: 4a4d ldr r2, [pc, #308] @ (80011d8 ) + 80010a4: 4293 cmp r3, r2 + 80010a6: d00d beq.n 80010c4 + 80010a8: 687b ldr r3, [r7, #4] + 80010aa: 4a4c ldr r2, [pc, #304] @ (80011dc ) + 80010ac: 4293 cmp r3, r2 + 80010ae: d007 beq.n 80010c0 + 80010b0: 687b ldr r3, [r7, #4] + 80010b2: 4a4b ldr r2, [pc, #300] @ (80011e0 ) + 80010b4: 4293 cmp r3, r2 + 80010b6: d101 bne.n 80010bc + 80010b8: 2306 movs r3, #6 + 80010ba: e00c b.n 80010d6 + 80010bc: 2307 movs r3, #7 + 80010be: e00a b.n 80010d6 + 80010c0: 2305 movs r3, #5 + 80010c2: e008 b.n 80010d6 + 80010c4: 2304 movs r3, #4 + 80010c6: e006 b.n 80010d6 + 80010c8: 2303 movs r3, #3 + 80010ca: e004 b.n 80010d6 + 80010cc: 2302 movs r3, #2 + 80010ce: e002 b.n 80010d6 + 80010d0: 2301 movs r3, #1 + 80010d2: e000 b.n 80010d6 + 80010d4: 2300 movs r3, #0 + 80010d6: 697a ldr r2, [r7, #20] + 80010d8: f002 0203 and.w r2, r2, #3 + 80010dc: 0092 lsls r2, r2, #2 + 80010de: 4093 lsls r3, r2 + 80010e0: 693a ldr r2, [r7, #16] + 80010e2: 4313 orrs r3, r2 + 80010e4: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 80010e6: 4937 ldr r1, [pc, #220] @ (80011c4 ) + 80010e8: 697b ldr r3, [r7, #20] + 80010ea: 089b lsrs r3, r3, #2 + 80010ec: 3302 adds r3, #2 + 80010ee: 693a ldr r2, [r7, #16] + 80010f0: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 80010f4: 4b3b ldr r3, [pc, #236] @ (80011e4 ) + 80010f6: 689b ldr r3, [r3, #8] + 80010f8: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80010fa: 68fb ldr r3, [r7, #12] + 80010fc: 43db mvns r3, r3 + 80010fe: 693a ldr r2, [r7, #16] + 8001100: 4013 ands r3, r2 + 8001102: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 8001104: 683b ldr r3, [r7, #0] + 8001106: 685b ldr r3, [r3, #4] + 8001108: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 800110c: 2b00 cmp r3, #0 + 800110e: d003 beq.n 8001118 + { + SET_BIT(temp, iocurrent); + 8001110: 693a ldr r2, [r7, #16] + 8001112: 68fb ldr r3, [r7, #12] + 8001114: 4313 orrs r3, r2 + 8001116: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001118: 4a32 ldr r2, [pc, #200] @ (80011e4 ) + 800111a: 693b ldr r3, [r7, #16] + 800111c: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 800111e: 4b31 ldr r3, [pc, #196] @ (80011e4 ) + 8001120: 68db ldr r3, [r3, #12] + 8001122: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001124: 68fb ldr r3, [r7, #12] + 8001126: 43db mvns r3, r3 + 8001128: 693a ldr r2, [r7, #16] + 800112a: 4013 ands r3, r2 + 800112c: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 800112e: 683b ldr r3, [r7, #0] + 8001130: 685b ldr r3, [r3, #4] + 8001132: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8001136: 2b00 cmp r3, #0 + 8001138: d003 beq.n 8001142 + { + SET_BIT(temp, iocurrent); + 800113a: 693a ldr r2, [r7, #16] + 800113c: 68fb ldr r3, [r7, #12] + 800113e: 4313 orrs r3, r2 + 8001140: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 8001142: 4a28 ldr r2, [pc, #160] @ (80011e4 ) + 8001144: 693b ldr r3, [r7, #16] + 8001146: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8001148: 4b26 ldr r3, [pc, #152] @ (80011e4 ) + 800114a: 685b ldr r3, [r3, #4] + 800114c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800114e: 68fb ldr r3, [r7, #12] + 8001150: 43db mvns r3, r3 + 8001152: 693a ldr r2, [r7, #16] + 8001154: 4013 ands r3, r2 + 8001156: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001158: 683b ldr r3, [r7, #0] + 800115a: 685b ldr r3, [r3, #4] + 800115c: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001160: 2b00 cmp r3, #0 + 8001162: d003 beq.n 800116c + { + SET_BIT(temp, iocurrent); + 8001164: 693a ldr r2, [r7, #16] + 8001166: 68fb ldr r3, [r7, #12] + 8001168: 4313 orrs r3, r2 + 800116a: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 800116c: 4a1d ldr r2, [pc, #116] @ (80011e4 ) + 800116e: 693b ldr r3, [r7, #16] + 8001170: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 8001172: 4b1c ldr r3, [pc, #112] @ (80011e4 ) + 8001174: 681b ldr r3, [r3, #0] + 8001176: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001178: 68fb ldr r3, [r7, #12] + 800117a: 43db mvns r3, r3 + 800117c: 693a ldr r2, [r7, #16] + 800117e: 4013 ands r3, r2 + 8001180: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 8001182: 683b ldr r3, [r7, #0] + 8001184: 685b ldr r3, [r3, #4] + 8001186: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 800118a: 2b00 cmp r3, #0 + 800118c: d003 beq.n 8001196 + { + SET_BIT(temp, iocurrent); + 800118e: 693a ldr r2, [r7, #16] + 8001190: 68fb ldr r3, [r7, #12] + 8001192: 4313 orrs r3, r2 + 8001194: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 8001196: 4a13 ldr r2, [pc, #76] @ (80011e4 ) + 8001198: 693b ldr r3, [r7, #16] + 800119a: 6013 str r3, [r2, #0] + } + } + + position++; + 800119c: 697b ldr r3, [r7, #20] + 800119e: 3301 adds r3, #1 + 80011a0: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80011a2: 683b ldr r3, [r7, #0] + 80011a4: 681a ldr r2, [r3, #0] + 80011a6: 697b ldr r3, [r7, #20] + 80011a8: fa22 f303 lsr.w r3, r2, r3 + 80011ac: 2b00 cmp r3, #0 + 80011ae: f47f ae97 bne.w 8000ee0 + } +} + 80011b2: bf00 nop + 80011b4: bf00 nop + 80011b6: 371c adds r7, #28 + 80011b8: 46bd mov sp, r7 + 80011ba: bc80 pop {r7} + 80011bc: 4770 bx lr + 80011be: bf00 nop + 80011c0: 40023800 .word 0x40023800 + 80011c4: 40010000 .word 0x40010000 + 80011c8: 40020000 .word 0x40020000 + 80011cc: 40020400 .word 0x40020400 + 80011d0: 40020800 .word 0x40020800 + 80011d4: 40020c00 .word 0x40020c00 + 80011d8: 40021000 .word 0x40021000 + 80011dc: 40021400 .word 0x40021400 + 80011e0: 40021800 .word 0x40021800 + 80011e4: 40010400 .word 0x40010400 + +080011e8 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 80011e8: b480 push {r7} + 80011ea: b083 sub sp, #12 + 80011ec: af00 add r7, sp, #0 + 80011ee: 6078 str r0, [r7, #4] + 80011f0: 460b mov r3, r1 + 80011f2: 807b strh r3, [r7, #2] + 80011f4: 4613 mov r3, r2 + 80011f6: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 80011f8: 787b ldrb r3, [r7, #1] + 80011fa: 2b00 cmp r3, #0 + 80011fc: d003 beq.n 8001206 + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 80011fe: 887a ldrh r2, [r7, #2] + 8001200: 687b ldr r3, [r7, #4] + 8001202: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8001204: e003 b.n 800120e + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 8001206: 887b ldrh r3, [r7, #2] + 8001208: 041a lsls r2, r3, #16 + 800120a: 687b ldr r3, [r7, #4] + 800120c: 619a str r2, [r3, #24] +} + 800120e: bf00 nop + 8001210: 370c adds r7, #12 + 8001212: 46bd mov sp, r7 + 8001214: bc80 pop {r7} + 8001216: 4770 bx lr + +08001218 : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 8001218: b580 push {r7, lr} + 800121a: b082 sub sp, #8 + 800121c: af00 add r7, sp, #0 + 800121e: 4603 mov r3, r0 + 8001220: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 8001222: 4b08 ldr r3, [pc, #32] @ (8001244 ) + 8001224: 695a ldr r2, [r3, #20] + 8001226: 88fb ldrh r3, [r7, #6] + 8001228: 4013 ands r3, r2 + 800122a: 2b00 cmp r3, #0 + 800122c: d006 beq.n 800123c + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 800122e: 4a05 ldr r2, [pc, #20] @ (8001244 ) + 8001230: 88fb ldrh r3, [r7, #6] + 8001232: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 8001234: 88fb ldrh r3, [r7, #6] + 8001236: 4618 mov r0, r3 + 8001238: f000 f806 bl 8001248 + } +} + 800123c: bf00 nop + 800123e: 3708 adds r7, #8 + 8001240: 46bd mov sp, r7 + 8001242: bd80 pop {r7, pc} + 8001244: 40010400 .word 0x40010400 + +08001248 : + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 8001248: b480 push {r7} + 800124a: b083 sub sp, #12 + 800124c: af00 add r7, sp, #0 + 800124e: 4603 mov r3, r0 + 8001250: 80fb strh r3, [r7, #6] + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + 8001252: bf00 nop + 8001254: 370c adds r7, #12 + 8001256: 46bd mov sp, r7 + 8001258: bc80 pop {r7} + 800125a: 4770 bx lr + +0800125c : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 800125c: b580 push {r7, lr} + 800125e: b088 sub sp, #32 + 8001260: af00 add r7, sp, #0 + 8001262: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8001264: 687b ldr r3, [r7, #4] + 8001266: 2b00 cmp r3, #0 + 8001268: d101 bne.n 800126e + { + return HAL_ERROR; + 800126a: 2301 movs r3, #1 + 800126c: e31d b.n 80018aa + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 800126e: 4b94 ldr r3, [pc, #592] @ (80014c0 ) + 8001270: 689b ldr r3, [r3, #8] + 8001272: f003 030c and.w r3, r3, #12 + 8001276: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 8001278: 4b91 ldr r3, [pc, #580] @ (80014c0 ) + 800127a: 689b ldr r3, [r3, #8] + 800127c: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001280: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8001282: 687b ldr r3, [r7, #4] + 8001284: 681b ldr r3, [r3, #0] + 8001286: f003 0301 and.w r3, r3, #1 + 800128a: 2b00 cmp r3, #0 + 800128c: d07b beq.n 8001386 + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 800128e: 69bb ldr r3, [r7, #24] + 8001290: 2b08 cmp r3, #8 + 8001292: d006 beq.n 80012a2 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8001294: 69bb ldr r3, [r7, #24] + 8001296: 2b0c cmp r3, #12 + 8001298: d10f bne.n 80012ba + 800129a: 697b ldr r3, [r7, #20] + 800129c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80012a0: d10b bne.n 80012ba + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80012a2: 4b87 ldr r3, [pc, #540] @ (80014c0 ) + 80012a4: 681b ldr r3, [r3, #0] + 80012a6: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80012aa: 2b00 cmp r3, #0 + 80012ac: d06a beq.n 8001384 + 80012ae: 687b ldr r3, [r7, #4] + 80012b0: 685b ldr r3, [r3, #4] + 80012b2: 2b00 cmp r3, #0 + 80012b4: d166 bne.n 8001384 + { + return HAL_ERROR; + 80012b6: 2301 movs r3, #1 + 80012b8: e2f7 b.n 80018aa + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80012ba: 687b ldr r3, [r7, #4] + 80012bc: 685b ldr r3, [r3, #4] + 80012be: 2b01 cmp r3, #1 + 80012c0: d106 bne.n 80012d0 + 80012c2: 4b7f ldr r3, [pc, #508] @ (80014c0 ) + 80012c4: 681b ldr r3, [r3, #0] + 80012c6: 4a7e ldr r2, [pc, #504] @ (80014c0 ) + 80012c8: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80012cc: 6013 str r3, [r2, #0] + 80012ce: e02d b.n 800132c + 80012d0: 687b ldr r3, [r7, #4] + 80012d2: 685b ldr r3, [r3, #4] + 80012d4: 2b00 cmp r3, #0 + 80012d6: d10c bne.n 80012f2 + 80012d8: 4b79 ldr r3, [pc, #484] @ (80014c0 ) + 80012da: 681b ldr r3, [r3, #0] + 80012dc: 4a78 ldr r2, [pc, #480] @ (80014c0 ) + 80012de: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 80012e2: 6013 str r3, [r2, #0] + 80012e4: 4b76 ldr r3, [pc, #472] @ (80014c0 ) + 80012e6: 681b ldr r3, [r3, #0] + 80012e8: 4a75 ldr r2, [pc, #468] @ (80014c0 ) + 80012ea: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 80012ee: 6013 str r3, [r2, #0] + 80012f0: e01c b.n 800132c + 80012f2: 687b ldr r3, [r7, #4] + 80012f4: 685b ldr r3, [r3, #4] + 80012f6: 2b05 cmp r3, #5 + 80012f8: d10c bne.n 8001314 + 80012fa: 4b71 ldr r3, [pc, #452] @ (80014c0 ) + 80012fc: 681b ldr r3, [r3, #0] + 80012fe: 4a70 ldr r2, [pc, #448] @ (80014c0 ) + 8001300: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8001304: 6013 str r3, [r2, #0] + 8001306: 4b6e ldr r3, [pc, #440] @ (80014c0 ) + 8001308: 681b ldr r3, [r3, #0] + 800130a: 4a6d ldr r2, [pc, #436] @ (80014c0 ) + 800130c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001310: 6013 str r3, [r2, #0] + 8001312: e00b b.n 800132c + 8001314: 4b6a ldr r3, [pc, #424] @ (80014c0 ) + 8001316: 681b ldr r3, [r3, #0] + 8001318: 4a69 ldr r2, [pc, #420] @ (80014c0 ) + 800131a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800131e: 6013 str r3, [r2, #0] + 8001320: 4b67 ldr r3, [pc, #412] @ (80014c0 ) + 8001322: 681b ldr r3, [r3, #0] + 8001324: 4a66 ldr r2, [pc, #408] @ (80014c0 ) + 8001326: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800132a: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 800132c: 687b ldr r3, [r7, #4] + 800132e: 685b ldr r3, [r3, #4] + 8001330: 2b00 cmp r3, #0 + 8001332: d013 beq.n 800135c + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001334: f7ff fcb0 bl 8000c98 + 8001338: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800133a: e008 b.n 800134e + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 800133c: f7ff fcac bl 8000c98 + 8001340: 4602 mov r2, r0 + 8001342: 693b ldr r3, [r7, #16] + 8001344: 1ad3 subs r3, r2, r3 + 8001346: 2b64 cmp r3, #100 @ 0x64 + 8001348: d901 bls.n 800134e + { + return HAL_TIMEOUT; + 800134a: 2303 movs r3, #3 + 800134c: e2ad b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800134e: 4b5c ldr r3, [pc, #368] @ (80014c0 ) + 8001350: 681b ldr r3, [r3, #0] + 8001352: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001356: 2b00 cmp r3, #0 + 8001358: d0f0 beq.n 800133c + 800135a: e014 b.n 8001386 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800135c: f7ff fc9c bl 8000c98 + 8001360: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001362: e008 b.n 8001376 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001364: f7ff fc98 bl 8000c98 + 8001368: 4602 mov r2, r0 + 800136a: 693b ldr r3, [r7, #16] + 800136c: 1ad3 subs r3, r2, r3 + 800136e: 2b64 cmp r3, #100 @ 0x64 + 8001370: d901 bls.n 8001376 + { + return HAL_TIMEOUT; + 8001372: 2303 movs r3, #3 + 8001374: e299 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001376: 4b52 ldr r3, [pc, #328] @ (80014c0 ) + 8001378: 681b ldr r3, [r3, #0] + 800137a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800137e: 2b00 cmp r3, #0 + 8001380: d1f0 bne.n 8001364 + 8001382: e000 b.n 8001386 + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001384: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 8001386: 687b ldr r3, [r7, #4] + 8001388: 681b ldr r3, [r3, #0] + 800138a: f003 0302 and.w r3, r3, #2 + 800138e: 2b00 cmp r3, #0 + 8001390: d05a beq.n 8001448 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 8001392: 69bb ldr r3, [r7, #24] + 8001394: 2b04 cmp r3, #4 + 8001396: d005 beq.n 80013a4 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 8001398: 69bb ldr r3, [r7, #24] + 800139a: 2b0c cmp r3, #12 + 800139c: d119 bne.n 80013d2 + 800139e: 697b ldr r3, [r7, #20] + 80013a0: 2b00 cmp r3, #0 + 80013a2: d116 bne.n 80013d2 + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80013a4: 4b46 ldr r3, [pc, #280] @ (80014c0 ) + 80013a6: 681b ldr r3, [r3, #0] + 80013a8: f003 0302 and.w r3, r3, #2 + 80013ac: 2b00 cmp r3, #0 + 80013ae: d005 beq.n 80013bc + 80013b0: 687b ldr r3, [r7, #4] + 80013b2: 68db ldr r3, [r3, #12] + 80013b4: 2b01 cmp r3, #1 + 80013b6: d001 beq.n 80013bc + { + return HAL_ERROR; + 80013b8: 2301 movs r3, #1 + 80013ba: e276 b.n 80018aa + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80013bc: 4b40 ldr r3, [pc, #256] @ (80014c0 ) + 80013be: 685b ldr r3, [r3, #4] + 80013c0: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80013c4: 687b ldr r3, [r7, #4] + 80013c6: 691b ldr r3, [r3, #16] + 80013c8: 021b lsls r3, r3, #8 + 80013ca: 493d ldr r1, [pc, #244] @ (80014c0 ) + 80013cc: 4313 orrs r3, r2 + 80013ce: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80013d0: e03a b.n 8001448 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 80013d2: 687b ldr r3, [r7, #4] + 80013d4: 68db ldr r3, [r3, #12] + 80013d6: 2b00 cmp r3, #0 + 80013d8: d020 beq.n 800141c + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 80013da: 4b3a ldr r3, [pc, #232] @ (80014c4 ) + 80013dc: 2201 movs r2, #1 + 80013de: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80013e0: f7ff fc5a bl 8000c98 + 80013e4: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80013e6: e008 b.n 80013fa + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 80013e8: f7ff fc56 bl 8000c98 + 80013ec: 4602 mov r2, r0 + 80013ee: 693b ldr r3, [r7, #16] + 80013f0: 1ad3 subs r3, r2, r3 + 80013f2: 2b02 cmp r3, #2 + 80013f4: d901 bls.n 80013fa + { + return HAL_TIMEOUT; + 80013f6: 2303 movs r3, #3 + 80013f8: e257 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80013fa: 4b31 ldr r3, [pc, #196] @ (80014c0 ) + 80013fc: 681b ldr r3, [r3, #0] + 80013fe: f003 0302 and.w r3, r3, #2 + 8001402: 2b00 cmp r3, #0 + 8001404: d0f0 beq.n 80013e8 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001406: 4b2e ldr r3, [pc, #184] @ (80014c0 ) + 8001408: 685b ldr r3, [r3, #4] + 800140a: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 800140e: 687b ldr r3, [r7, #4] + 8001410: 691b ldr r3, [r3, #16] + 8001412: 021b lsls r3, r3, #8 + 8001414: 492a ldr r1, [pc, #168] @ (80014c0 ) + 8001416: 4313 orrs r3, r2 + 8001418: 604b str r3, [r1, #4] + 800141a: e015 b.n 8001448 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 800141c: 4b29 ldr r3, [pc, #164] @ (80014c4 ) + 800141e: 2200 movs r2, #0 + 8001420: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001422: f7ff fc39 bl 8000c98 + 8001426: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001428: e008 b.n 800143c + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800142a: f7ff fc35 bl 8000c98 + 800142e: 4602 mov r2, r0 + 8001430: 693b ldr r3, [r7, #16] + 8001432: 1ad3 subs r3, r2, r3 + 8001434: 2b02 cmp r3, #2 + 8001436: d901 bls.n 800143c + { + return HAL_TIMEOUT; + 8001438: 2303 movs r3, #3 + 800143a: e236 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 800143c: 4b20 ldr r3, [pc, #128] @ (80014c0 ) + 800143e: 681b ldr r3, [r3, #0] + 8001440: f003 0302 and.w r3, r3, #2 + 8001444: 2b00 cmp r3, #0 + 8001446: d1f0 bne.n 800142a + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 8001448: 687b ldr r3, [r7, #4] + 800144a: 681b ldr r3, [r3, #0] + 800144c: f003 0310 and.w r3, r3, #16 + 8001450: 2b00 cmp r3, #0 + 8001452: f000 80b8 beq.w 80015c6 + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 8001456: 69bb ldr r3, [r7, #24] + 8001458: 2b00 cmp r3, #0 + 800145a: d170 bne.n 800153e + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 800145c: 4b18 ldr r3, [pc, #96] @ (80014c0 ) + 800145e: 681b ldr r3, [r3, #0] + 8001460: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001464: 2b00 cmp r3, #0 + 8001466: d005 beq.n 8001474 + 8001468: 687b ldr r3, [r7, #4] + 800146a: 699b ldr r3, [r3, #24] + 800146c: 2b00 cmp r3, #0 + 800146e: d101 bne.n 8001474 + { + return HAL_ERROR; + 8001470: 2301 movs r3, #1 + 8001472: e21a b.n 80018aa + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 8001474: 687b ldr r3, [r7, #4] + 8001476: 6a1a ldr r2, [r3, #32] + 8001478: 4b11 ldr r3, [pc, #68] @ (80014c0 ) + 800147a: 685b ldr r3, [r3, #4] + 800147c: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 8001480: 429a cmp r2, r3 + 8001482: d921 bls.n 80014c8 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001484: 687b ldr r3, [r7, #4] + 8001486: 6a1b ldr r3, [r3, #32] + 8001488: 4618 mov r0, r3 + 800148a: f000 fc09 bl 8001ca0 + 800148e: 4603 mov r3, r0 + 8001490: 2b00 cmp r3, #0 + 8001492: d001 beq.n 8001498 + { + return HAL_ERROR; + 8001494: 2301 movs r3, #1 + 8001496: e208 b.n 80018aa + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001498: 4b09 ldr r3, [pc, #36] @ (80014c0 ) + 800149a: 685b ldr r3, [r3, #4] + 800149c: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80014a0: 687b ldr r3, [r7, #4] + 80014a2: 6a1b ldr r3, [r3, #32] + 80014a4: 4906 ldr r1, [pc, #24] @ (80014c0 ) + 80014a6: 4313 orrs r3, r2 + 80014a8: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80014aa: 4b05 ldr r3, [pc, #20] @ (80014c0 ) + 80014ac: 685b ldr r3, [r3, #4] + 80014ae: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80014b2: 687b ldr r3, [r7, #4] + 80014b4: 69db ldr r3, [r3, #28] + 80014b6: 061b lsls r3, r3, #24 + 80014b8: 4901 ldr r1, [pc, #4] @ (80014c0 ) + 80014ba: 4313 orrs r3, r2 + 80014bc: 604b str r3, [r1, #4] + 80014be: e020 b.n 8001502 + 80014c0: 40023800 .word 0x40023800 + 80014c4: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80014c8: 4b99 ldr r3, [pc, #612] @ (8001730 ) + 80014ca: 685b ldr r3, [r3, #4] + 80014cc: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80014d0: 687b ldr r3, [r7, #4] + 80014d2: 6a1b ldr r3, [r3, #32] + 80014d4: 4996 ldr r1, [pc, #600] @ (8001730 ) + 80014d6: 4313 orrs r3, r2 + 80014d8: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80014da: 4b95 ldr r3, [pc, #596] @ (8001730 ) + 80014dc: 685b ldr r3, [r3, #4] + 80014de: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80014e2: 687b ldr r3, [r7, #4] + 80014e4: 69db ldr r3, [r3, #28] + 80014e6: 061b lsls r3, r3, #24 + 80014e8: 4991 ldr r1, [pc, #580] @ (8001730 ) + 80014ea: 4313 orrs r3, r2 + 80014ec: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80014ee: 687b ldr r3, [r7, #4] + 80014f0: 6a1b ldr r3, [r3, #32] + 80014f2: 4618 mov r0, r3 + 80014f4: f000 fbd4 bl 8001ca0 + 80014f8: 4603 mov r3, r0 + 80014fa: 2b00 cmp r3, #0 + 80014fc: d001 beq.n 8001502 + { + return HAL_ERROR; + 80014fe: 2301 movs r3, #1 + 8001500: e1d3 b.n 80018aa + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001502: 687b ldr r3, [r7, #4] + 8001504: 6a1b ldr r3, [r3, #32] + 8001506: 0b5b lsrs r3, r3, #13 + 8001508: 3301 adds r3, #1 + 800150a: f44f 4200 mov.w r2, #32768 @ 0x8000 + 800150e: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8001512: 4a87 ldr r2, [pc, #540] @ (8001730 ) + 8001514: 6892 ldr r2, [r2, #8] + 8001516: 0912 lsrs r2, r2, #4 + 8001518: f002 020f and.w r2, r2, #15 + 800151c: 4985 ldr r1, [pc, #532] @ (8001734 ) + 800151e: 5c8a ldrb r2, [r1, r2] + 8001520: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001522: 4a85 ldr r2, [pc, #532] @ (8001738 ) + 8001524: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001526: 4b85 ldr r3, [pc, #532] @ (800173c ) + 8001528: 681b ldr r3, [r3, #0] + 800152a: 4618 mov r0, r3 + 800152c: f7ff fb68 bl 8000c00 + 8001530: 4603 mov r3, r0 + 8001532: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 8001534: 7bfb ldrb r3, [r7, #15] + 8001536: 2b00 cmp r3, #0 + 8001538: d045 beq.n 80015c6 + { + return status; + 800153a: 7bfb ldrb r3, [r7, #15] + 800153c: e1b5 b.n 80018aa + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 800153e: 687b ldr r3, [r7, #4] + 8001540: 699b ldr r3, [r3, #24] + 8001542: 2b00 cmp r3, #0 + 8001544: d029 beq.n 800159a + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 8001546: 4b7e ldr r3, [pc, #504] @ (8001740 ) + 8001548: 2201 movs r2, #1 + 800154a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800154c: f7ff fba4 bl 8000c98 + 8001550: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001552: e008 b.n 8001566 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001554: f7ff fba0 bl 8000c98 + 8001558: 4602 mov r2, r0 + 800155a: 693b ldr r3, [r7, #16] + 800155c: 1ad3 subs r3, r2, r3 + 800155e: 2b02 cmp r3, #2 + 8001560: d901 bls.n 8001566 + { + return HAL_TIMEOUT; + 8001562: 2303 movs r3, #3 + 8001564: e1a1 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001566: 4b72 ldr r3, [pc, #456] @ (8001730 ) + 8001568: 681b ldr r3, [r3, #0] + 800156a: f403 7300 and.w r3, r3, #512 @ 0x200 + 800156e: 2b00 cmp r3, #0 + 8001570: d0f0 beq.n 8001554 + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001572: 4b6f ldr r3, [pc, #444] @ (8001730 ) + 8001574: 685b ldr r3, [r3, #4] + 8001576: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 800157a: 687b ldr r3, [r7, #4] + 800157c: 6a1b ldr r3, [r3, #32] + 800157e: 496c ldr r1, [pc, #432] @ (8001730 ) + 8001580: 4313 orrs r3, r2 + 8001582: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001584: 4b6a ldr r3, [pc, #424] @ (8001730 ) + 8001586: 685b ldr r3, [r3, #4] + 8001588: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 800158c: 687b ldr r3, [r7, #4] + 800158e: 69db ldr r3, [r3, #28] + 8001590: 061b lsls r3, r3, #24 + 8001592: 4967 ldr r1, [pc, #412] @ (8001730 ) + 8001594: 4313 orrs r3, r2 + 8001596: 604b str r3, [r1, #4] + 8001598: e015 b.n 80015c6 + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 800159a: 4b69 ldr r3, [pc, #420] @ (8001740 ) + 800159c: 2200 movs r2, #0 + 800159e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80015a0: f7ff fb7a bl 8000c98 + 80015a4: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80015a6: e008 b.n 80015ba + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80015a8: f7ff fb76 bl 8000c98 + 80015ac: 4602 mov r2, r0 + 80015ae: 693b ldr r3, [r7, #16] + 80015b0: 1ad3 subs r3, r2, r3 + 80015b2: 2b02 cmp r3, #2 + 80015b4: d901 bls.n 80015ba + { + return HAL_TIMEOUT; + 80015b6: 2303 movs r3, #3 + 80015b8: e177 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80015ba: 4b5d ldr r3, [pc, #372] @ (8001730 ) + 80015bc: 681b ldr r3, [r3, #0] + 80015be: f403 7300 and.w r3, r3, #512 @ 0x200 + 80015c2: 2b00 cmp r3, #0 + 80015c4: d1f0 bne.n 80015a8 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 80015c6: 687b ldr r3, [r7, #4] + 80015c8: 681b ldr r3, [r3, #0] + 80015ca: f003 0308 and.w r3, r3, #8 + 80015ce: 2b00 cmp r3, #0 + 80015d0: d030 beq.n 8001634 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 80015d2: 687b ldr r3, [r7, #4] + 80015d4: 695b ldr r3, [r3, #20] + 80015d6: 2b00 cmp r3, #0 + 80015d8: d016 beq.n 8001608 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 80015da: 4b5a ldr r3, [pc, #360] @ (8001744 ) + 80015dc: 2201 movs r2, #1 + 80015de: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80015e0: f7ff fb5a bl 8000c98 + 80015e4: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 80015e6: e008 b.n 80015fa + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 80015e8: f7ff fb56 bl 8000c98 + 80015ec: 4602 mov r2, r0 + 80015ee: 693b ldr r3, [r7, #16] + 80015f0: 1ad3 subs r3, r2, r3 + 80015f2: 2b02 cmp r3, #2 + 80015f4: d901 bls.n 80015fa + { + return HAL_TIMEOUT; + 80015f6: 2303 movs r3, #3 + 80015f8: e157 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 80015fa: 4b4d ldr r3, [pc, #308] @ (8001730 ) + 80015fc: 6b5b ldr r3, [r3, #52] @ 0x34 + 80015fe: f003 0302 and.w r3, r3, #2 + 8001602: 2b00 cmp r3, #0 + 8001604: d0f0 beq.n 80015e8 + 8001606: e015 b.n 8001634 + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001608: 4b4e ldr r3, [pc, #312] @ (8001744 ) + 800160a: 2200 movs r2, #0 + 800160c: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800160e: f7ff fb43 bl 8000c98 + 8001612: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001614: e008 b.n 8001628 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001616: f7ff fb3f bl 8000c98 + 800161a: 4602 mov r2, r0 + 800161c: 693b ldr r3, [r7, #16] + 800161e: 1ad3 subs r3, r2, r3 + 8001620: 2b02 cmp r3, #2 + 8001622: d901 bls.n 8001628 + { + return HAL_TIMEOUT; + 8001624: 2303 movs r3, #3 + 8001626: e140 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001628: 4b41 ldr r3, [pc, #260] @ (8001730 ) + 800162a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800162c: f003 0302 and.w r3, r3, #2 + 8001630: 2b00 cmp r3, #0 + 8001632: d1f0 bne.n 8001616 + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 8001634: 687b ldr r3, [r7, #4] + 8001636: 681b ldr r3, [r3, #0] + 8001638: f003 0304 and.w r3, r3, #4 + 800163c: 2b00 cmp r3, #0 + 800163e: f000 80b5 beq.w 80017ac + { + FlagStatus pwrclkchanged = RESET; + 8001642: 2300 movs r3, #0 + 8001644: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 8001646: 4b3a ldr r3, [pc, #232] @ (8001730 ) + 8001648: 6a5b ldr r3, [r3, #36] @ 0x24 + 800164a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800164e: 2b00 cmp r3, #0 + 8001650: d10d bne.n 800166e + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001652: 4b37 ldr r3, [pc, #220] @ (8001730 ) + 8001654: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001656: 4a36 ldr r2, [pc, #216] @ (8001730 ) + 8001658: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800165c: 6253 str r3, [r2, #36] @ 0x24 + 800165e: 4b34 ldr r3, [pc, #208] @ (8001730 ) + 8001660: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001662: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001666: 60bb str r3, [r7, #8] + 8001668: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 800166a: 2301 movs r3, #1 + 800166c: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 800166e: 4b36 ldr r3, [pc, #216] @ (8001748 ) + 8001670: 681b ldr r3, [r3, #0] + 8001672: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001676: 2b00 cmp r3, #0 + 8001678: d118 bne.n 80016ac + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 800167a: 4b33 ldr r3, [pc, #204] @ (8001748 ) + 800167c: 681b ldr r3, [r3, #0] + 800167e: 4a32 ldr r2, [pc, #200] @ (8001748 ) + 8001680: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001684: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8001686: f7ff fb07 bl 8000c98 + 800168a: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 800168c: e008 b.n 80016a0 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 800168e: f7ff fb03 bl 8000c98 + 8001692: 4602 mov r2, r0 + 8001694: 693b ldr r3, [r7, #16] + 8001696: 1ad3 subs r3, r2, r3 + 8001698: 2b64 cmp r3, #100 @ 0x64 + 800169a: d901 bls.n 80016a0 + { + return HAL_TIMEOUT; + 800169c: 2303 movs r3, #3 + 800169e: e104 b.n 80018aa + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80016a0: 4b29 ldr r3, [pc, #164] @ (8001748 ) + 80016a2: 681b ldr r3, [r3, #0] + 80016a4: f403 7380 and.w r3, r3, #256 @ 0x100 + 80016a8: 2b00 cmp r3, #0 + 80016aa: d0f0 beq.n 800168e + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 80016ac: 687b ldr r3, [r7, #4] + 80016ae: 689b ldr r3, [r3, #8] + 80016b0: 2b01 cmp r3, #1 + 80016b2: d106 bne.n 80016c2 + 80016b4: 4b1e ldr r3, [pc, #120] @ (8001730 ) + 80016b6: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016b8: 4a1d ldr r2, [pc, #116] @ (8001730 ) + 80016ba: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80016be: 6353 str r3, [r2, #52] @ 0x34 + 80016c0: e02d b.n 800171e + 80016c2: 687b ldr r3, [r7, #4] + 80016c4: 689b ldr r3, [r3, #8] + 80016c6: 2b00 cmp r3, #0 + 80016c8: d10c bne.n 80016e4 + 80016ca: 4b19 ldr r3, [pc, #100] @ (8001730 ) + 80016cc: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016ce: 4a18 ldr r2, [pc, #96] @ (8001730 ) + 80016d0: f423 7380 bic.w r3, r3, #256 @ 0x100 + 80016d4: 6353 str r3, [r2, #52] @ 0x34 + 80016d6: 4b16 ldr r3, [pc, #88] @ (8001730 ) + 80016d8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016da: 4a15 ldr r2, [pc, #84] @ (8001730 ) + 80016dc: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 80016e0: 6353 str r3, [r2, #52] @ 0x34 + 80016e2: e01c b.n 800171e + 80016e4: 687b ldr r3, [r7, #4] + 80016e6: 689b ldr r3, [r3, #8] + 80016e8: 2b05 cmp r3, #5 + 80016ea: d10c bne.n 8001706 + 80016ec: 4b10 ldr r3, [pc, #64] @ (8001730 ) + 80016ee: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016f0: 4a0f ldr r2, [pc, #60] @ (8001730 ) + 80016f2: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 80016f6: 6353 str r3, [r2, #52] @ 0x34 + 80016f8: 4b0d ldr r3, [pc, #52] @ (8001730 ) + 80016fa: 6b5b ldr r3, [r3, #52] @ 0x34 + 80016fc: 4a0c ldr r2, [pc, #48] @ (8001730 ) + 80016fe: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001702: 6353 str r3, [r2, #52] @ 0x34 + 8001704: e00b b.n 800171e + 8001706: 4b0a ldr r3, [pc, #40] @ (8001730 ) + 8001708: 6b5b ldr r3, [r3, #52] @ 0x34 + 800170a: 4a09 ldr r2, [pc, #36] @ (8001730 ) + 800170c: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001710: 6353 str r3, [r2, #52] @ 0x34 + 8001712: 4b07 ldr r3, [pc, #28] @ (8001730 ) + 8001714: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001716: 4a06 ldr r2, [pc, #24] @ (8001730 ) + 8001718: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800171c: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 800171e: 687b ldr r3, [r7, #4] + 8001720: 689b ldr r3, [r3, #8] + 8001722: 2b00 cmp r3, #0 + 8001724: d024 beq.n 8001770 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001726: f7ff fab7 bl 8000c98 + 800172a: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 800172c: e019 b.n 8001762 + 800172e: bf00 nop + 8001730: 40023800 .word 0x40023800 + 8001734: 08002f78 .word 0x08002f78 + 8001738: 20000000 .word 0x20000000 + 800173c: 20000004 .word 0x20000004 + 8001740: 42470020 .word 0x42470020 + 8001744: 42470680 .word 0x42470680 + 8001748: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 800174c: f7ff faa4 bl 8000c98 + 8001750: 4602 mov r2, r0 + 8001752: 693b ldr r3, [r7, #16] + 8001754: 1ad3 subs r3, r2, r3 + 8001756: f241 3288 movw r2, #5000 @ 0x1388 + 800175a: 4293 cmp r3, r2 + 800175c: d901 bls.n 8001762 + { + return HAL_TIMEOUT; + 800175e: 2303 movs r3, #3 + 8001760: e0a3 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001762: 4b54 ldr r3, [pc, #336] @ (80018b4 ) + 8001764: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001766: f403 7300 and.w r3, r3, #512 @ 0x200 + 800176a: 2b00 cmp r3, #0 + 800176c: d0ee beq.n 800174c + 800176e: e014 b.n 800179a + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001770: f7ff fa92 bl 8000c98 + 8001774: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 8001776: e00a b.n 800178e + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001778: f7ff fa8e bl 8000c98 + 800177c: 4602 mov r2, r0 + 800177e: 693b ldr r3, [r7, #16] + 8001780: 1ad3 subs r3, r2, r3 + 8001782: f241 3288 movw r2, #5000 @ 0x1388 + 8001786: 4293 cmp r3, r2 + 8001788: d901 bls.n 800178e + { + return HAL_TIMEOUT; + 800178a: 2303 movs r3, #3 + 800178c: e08d b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 800178e: 4b49 ldr r3, [pc, #292] @ (80018b4 ) + 8001790: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001792: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001796: 2b00 cmp r3, #0 + 8001798: d1ee bne.n 8001778 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 800179a: 7ffb ldrb r3, [r7, #31] + 800179c: 2b01 cmp r3, #1 + 800179e: d105 bne.n 80017ac + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80017a0: 4b44 ldr r3, [pc, #272] @ (80018b4 ) + 80017a2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80017a4: 4a43 ldr r2, [pc, #268] @ (80018b4 ) + 80017a6: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80017aa: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80017ac: 687b ldr r3, [r7, #4] + 80017ae: 6a5b ldr r3, [r3, #36] @ 0x24 + 80017b0: 2b00 cmp r3, #0 + 80017b2: d079 beq.n 80018a8 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80017b4: 69bb ldr r3, [r7, #24] + 80017b6: 2b0c cmp r3, #12 + 80017b8: d056 beq.n 8001868 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 80017ba: 687b ldr r3, [r7, #4] + 80017bc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80017be: 2b02 cmp r3, #2 + 80017c0: d13b bne.n 800183a + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80017c2: 4b3d ldr r3, [pc, #244] @ (80018b8 ) + 80017c4: 2200 movs r2, #0 + 80017c6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80017c8: f7ff fa66 bl 8000c98 + 80017cc: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80017ce: e008 b.n 80017e2 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80017d0: f7ff fa62 bl 8000c98 + 80017d4: 4602 mov r2, r0 + 80017d6: 693b ldr r3, [r7, #16] + 80017d8: 1ad3 subs r3, r2, r3 + 80017da: 2b02 cmp r3, #2 + 80017dc: d901 bls.n 80017e2 + { + return HAL_TIMEOUT; + 80017de: 2303 movs r3, #3 + 80017e0: e063 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80017e2: 4b34 ldr r3, [pc, #208] @ (80018b4 ) + 80017e4: 681b ldr r3, [r3, #0] + 80017e6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80017ea: 2b00 cmp r3, #0 + 80017ec: d1f0 bne.n 80017d0 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 80017ee: 4b31 ldr r3, [pc, #196] @ (80018b4 ) + 80017f0: 689b ldr r3, [r3, #8] + 80017f2: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 80017f6: 687b ldr r3, [r7, #4] + 80017f8: 6a99 ldr r1, [r3, #40] @ 0x28 + 80017fa: 687b ldr r3, [r7, #4] + 80017fc: 6adb ldr r3, [r3, #44] @ 0x2c + 80017fe: 4319 orrs r1, r3 + 8001800: 687b ldr r3, [r7, #4] + 8001802: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001804: 430b orrs r3, r1 + 8001806: 492b ldr r1, [pc, #172] @ (80018b4 ) + 8001808: 4313 orrs r3, r2 + 800180a: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 800180c: 4b2a ldr r3, [pc, #168] @ (80018b8 ) + 800180e: 2201 movs r2, #1 + 8001810: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001812: f7ff fa41 bl 8000c98 + 8001816: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001818: e008 b.n 800182c + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800181a: f7ff fa3d bl 8000c98 + 800181e: 4602 mov r2, r0 + 8001820: 693b ldr r3, [r7, #16] + 8001822: 1ad3 subs r3, r2, r3 + 8001824: 2b02 cmp r3, #2 + 8001826: d901 bls.n 800182c + { + return HAL_TIMEOUT; + 8001828: 2303 movs r3, #3 + 800182a: e03e b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800182c: 4b21 ldr r3, [pc, #132] @ (80018b4 ) + 800182e: 681b ldr r3, [r3, #0] + 8001830: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001834: 2b00 cmp r3, #0 + 8001836: d0f0 beq.n 800181a + 8001838: e036 b.n 80018a8 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 800183a: 4b1f ldr r3, [pc, #124] @ (80018b8 ) + 800183c: 2200 movs r2, #0 + 800183e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001840: f7ff fa2a bl 8000c98 + 8001844: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001846: e008 b.n 800185a + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001848: f7ff fa26 bl 8000c98 + 800184c: 4602 mov r2, r0 + 800184e: 693b ldr r3, [r7, #16] + 8001850: 1ad3 subs r3, r2, r3 + 8001852: 2b02 cmp r3, #2 + 8001854: d901 bls.n 800185a + { + return HAL_TIMEOUT; + 8001856: 2303 movs r3, #3 + 8001858: e027 b.n 80018aa + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800185a: 4b16 ldr r3, [pc, #88] @ (80018b4 ) + 800185c: 681b ldr r3, [r3, #0] + 800185e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001862: 2b00 cmp r3, #0 + 8001864: d1f0 bne.n 8001848 + 8001866: e01f b.n 80018a8 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8001868: 687b ldr r3, [r7, #4] + 800186a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800186c: 2b01 cmp r3, #1 + 800186e: d101 bne.n 8001874 + { + return HAL_ERROR; + 8001870: 2301 movs r3, #1 + 8001872: e01a b.n 80018aa + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8001874: 4b0f ldr r3, [pc, #60] @ (80018b4 ) + 8001876: 689b ldr r3, [r3, #8] + 8001878: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 800187a: 697b ldr r3, [r7, #20] + 800187c: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8001880: 687b ldr r3, [r7, #4] + 8001882: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001884: 429a cmp r2, r3 + 8001886: d10d bne.n 80018a4 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001888: 697b ldr r3, [r7, #20] + 800188a: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 800188e: 687b ldr r3, [r7, #4] + 8001890: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8001892: 429a cmp r2, r3 + 8001894: d106 bne.n 80018a4 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 8001896: 697b ldr r3, [r7, #20] + 8001898: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 800189c: 687b ldr r3, [r7, #4] + 800189e: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80018a0: 429a cmp r2, r3 + 80018a2: d001 beq.n 80018a8 + { + return HAL_ERROR; + 80018a4: 2301 movs r3, #1 + 80018a6: e000 b.n 80018aa + } + } + } + } + + return HAL_OK; + 80018a8: 2300 movs r3, #0 +} + 80018aa: 4618 mov r0, r3 + 80018ac: 3720 adds r7, #32 + 80018ae: 46bd mov sp, r7 + 80018b0: bd80 pop {r7, pc} + 80018b2: bf00 nop + 80018b4: 40023800 .word 0x40023800 + 80018b8: 42470060 .word 0x42470060 + +080018bc : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 80018bc: b580 push {r7, lr} + 80018be: b084 sub sp, #16 + 80018c0: af00 add r7, sp, #0 + 80018c2: 6078 str r0, [r7, #4] + 80018c4: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 80018c6: 687b ldr r3, [r7, #4] + 80018c8: 2b00 cmp r3, #0 + 80018ca: d101 bne.n 80018d0 + { + return HAL_ERROR; + 80018cc: 2301 movs r3, #1 + 80018ce: e11a b.n 8001b06 + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 80018d0: 4b8f ldr r3, [pc, #572] @ (8001b10 ) + 80018d2: 681b ldr r3, [r3, #0] + 80018d4: f003 0301 and.w r3, r3, #1 + 80018d8: 683a ldr r2, [r7, #0] + 80018da: 429a cmp r2, r3 + 80018dc: d919 bls.n 8001912 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80018de: 683b ldr r3, [r7, #0] + 80018e0: 2b01 cmp r3, #1 + 80018e2: d105 bne.n 80018f0 + 80018e4: 4b8a ldr r3, [pc, #552] @ (8001b10 ) + 80018e6: 681b ldr r3, [r3, #0] + 80018e8: 4a89 ldr r2, [pc, #548] @ (8001b10 ) + 80018ea: f043 0304 orr.w r3, r3, #4 + 80018ee: 6013 str r3, [r2, #0] + 80018f0: 4b87 ldr r3, [pc, #540] @ (8001b10 ) + 80018f2: 681b ldr r3, [r3, #0] + 80018f4: f023 0201 bic.w r2, r3, #1 + 80018f8: 4985 ldr r1, [pc, #532] @ (8001b10 ) + 80018fa: 683b ldr r3, [r7, #0] + 80018fc: 4313 orrs r3, r2 + 80018fe: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001900: 4b83 ldr r3, [pc, #524] @ (8001b10 ) + 8001902: 681b ldr r3, [r3, #0] + 8001904: f003 0301 and.w r3, r3, #1 + 8001908: 683a ldr r2, [r7, #0] + 800190a: 429a cmp r2, r3 + 800190c: d001 beq.n 8001912 + { + return HAL_ERROR; + 800190e: 2301 movs r3, #1 + 8001910: e0f9 b.n 8001b06 + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001912: 687b ldr r3, [r7, #4] + 8001914: 681b ldr r3, [r3, #0] + 8001916: f003 0302 and.w r3, r3, #2 + 800191a: 2b00 cmp r3, #0 + 800191c: d008 beq.n 8001930 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 800191e: 4b7d ldr r3, [pc, #500] @ (8001b14 ) + 8001920: 689b ldr r3, [r3, #8] + 8001922: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001926: 687b ldr r3, [r7, #4] + 8001928: 689b ldr r3, [r3, #8] + 800192a: 497a ldr r1, [pc, #488] @ (8001b14 ) + 800192c: 4313 orrs r3, r2 + 800192e: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001930: 687b ldr r3, [r7, #4] + 8001932: 681b ldr r3, [r3, #0] + 8001934: f003 0301 and.w r3, r3, #1 + 8001938: 2b00 cmp r3, #0 + 800193a: f000 808e beq.w 8001a5a + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 800193e: 687b ldr r3, [r7, #4] + 8001940: 685b ldr r3, [r3, #4] + 8001942: 2b02 cmp r3, #2 + 8001944: d107 bne.n 8001956 + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001946: 4b73 ldr r3, [pc, #460] @ (8001b14 ) + 8001948: 681b ldr r3, [r3, #0] + 800194a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800194e: 2b00 cmp r3, #0 + 8001950: d121 bne.n 8001996 + { + return HAL_ERROR; + 8001952: 2301 movs r3, #1 + 8001954: e0d7 b.n 8001b06 + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001956: 687b ldr r3, [r7, #4] + 8001958: 685b ldr r3, [r3, #4] + 800195a: 2b03 cmp r3, #3 + 800195c: d107 bne.n 800196e + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800195e: 4b6d ldr r3, [pc, #436] @ (8001b14 ) + 8001960: 681b ldr r3, [r3, #0] + 8001962: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001966: 2b00 cmp r3, #0 + 8001968: d115 bne.n 8001996 + { + return HAL_ERROR; + 800196a: 2301 movs r3, #1 + 800196c: e0cb b.n 8001b06 + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 800196e: 687b ldr r3, [r7, #4] + 8001970: 685b ldr r3, [r3, #4] + 8001972: 2b01 cmp r3, #1 + 8001974: d107 bne.n 8001986 + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001976: 4b67 ldr r3, [pc, #412] @ (8001b14 ) + 8001978: 681b ldr r3, [r3, #0] + 800197a: f003 0302 and.w r3, r3, #2 + 800197e: 2b00 cmp r3, #0 + 8001980: d109 bne.n 8001996 + { + return HAL_ERROR; + 8001982: 2301 movs r3, #1 + 8001984: e0bf b.n 8001b06 + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001986: 4b63 ldr r3, [pc, #396] @ (8001b14 ) + 8001988: 681b ldr r3, [r3, #0] + 800198a: f403 7300 and.w r3, r3, #512 @ 0x200 + 800198e: 2b00 cmp r3, #0 + 8001990: d101 bne.n 8001996 + { + return HAL_ERROR; + 8001992: 2301 movs r3, #1 + 8001994: e0b7 b.n 8001b06 + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8001996: 4b5f ldr r3, [pc, #380] @ (8001b14 ) + 8001998: 689b ldr r3, [r3, #8] + 800199a: f023 0203 bic.w r2, r3, #3 + 800199e: 687b ldr r3, [r7, #4] + 80019a0: 685b ldr r3, [r3, #4] + 80019a2: 495c ldr r1, [pc, #368] @ (8001b14 ) + 80019a4: 4313 orrs r3, r2 + 80019a6: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80019a8: f7ff f976 bl 8000c98 + 80019ac: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80019ae: 687b ldr r3, [r7, #4] + 80019b0: 685b ldr r3, [r3, #4] + 80019b2: 2b02 cmp r3, #2 + 80019b4: d112 bne.n 80019dc + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 80019b6: e00a b.n 80019ce + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80019b8: f7ff f96e bl 8000c98 + 80019bc: 4602 mov r2, r0 + 80019be: 68fb ldr r3, [r7, #12] + 80019c0: 1ad3 subs r3, r2, r3 + 80019c2: f241 3288 movw r2, #5000 @ 0x1388 + 80019c6: 4293 cmp r3, r2 + 80019c8: d901 bls.n 80019ce + { + return HAL_TIMEOUT; + 80019ca: 2303 movs r3, #3 + 80019cc: e09b b.n 8001b06 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 80019ce: 4b51 ldr r3, [pc, #324] @ (8001b14 ) + 80019d0: 689b ldr r3, [r3, #8] + 80019d2: f003 030c and.w r3, r3, #12 + 80019d6: 2b08 cmp r3, #8 + 80019d8: d1ee bne.n 80019b8 + 80019da: e03e b.n 8001a5a + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80019dc: 687b ldr r3, [r7, #4] + 80019de: 685b ldr r3, [r3, #4] + 80019e0: 2b03 cmp r3, #3 + 80019e2: d112 bne.n 8001a0a + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80019e4: e00a b.n 80019fc + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80019e6: f7ff f957 bl 8000c98 + 80019ea: 4602 mov r2, r0 + 80019ec: 68fb ldr r3, [r7, #12] + 80019ee: 1ad3 subs r3, r2, r3 + 80019f0: f241 3288 movw r2, #5000 @ 0x1388 + 80019f4: 4293 cmp r3, r2 + 80019f6: d901 bls.n 80019fc + { + return HAL_TIMEOUT; + 80019f8: 2303 movs r3, #3 + 80019fa: e084 b.n 8001b06 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80019fc: 4b45 ldr r3, [pc, #276] @ (8001b14 ) + 80019fe: 689b ldr r3, [r3, #8] + 8001a00: f003 030c and.w r3, r3, #12 + 8001a04: 2b0c cmp r3, #12 + 8001a06: d1ee bne.n 80019e6 + 8001a08: e027 b.n 8001a5a + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001a0a: 687b ldr r3, [r7, #4] + 8001a0c: 685b ldr r3, [r3, #4] + 8001a0e: 2b01 cmp r3, #1 + 8001a10: d11d bne.n 8001a4e + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001a12: e00a b.n 8001a2a + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001a14: f7ff f940 bl 8000c98 + 8001a18: 4602 mov r2, r0 + 8001a1a: 68fb ldr r3, [r7, #12] + 8001a1c: 1ad3 subs r3, r2, r3 + 8001a1e: f241 3288 movw r2, #5000 @ 0x1388 + 8001a22: 4293 cmp r3, r2 + 8001a24: d901 bls.n 8001a2a + { + return HAL_TIMEOUT; + 8001a26: 2303 movs r3, #3 + 8001a28: e06d b.n 8001b06 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001a2a: 4b3a ldr r3, [pc, #232] @ (8001b14 ) + 8001a2c: 689b ldr r3, [r3, #8] + 8001a2e: f003 030c and.w r3, r3, #12 + 8001a32: 2b04 cmp r3, #4 + 8001a34: d1ee bne.n 8001a14 + 8001a36: e010 b.n 8001a5a + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001a38: f7ff f92e bl 8000c98 + 8001a3c: 4602 mov r2, r0 + 8001a3e: 68fb ldr r3, [r7, #12] + 8001a40: 1ad3 subs r3, r2, r3 + 8001a42: f241 3288 movw r2, #5000 @ 0x1388 + 8001a46: 4293 cmp r3, r2 + 8001a48: d901 bls.n 8001a4e + { + return HAL_TIMEOUT; + 8001a4a: 2303 movs r3, #3 + 8001a4c: e05b b.n 8001b06 + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8001a4e: 4b31 ldr r3, [pc, #196] @ (8001b14 ) + 8001a50: 689b ldr r3, [r3, #8] + 8001a52: f003 030c and.w r3, r3, #12 + 8001a56: 2b00 cmp r3, #0 + 8001a58: d1ee bne.n 8001a38 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8001a5a: 4b2d ldr r3, [pc, #180] @ (8001b10 ) + 8001a5c: 681b ldr r3, [r3, #0] + 8001a5e: f003 0301 and.w r3, r3, #1 + 8001a62: 683a ldr r2, [r7, #0] + 8001a64: 429a cmp r2, r3 + 8001a66: d219 bcs.n 8001a9c + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001a68: 683b ldr r3, [r7, #0] + 8001a6a: 2b01 cmp r3, #1 + 8001a6c: d105 bne.n 8001a7a + 8001a6e: 4b28 ldr r3, [pc, #160] @ (8001b10 ) + 8001a70: 681b ldr r3, [r3, #0] + 8001a72: 4a27 ldr r2, [pc, #156] @ (8001b10 ) + 8001a74: f043 0304 orr.w r3, r3, #4 + 8001a78: 6013 str r3, [r2, #0] + 8001a7a: 4b25 ldr r3, [pc, #148] @ (8001b10 ) + 8001a7c: 681b ldr r3, [r3, #0] + 8001a7e: f023 0201 bic.w r2, r3, #1 + 8001a82: 4923 ldr r1, [pc, #140] @ (8001b10 ) + 8001a84: 683b ldr r3, [r7, #0] + 8001a86: 4313 orrs r3, r2 + 8001a88: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001a8a: 4b21 ldr r3, [pc, #132] @ (8001b10 ) + 8001a8c: 681b ldr r3, [r3, #0] + 8001a8e: f003 0301 and.w r3, r3, #1 + 8001a92: 683a ldr r2, [r7, #0] + 8001a94: 429a cmp r2, r3 + 8001a96: d001 beq.n 8001a9c + { + return HAL_ERROR; + 8001a98: 2301 movs r3, #1 + 8001a9a: e034 b.n 8001b06 + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001a9c: 687b ldr r3, [r7, #4] + 8001a9e: 681b ldr r3, [r3, #0] + 8001aa0: f003 0304 and.w r3, r3, #4 + 8001aa4: 2b00 cmp r3, #0 + 8001aa6: d008 beq.n 8001aba + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001aa8: 4b1a ldr r3, [pc, #104] @ (8001b14 ) + 8001aaa: 689b ldr r3, [r3, #8] + 8001aac: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001ab0: 687b ldr r3, [r7, #4] + 8001ab2: 68db ldr r3, [r3, #12] + 8001ab4: 4917 ldr r1, [pc, #92] @ (8001b14 ) + 8001ab6: 4313 orrs r3, r2 + 8001ab8: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001aba: 687b ldr r3, [r7, #4] + 8001abc: 681b ldr r3, [r3, #0] + 8001abe: f003 0308 and.w r3, r3, #8 + 8001ac2: 2b00 cmp r3, #0 + 8001ac4: d009 beq.n 8001ada + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001ac6: 4b13 ldr r3, [pc, #76] @ (8001b14 ) + 8001ac8: 689b ldr r3, [r3, #8] + 8001aca: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001ace: 687b ldr r3, [r7, #4] + 8001ad0: 691b ldr r3, [r3, #16] + 8001ad2: 00db lsls r3, r3, #3 + 8001ad4: 490f ldr r1, [pc, #60] @ (8001b14 ) + 8001ad6: 4313 orrs r3, r2 + 8001ad8: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001ada: f000 f823 bl 8001b24 + 8001ade: 4602 mov r2, r0 + 8001ae0: 4b0c ldr r3, [pc, #48] @ (8001b14 ) + 8001ae2: 689b ldr r3, [r3, #8] + 8001ae4: 091b lsrs r3, r3, #4 + 8001ae6: f003 030f and.w r3, r3, #15 + 8001aea: 490b ldr r1, [pc, #44] @ (8001b18 ) + 8001aec: 5ccb ldrb r3, [r1, r3] + 8001aee: fa22 f303 lsr.w r3, r2, r3 + 8001af2: 4a0a ldr r2, [pc, #40] @ (8001b1c ) + 8001af4: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001af6: 4b0a ldr r3, [pc, #40] @ (8001b20 ) + 8001af8: 681b ldr r3, [r3, #0] + 8001afa: 4618 mov r0, r3 + 8001afc: f7ff f880 bl 8000c00 + 8001b00: 4603 mov r3, r0 + 8001b02: 72fb strb r3, [r7, #11] + + return status; + 8001b04: 7afb ldrb r3, [r7, #11] +} + 8001b06: 4618 mov r0, r3 + 8001b08: 3710 adds r7, #16 + 8001b0a: 46bd mov sp, r7 + 8001b0c: bd80 pop {r7, pc} + 8001b0e: bf00 nop + 8001b10: 40023c00 .word 0x40023c00 + 8001b14: 40023800 .word 0x40023800 + 8001b18: 08002f78 .word 0x08002f78 + 8001b1c: 20000000 .word 0x20000000 + 8001b20: 20000004 .word 0x20000004 + +08001b24 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001b24: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001b28: b08e sub sp, #56 @ 0x38 + 8001b2a: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001b2c: 4b58 ldr r3, [pc, #352] @ (8001c90 ) + 8001b2e: 689b ldr r3, [r3, #8] + 8001b30: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001b32: 6afb ldr r3, [r7, #44] @ 0x2c + 8001b34: f003 030c and.w r3, r3, #12 + 8001b38: 2b0c cmp r3, #12 + 8001b3a: d00d beq.n 8001b58 + 8001b3c: 2b0c cmp r3, #12 + 8001b3e: f200 8092 bhi.w 8001c66 + 8001b42: 2b04 cmp r3, #4 + 8001b44: d002 beq.n 8001b4c + 8001b46: 2b08 cmp r3, #8 + 8001b48: d003 beq.n 8001b52 + 8001b4a: e08c b.n 8001c66 + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001b4c: 4b51 ldr r3, [pc, #324] @ (8001c94 ) + 8001b4e: 633b str r3, [r7, #48] @ 0x30 + break; + 8001b50: e097 b.n 8001c82 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001b52: 4b51 ldr r3, [pc, #324] @ (8001c98 ) + 8001b54: 633b str r3, [r7, #48] @ 0x30 + break; + 8001b56: e094 b.n 8001c82 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001b58: 6afb ldr r3, [r7, #44] @ 0x2c + 8001b5a: 0c9b lsrs r3, r3, #18 + 8001b5c: f003 020f and.w r2, r3, #15 + 8001b60: 4b4e ldr r3, [pc, #312] @ (8001c9c ) + 8001b62: 5c9b ldrb r3, [r3, r2] + 8001b64: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001b66: 6afb ldr r3, [r7, #44] @ 0x2c + 8001b68: 0d9b lsrs r3, r3, #22 + 8001b6a: f003 0303 and.w r3, r3, #3 + 8001b6e: 3301 adds r3, #1 + 8001b70: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001b72: 4b47 ldr r3, [pc, #284] @ (8001c90 ) + 8001b74: 689b ldr r3, [r3, #8] + 8001b76: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001b7a: 2b00 cmp r3, #0 + 8001b7c: d021 beq.n 8001bc2 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001b7e: 6abb ldr r3, [r7, #40] @ 0x28 + 8001b80: 2200 movs r2, #0 + 8001b82: 61bb str r3, [r7, #24] + 8001b84: 61fa str r2, [r7, #28] + 8001b86: 4b44 ldr r3, [pc, #272] @ (8001c98 ) + 8001b88: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001b8c: 464a mov r2, r9 + 8001b8e: fb03 f202 mul.w r2, r3, r2 + 8001b92: 2300 movs r3, #0 + 8001b94: 4644 mov r4, r8 + 8001b96: fb04 f303 mul.w r3, r4, r3 + 8001b9a: 4413 add r3, r2 + 8001b9c: 4a3e ldr r2, [pc, #248] @ (8001c98 ) + 8001b9e: 4644 mov r4, r8 + 8001ba0: fba4 0102 umull r0, r1, r4, r2 + 8001ba4: 440b add r3, r1 + 8001ba6: 4619 mov r1, r3 + 8001ba8: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001baa: 2200 movs r2, #0 + 8001bac: 613b str r3, [r7, #16] + 8001bae: 617a str r2, [r7, #20] + 8001bb0: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001bb4: f7fe fae2 bl 800017c <__aeabi_uldivmod> + 8001bb8: 4602 mov r2, r0 + 8001bba: 460b mov r3, r1 + 8001bbc: 4613 mov r3, r2 + 8001bbe: 637b str r3, [r7, #52] @ 0x34 + 8001bc0: e04e b.n 8001c60 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001bc2: 6abb ldr r3, [r7, #40] @ 0x28 + 8001bc4: 2200 movs r2, #0 + 8001bc6: 469a mov sl, r3 + 8001bc8: 4693 mov fp, r2 + 8001bca: 4652 mov r2, sl + 8001bcc: 465b mov r3, fp + 8001bce: f04f 0000 mov.w r0, #0 + 8001bd2: f04f 0100 mov.w r1, #0 + 8001bd6: 0159 lsls r1, r3, #5 + 8001bd8: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001bdc: 0150 lsls r0, r2, #5 + 8001bde: 4602 mov r2, r0 + 8001be0: 460b mov r3, r1 + 8001be2: ebb2 080a subs.w r8, r2, sl + 8001be6: eb63 090b sbc.w r9, r3, fp + 8001bea: f04f 0200 mov.w r2, #0 + 8001bee: f04f 0300 mov.w r3, #0 + 8001bf2: ea4f 1389 mov.w r3, r9, lsl #6 + 8001bf6: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001bfa: ea4f 1288 mov.w r2, r8, lsl #6 + 8001bfe: ebb2 0408 subs.w r4, r2, r8 + 8001c02: eb63 0509 sbc.w r5, r3, r9 + 8001c06: f04f 0200 mov.w r2, #0 + 8001c0a: f04f 0300 mov.w r3, #0 + 8001c0e: 00eb lsls r3, r5, #3 + 8001c10: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001c14: 00e2 lsls r2, r4, #3 + 8001c16: 4614 mov r4, r2 + 8001c18: 461d mov r5, r3 + 8001c1a: eb14 030a adds.w r3, r4, sl + 8001c1e: 603b str r3, [r7, #0] + 8001c20: eb45 030b adc.w r3, r5, fp + 8001c24: 607b str r3, [r7, #4] + 8001c26: f04f 0200 mov.w r2, #0 + 8001c2a: f04f 0300 mov.w r3, #0 + 8001c2e: e9d7 4500 ldrd r4, r5, [r7] + 8001c32: 4629 mov r1, r5 + 8001c34: 028b lsls r3, r1, #10 + 8001c36: 4620 mov r0, r4 + 8001c38: 4629 mov r1, r5 + 8001c3a: 4604 mov r4, r0 + 8001c3c: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001c40: 4601 mov r1, r0 + 8001c42: 028a lsls r2, r1, #10 + 8001c44: 4610 mov r0, r2 + 8001c46: 4619 mov r1, r3 + 8001c48: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001c4a: 2200 movs r2, #0 + 8001c4c: 60bb str r3, [r7, #8] + 8001c4e: 60fa str r2, [r7, #12] + 8001c50: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001c54: f7fe fa92 bl 800017c <__aeabi_uldivmod> + 8001c58: 4602 mov r2, r0 + 8001c5a: 460b mov r3, r1 + 8001c5c: 4613 mov r3, r2 + 8001c5e: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001c60: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001c62: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c64: e00d b.n 8001c82 + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001c66: 4b0a ldr r3, [pc, #40] @ (8001c90 ) + 8001c68: 685b ldr r3, [r3, #4] + 8001c6a: 0b5b lsrs r3, r3, #13 + 8001c6c: f003 0307 and.w r3, r3, #7 + 8001c70: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001c72: 6a3b ldr r3, [r7, #32] + 8001c74: 3301 adds r3, #1 + 8001c76: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001c7a: fa02 f303 lsl.w r3, r2, r3 + 8001c7e: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c80: bf00 nop + } + } + return sysclockfreq; + 8001c82: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001c84: 4618 mov r0, r3 + 8001c86: 3738 adds r7, #56 @ 0x38 + 8001c88: 46bd mov sp, r7 + 8001c8a: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001c8e: bf00 nop + 8001c90: 40023800 .word 0x40023800 + 8001c94: 00f42400 .word 0x00f42400 + 8001c98: 016e3600 .word 0x016e3600 + 8001c9c: 08002f6c .word 0x08002f6c + +08001ca0 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001ca0: b480 push {r7} + 8001ca2: b087 sub sp, #28 + 8001ca4: af00 add r7, sp, #0 + 8001ca6: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001ca8: 2300 movs r3, #0 + 8001caa: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001cac: 4b29 ldr r3, [pc, #164] @ (8001d54 ) + 8001cae: 689b ldr r3, [r3, #8] + 8001cb0: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001cb4: 2b00 cmp r3, #0 + 8001cb6: d12c bne.n 8001d12 + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001cb8: 4b26 ldr r3, [pc, #152] @ (8001d54 ) + 8001cba: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001cbc: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001cc0: 2b00 cmp r3, #0 + 8001cc2: d005 beq.n 8001cd0 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001cc4: 4b24 ldr r3, [pc, #144] @ (8001d58 ) + 8001cc6: 681b ldr r3, [r3, #0] + 8001cc8: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001ccc: 617b str r3, [r7, #20] + 8001cce: e016 b.n 8001cfe + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001cd0: 4b20 ldr r3, [pc, #128] @ (8001d54 ) + 8001cd2: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001cd4: 4a1f ldr r2, [pc, #124] @ (8001d54 ) + 8001cd6: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001cda: 6253 str r3, [r2, #36] @ 0x24 + 8001cdc: 4b1d ldr r3, [pc, #116] @ (8001d54 ) + 8001cde: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ce0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001ce4: 60fb str r3, [r7, #12] + 8001ce6: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001ce8: 4b1b ldr r3, [pc, #108] @ (8001d58 ) + 8001cea: 681b ldr r3, [r3, #0] + 8001cec: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001cf0: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001cf2: 4b18 ldr r3, [pc, #96] @ (8001d54 ) + 8001cf4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001cf6: 4a17 ldr r2, [pc, #92] @ (8001d54 ) + 8001cf8: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001cfc: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001cfe: 697b ldr r3, [r7, #20] + 8001d00: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001d04: d105 bne.n 8001d12 + 8001d06: 687b ldr r3, [r7, #4] + 8001d08: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001d0c: d101 bne.n 8001d12 + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001d0e: 2301 movs r3, #1 + 8001d10: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001d12: 693b ldr r3, [r7, #16] + 8001d14: 2b01 cmp r3, #1 + 8001d16: d105 bne.n 8001d24 + 8001d18: 4b10 ldr r3, [pc, #64] @ (8001d5c ) + 8001d1a: 681b ldr r3, [r3, #0] + 8001d1c: 4a0f ldr r2, [pc, #60] @ (8001d5c ) + 8001d1e: f043 0304 orr.w r3, r3, #4 + 8001d22: 6013 str r3, [r2, #0] + 8001d24: 4b0d ldr r3, [pc, #52] @ (8001d5c ) + 8001d26: 681b ldr r3, [r3, #0] + 8001d28: f023 0201 bic.w r2, r3, #1 + 8001d2c: 490b ldr r1, [pc, #44] @ (8001d5c ) + 8001d2e: 693b ldr r3, [r7, #16] + 8001d30: 4313 orrs r3, r2 + 8001d32: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001d34: 4b09 ldr r3, [pc, #36] @ (8001d5c ) + 8001d36: 681b ldr r3, [r3, #0] + 8001d38: f003 0301 and.w r3, r3, #1 + 8001d3c: 693a ldr r2, [r7, #16] + 8001d3e: 429a cmp r2, r3 + 8001d40: d001 beq.n 8001d46 + { + return HAL_ERROR; + 8001d42: 2301 movs r3, #1 + 8001d44: e000 b.n 8001d48 + } + + return HAL_OK; + 8001d46: 2300 movs r3, #0 +} + 8001d48: 4618 mov r0, r3 + 8001d4a: 371c adds r7, #28 + 8001d4c: 46bd mov sp, r7 + 8001d4e: bc80 pop {r7} + 8001d50: 4770 bx lr + 8001d52: bf00 nop + 8001d54: 40023800 .word 0x40023800 + 8001d58: 40007000 .word 0x40007000 + 8001d5c: 40023c00 .word 0x40023c00 + +08001d60 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001d60: b580 push {r7, lr} + 8001d62: b082 sub sp, #8 + 8001d64: af00 add r7, sp, #0 + 8001d66: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001d68: 687b ldr r3, [r7, #4] + 8001d6a: 2b00 cmp r3, #0 + 8001d6c: d101 bne.n 8001d72 + { + return HAL_ERROR; + 8001d6e: 2301 movs r3, #1 + 8001d70: e07b b.n 8001e6a + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001d72: 687b ldr r3, [r7, #4] + 8001d74: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001d76: 2b00 cmp r3, #0 + 8001d78: d108 bne.n 8001d8c + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001d7a: 687b ldr r3, [r7, #4] + 8001d7c: 685b ldr r3, [r3, #4] + 8001d7e: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001d82: d009 beq.n 8001d98 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001d84: 687b ldr r3, [r7, #4] + 8001d86: 2200 movs r2, #0 + 8001d88: 61da str r2, [r3, #28] + 8001d8a: e005 b.n 8001d98 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001d8c: 687b ldr r3, [r7, #4] + 8001d8e: 2200 movs r2, #0 + 8001d90: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001d92: 687b ldr r3, [r7, #4] + 8001d94: 2200 movs r2, #0 + 8001d96: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001d98: 687b ldr r3, [r7, #4] + 8001d9a: 2200 movs r2, #0 + 8001d9c: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001d9e: 687b ldr r3, [r7, #4] + 8001da0: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001da4: b2db uxtb r3, r3 + 8001da6: 2b00 cmp r3, #0 + 8001da8: d106 bne.n 8001db8 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001daa: 687b ldr r3, [r7, #4] + 8001dac: 2200 movs r2, #0 + 8001dae: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001db2: 6878 ldr r0, [r7, #4] + 8001db4: f7fe fd5c bl 8000870 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001db8: 687b ldr r3, [r7, #4] + 8001dba: 2202 movs r2, #2 + 8001dbc: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001dc0: 687b ldr r3, [r7, #4] + 8001dc2: 681b ldr r3, [r3, #0] + 8001dc4: 681a ldr r2, [r3, #0] + 8001dc6: 687b ldr r3, [r7, #4] + 8001dc8: 681b ldr r3, [r3, #0] + 8001dca: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001dce: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001dd0: 687b ldr r3, [r7, #4] + 8001dd2: 685b ldr r3, [r3, #4] + 8001dd4: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001dd8: 687b ldr r3, [r7, #4] + 8001dda: 689b ldr r3, [r3, #8] + 8001ddc: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001de0: 431a orrs r2, r3 + 8001de2: 687b ldr r3, [r7, #4] + 8001de4: 68db ldr r3, [r3, #12] + 8001de6: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001dea: 431a orrs r2, r3 + 8001dec: 687b ldr r3, [r7, #4] + 8001dee: 691b ldr r3, [r3, #16] + 8001df0: f003 0302 and.w r3, r3, #2 + 8001df4: 431a orrs r2, r3 + 8001df6: 687b ldr r3, [r7, #4] + 8001df8: 695b ldr r3, [r3, #20] + 8001dfa: f003 0301 and.w r3, r3, #1 + 8001dfe: 431a orrs r2, r3 + 8001e00: 687b ldr r3, [r7, #4] + 8001e02: 699b ldr r3, [r3, #24] + 8001e04: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001e08: 431a orrs r2, r3 + 8001e0a: 687b ldr r3, [r7, #4] + 8001e0c: 69db ldr r3, [r3, #28] + 8001e0e: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001e12: 431a orrs r2, r3 + 8001e14: 687b ldr r3, [r7, #4] + 8001e16: 6a1b ldr r3, [r3, #32] + 8001e18: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001e1c: ea42 0103 orr.w r1, r2, r3 + 8001e20: 687b ldr r3, [r7, #4] + 8001e22: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001e24: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001e28: 687b ldr r3, [r7, #4] + 8001e2a: 681b ldr r3, [r3, #0] + 8001e2c: 430a orrs r2, r1 + 8001e2e: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001e30: 687b ldr r3, [r7, #4] + 8001e32: 699b ldr r3, [r3, #24] + 8001e34: 0c1b lsrs r3, r3, #16 + 8001e36: f003 0104 and.w r1, r3, #4 + 8001e3a: 687b ldr r3, [r7, #4] + 8001e3c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e3e: f003 0210 and.w r2, r3, #16 + 8001e42: 687b ldr r3, [r7, #4] + 8001e44: 681b ldr r3, [r3, #0] + 8001e46: 430a orrs r2, r1 + 8001e48: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001e4a: 687b ldr r3, [r7, #4] + 8001e4c: 681b ldr r3, [r3, #0] + 8001e4e: 69da ldr r2, [r3, #28] + 8001e50: 687b ldr r3, [r7, #4] + 8001e52: 681b ldr r3, [r3, #0] + 8001e54: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001e58: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001e5a: 687b ldr r3, [r7, #4] + 8001e5c: 2200 movs r2, #0 + 8001e5e: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001e60: 687b ldr r3, [r7, #4] + 8001e62: 2201 movs r2, #1 + 8001e64: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001e68: 2300 movs r3, #0 +} + 8001e6a: 4618 mov r0, r3 + 8001e6c: 3708 adds r7, #8 + 8001e6e: 46bd mov sp, r7 + 8001e70: bd80 pop {r7, pc} + +08001e72 : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001e72: b580 push {r7, lr} + 8001e74: b088 sub sp, #32 + 8001e76: af00 add r7, sp, #0 + 8001e78: 60f8 str r0, [r7, #12] + 8001e7a: 60b9 str r1, [r7, #8] + 8001e7c: 603b str r3, [r7, #0] + 8001e7e: 4613 mov r3, r2 + 8001e80: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001e82: f7fe ff09 bl 8000c98 + 8001e86: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001e88: 88fb ldrh r3, [r7, #6] + 8001e8a: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001e8c: 68fb ldr r3, [r7, #12] + 8001e8e: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001e92: b2db uxtb r3, r3 + 8001e94: 2b01 cmp r3, #1 + 8001e96: d001 beq.n 8001e9c + { + return HAL_BUSY; + 8001e98: 2302 movs r3, #2 + 8001e9a: e12a b.n 80020f2 + } + + if ((pData == NULL) || (Size == 0U)) + 8001e9c: 68bb ldr r3, [r7, #8] + 8001e9e: 2b00 cmp r3, #0 + 8001ea0: d002 beq.n 8001ea8 + 8001ea2: 88fb ldrh r3, [r7, #6] + 8001ea4: 2b00 cmp r3, #0 + 8001ea6: d101 bne.n 8001eac + { + return HAL_ERROR; + 8001ea8: 2301 movs r3, #1 + 8001eaa: e122 b.n 80020f2 + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001eac: 68fb ldr r3, [r7, #12] + 8001eae: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001eb2: 2b01 cmp r3, #1 + 8001eb4: d101 bne.n 8001eba + 8001eb6: 2302 movs r3, #2 + 8001eb8: e11b b.n 80020f2 + 8001eba: 68fb ldr r3, [r7, #12] + 8001ebc: 2201 movs r2, #1 + 8001ebe: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001ec2: 68fb ldr r3, [r7, #12] + 8001ec4: 2203 movs r2, #3 + 8001ec6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001eca: 68fb ldr r3, [r7, #12] + 8001ecc: 2200 movs r2, #0 + 8001ece: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001ed0: 68fb ldr r3, [r7, #12] + 8001ed2: 68ba ldr r2, [r7, #8] + 8001ed4: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001ed6: 68fb ldr r3, [r7, #12] + 8001ed8: 88fa ldrh r2, [r7, #6] + 8001eda: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8001edc: 68fb ldr r3, [r7, #12] + 8001ede: 88fa ldrh r2, [r7, #6] + 8001ee0: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8001ee2: 68fb ldr r3, [r7, #12] + 8001ee4: 2200 movs r2, #0 + 8001ee6: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8001ee8: 68fb ldr r3, [r7, #12] + 8001eea: 2200 movs r2, #0 + 8001eec: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8001eee: 68fb ldr r3, [r7, #12] + 8001ef0: 2200 movs r2, #0 + 8001ef2: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8001ef4: 68fb ldr r3, [r7, #12] + 8001ef6: 2200 movs r2, #0 + 8001ef8: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8001efa: 68fb ldr r3, [r7, #12] + 8001efc: 2200 movs r2, #0 + 8001efe: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001f00: 68fb ldr r3, [r7, #12] + 8001f02: 689b ldr r3, [r3, #8] + 8001f04: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001f08: d10f bne.n 8001f2a + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8001f0a: 68fb ldr r3, [r7, #12] + 8001f0c: 681b ldr r3, [r3, #0] + 8001f0e: 681a ldr r2, [r3, #0] + 8001f10: 68fb ldr r3, [r7, #12] + 8001f12: 681b ldr r3, [r3, #0] + 8001f14: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001f18: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8001f1a: 68fb ldr r3, [r7, #12] + 8001f1c: 681b ldr r3, [r3, #0] + 8001f1e: 681a ldr r2, [r3, #0] + 8001f20: 68fb ldr r3, [r7, #12] + 8001f22: 681b ldr r3, [r3, #0] + 8001f24: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8001f28: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8001f2a: 68fb ldr r3, [r7, #12] + 8001f2c: 681b ldr r3, [r3, #0] + 8001f2e: 681b ldr r3, [r3, #0] + 8001f30: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001f34: 2b40 cmp r3, #64 @ 0x40 + 8001f36: d007 beq.n 8001f48 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8001f38: 68fb ldr r3, [r7, #12] + 8001f3a: 681b ldr r3, [r3, #0] + 8001f3c: 681a ldr r2, [r3, #0] + 8001f3e: 68fb ldr r3, [r7, #12] + 8001f40: 681b ldr r3, [r3, #0] + 8001f42: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8001f46: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8001f48: 68fb ldr r3, [r7, #12] + 8001f4a: 68db ldr r3, [r3, #12] + 8001f4c: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8001f50: d152 bne.n 8001ff8 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001f52: 68fb ldr r3, [r7, #12] + 8001f54: 685b ldr r3, [r3, #4] + 8001f56: 2b00 cmp r3, #0 + 8001f58: d002 beq.n 8001f60 + 8001f5a: 8b7b ldrh r3, [r7, #26] + 8001f5c: 2b01 cmp r3, #1 + 8001f5e: d145 bne.n 8001fec + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001f60: 68fb ldr r3, [r7, #12] + 8001f62: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f64: 881a ldrh r2, [r3, #0] + 8001f66: 68fb ldr r3, [r7, #12] + 8001f68: 681b ldr r3, [r3, #0] + 8001f6a: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001f6c: 68fb ldr r3, [r7, #12] + 8001f6e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f70: 1c9a adds r2, r3, #2 + 8001f72: 68fb ldr r3, [r7, #12] + 8001f74: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001f76: 68fb ldr r3, [r7, #12] + 8001f78: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f7a: b29b uxth r3, r3 + 8001f7c: 3b01 subs r3, #1 + 8001f7e: b29a uxth r2, r3 + 8001f80: 68fb ldr r3, [r7, #12] + 8001f82: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8001f84: e032 b.n 8001fec + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001f86: 68fb ldr r3, [r7, #12] + 8001f88: 681b ldr r3, [r3, #0] + 8001f8a: 689b ldr r3, [r3, #8] + 8001f8c: f003 0302 and.w r3, r3, #2 + 8001f90: 2b02 cmp r3, #2 + 8001f92: d112 bne.n 8001fba + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001f94: 68fb ldr r3, [r7, #12] + 8001f96: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f98: 881a ldrh r2, [r3, #0] + 8001f9a: 68fb ldr r3, [r7, #12] + 8001f9c: 681b ldr r3, [r3, #0] + 8001f9e: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001fa0: 68fb ldr r3, [r7, #12] + 8001fa2: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001fa4: 1c9a adds r2, r3, #2 + 8001fa6: 68fb ldr r3, [r7, #12] + 8001fa8: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001faa: 68fb ldr r3, [r7, #12] + 8001fac: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001fae: b29b uxth r3, r3 + 8001fb0: 3b01 subs r3, #1 + 8001fb2: b29a uxth r2, r3 + 8001fb4: 68fb ldr r3, [r7, #12] + 8001fb6: 86da strh r2, [r3, #54] @ 0x36 + 8001fb8: e018 b.n 8001fec + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001fba: f7fe fe6d bl 8000c98 + 8001fbe: 4602 mov r2, r0 + 8001fc0: 69fb ldr r3, [r7, #28] + 8001fc2: 1ad3 subs r3, r2, r3 + 8001fc4: 683a ldr r2, [r7, #0] + 8001fc6: 429a cmp r2, r3 + 8001fc8: d803 bhi.n 8001fd2 + 8001fca: 683b ldr r3, [r7, #0] + 8001fcc: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001fd0: d102 bne.n 8001fd8 + 8001fd2: 683b ldr r3, [r7, #0] + 8001fd4: 2b00 cmp r3, #0 + 8001fd6: d109 bne.n 8001fec + { + hspi->State = HAL_SPI_STATE_READY; + 8001fd8: 68fb ldr r3, [r7, #12] + 8001fda: 2201 movs r2, #1 + 8001fdc: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001fe0: 68fb ldr r3, [r7, #12] + 8001fe2: 2200 movs r2, #0 + 8001fe4: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001fe8: 2303 movs r3, #3 + 8001fea: e082 b.n 80020f2 + while (hspi->TxXferCount > 0U) + 8001fec: 68fb ldr r3, [r7, #12] + 8001fee: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001ff0: b29b uxth r3, r3 + 8001ff2: 2b00 cmp r3, #0 + 8001ff4: d1c7 bne.n 8001f86 + 8001ff6: e053 b.n 80020a0 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001ff8: 68fb ldr r3, [r7, #12] + 8001ffa: 685b ldr r3, [r3, #4] + 8001ffc: 2b00 cmp r3, #0 + 8001ffe: d002 beq.n 8002006 + 8002000: 8b7b ldrh r3, [r7, #26] + 8002002: 2b01 cmp r3, #1 + 8002004: d147 bne.n 8002096 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8002006: 68fb ldr r3, [r7, #12] + 8002008: 6b1a ldr r2, [r3, #48] @ 0x30 + 800200a: 68fb ldr r3, [r7, #12] + 800200c: 681b ldr r3, [r3, #0] + 800200e: 330c adds r3, #12 + 8002010: 7812 ldrb r2, [r2, #0] + 8002012: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8002014: 68fb ldr r3, [r7, #12] + 8002016: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002018: 1c5a adds r2, r3, #1 + 800201a: 68fb ldr r3, [r7, #12] + 800201c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800201e: 68fb ldr r3, [r7, #12] + 8002020: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002022: b29b uxth r3, r3 + 8002024: 3b01 subs r3, #1 + 8002026: b29a uxth r2, r3 + 8002028: 68fb ldr r3, [r7, #12] + 800202a: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 800202c: e033 b.n 8002096 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 800202e: 68fb ldr r3, [r7, #12] + 8002030: 681b ldr r3, [r3, #0] + 8002032: 689b ldr r3, [r3, #8] + 8002034: f003 0302 and.w r3, r3, #2 + 8002038: 2b02 cmp r3, #2 + 800203a: d113 bne.n 8002064 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 800203c: 68fb ldr r3, [r7, #12] + 800203e: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002040: 68fb ldr r3, [r7, #12] + 8002042: 681b ldr r3, [r3, #0] + 8002044: 330c adds r3, #12 + 8002046: 7812 ldrb r2, [r2, #0] + 8002048: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800204a: 68fb ldr r3, [r7, #12] + 800204c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800204e: 1c5a adds r2, r3, #1 + 8002050: 68fb ldr r3, [r7, #12] + 8002052: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002054: 68fb ldr r3, [r7, #12] + 8002056: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002058: b29b uxth r3, r3 + 800205a: 3b01 subs r3, #1 + 800205c: b29a uxth r2, r3 + 800205e: 68fb ldr r3, [r7, #12] + 8002060: 86da strh r2, [r3, #54] @ 0x36 + 8002062: e018 b.n 8002096 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8002064: f7fe fe18 bl 8000c98 + 8002068: 4602 mov r2, r0 + 800206a: 69fb ldr r3, [r7, #28] + 800206c: 1ad3 subs r3, r2, r3 + 800206e: 683a ldr r2, [r7, #0] + 8002070: 429a cmp r2, r3 + 8002072: d803 bhi.n 800207c + 8002074: 683b ldr r3, [r7, #0] + 8002076: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 800207a: d102 bne.n 8002082 + 800207c: 683b ldr r3, [r7, #0] + 800207e: 2b00 cmp r3, #0 + 8002080: d109 bne.n 8002096 + { + hspi->State = HAL_SPI_STATE_READY; + 8002082: 68fb ldr r3, [r7, #12] + 8002084: 2201 movs r2, #1 + 8002086: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 800208a: 68fb ldr r3, [r7, #12] + 800208c: 2200 movs r2, #0 + 800208e: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8002092: 2303 movs r3, #3 + 8002094: e02d b.n 80020f2 + while (hspi->TxXferCount > 0U) + 8002096: 68fb ldr r3, [r7, #12] + 8002098: 8edb ldrh r3, [r3, #54] @ 0x36 + 800209a: b29b uxth r3, r3 + 800209c: 2b00 cmp r3, #0 + 800209e: d1c6 bne.n 800202e + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 80020a0: 69fa ldr r2, [r7, #28] + 80020a2: 6839 ldr r1, [r7, #0] + 80020a4: 68f8 ldr r0, [r7, #12] + 80020a6: f000 f8b1 bl 800220c + 80020aa: 4603 mov r3, r0 + 80020ac: 2b00 cmp r3, #0 + 80020ae: d002 beq.n 80020b6 + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80020b0: 68fb ldr r3, [r7, #12] + 80020b2: 2220 movs r2, #32 + 80020b4: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 80020b6: 68fb ldr r3, [r7, #12] + 80020b8: 689b ldr r3, [r3, #8] + 80020ba: 2b00 cmp r3, #0 + 80020bc: d10a bne.n 80020d4 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 80020be: 2300 movs r3, #0 + 80020c0: 617b str r3, [r7, #20] + 80020c2: 68fb ldr r3, [r7, #12] + 80020c4: 681b ldr r3, [r3, #0] + 80020c6: 68db ldr r3, [r3, #12] + 80020c8: 617b str r3, [r7, #20] + 80020ca: 68fb ldr r3, [r7, #12] + 80020cc: 681b ldr r3, [r3, #0] + 80020ce: 689b ldr r3, [r3, #8] + 80020d0: 617b str r3, [r7, #20] + 80020d2: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 80020d4: 68fb ldr r3, [r7, #12] + 80020d6: 2201 movs r2, #1 + 80020d8: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80020dc: 68fb ldr r3, [r7, #12] + 80020de: 2200 movs r2, #0 + 80020e0: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 80020e4: 68fb ldr r3, [r7, #12] + 80020e6: 6d5b ldr r3, [r3, #84] @ 0x54 + 80020e8: 2b00 cmp r3, #0 + 80020ea: d001 beq.n 80020f0 + { + return HAL_ERROR; + 80020ec: 2301 movs r3, #1 + 80020ee: e000 b.n 80020f2 + } + else + { + return HAL_OK; + 80020f0: 2300 movs r3, #0 + } +} + 80020f2: 4618 mov r0, r3 + 80020f4: 3720 adds r7, #32 + 80020f6: 46bd mov sp, r7 + 80020f8: bd80 pop {r7, pc} + ... + +080020fc : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 80020fc: b580 push {r7, lr} + 80020fe: b088 sub sp, #32 + 8002100: af00 add r7, sp, #0 + 8002102: 60f8 str r0, [r7, #12] + 8002104: 60b9 str r1, [r7, #8] + 8002106: 603b str r3, [r7, #0] + 8002108: 4613 mov r3, r2 + 800210a: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 800210c: f7fe fdc4 bl 8000c98 + 8002110: 4602 mov r2, r0 + 8002112: 6abb ldr r3, [r7, #40] @ 0x28 + 8002114: 1a9b subs r3, r3, r2 + 8002116: 683a ldr r2, [r7, #0] + 8002118: 4413 add r3, r2 + 800211a: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 800211c: f7fe fdbc bl 8000c98 + 8002120: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8002122: 4b39 ldr r3, [pc, #228] @ (8002208 ) + 8002124: 681b ldr r3, [r3, #0] + 8002126: 015b lsls r3, r3, #5 + 8002128: 0d1b lsrs r3, r3, #20 + 800212a: 69fa ldr r2, [r7, #28] + 800212c: fb02 f303 mul.w r3, r2, r3 + 8002130: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8002132: e054 b.n 80021de + { + if (Timeout != HAL_MAX_DELAY) + 8002134: 683b ldr r3, [r7, #0] + 8002136: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 800213a: d050 beq.n 80021de + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 800213c: f7fe fdac bl 8000c98 + 8002140: 4602 mov r2, r0 + 8002142: 69bb ldr r3, [r7, #24] + 8002144: 1ad3 subs r3, r2, r3 + 8002146: 69fa ldr r2, [r7, #28] + 8002148: 429a cmp r2, r3 + 800214a: d902 bls.n 8002152 + 800214c: 69fb ldr r3, [r7, #28] + 800214e: 2b00 cmp r3, #0 + 8002150: d13d bne.n 80021ce + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8002152: 68fb ldr r3, [r7, #12] + 8002154: 681b ldr r3, [r3, #0] + 8002156: 685a ldr r2, [r3, #4] + 8002158: 68fb ldr r3, [r7, #12] + 800215a: 681b ldr r3, [r3, #0] + 800215c: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002160: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002162: 68fb ldr r3, [r7, #12] + 8002164: 685b ldr r3, [r3, #4] + 8002166: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800216a: d111 bne.n 8002190 + 800216c: 68fb ldr r3, [r7, #12] + 800216e: 689b ldr r3, [r3, #8] + 8002170: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002174: d004 beq.n 8002180 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 8002176: 68fb ldr r3, [r7, #12] + 8002178: 689b ldr r3, [r3, #8] + 800217a: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 800217e: d107 bne.n 8002190 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8002180: 68fb ldr r3, [r7, #12] + 8002182: 681b ldr r3, [r3, #0] + 8002184: 681a ldr r2, [r3, #0] + 8002186: 68fb ldr r3, [r7, #12] + 8002188: 681b ldr r3, [r3, #0] + 800218a: f022 0240 bic.w r2, r2, #64 @ 0x40 + 800218e: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8002190: 68fb ldr r3, [r7, #12] + 8002192: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002194: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002198: d10f bne.n 80021ba + { + SPI_RESET_CRC(hspi); + 800219a: 68fb ldr r3, [r7, #12] + 800219c: 681b ldr r3, [r3, #0] + 800219e: 681a ldr r2, [r3, #0] + 80021a0: 68fb ldr r3, [r7, #12] + 80021a2: 681b ldr r3, [r3, #0] + 80021a4: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 80021a8: 601a str r2, [r3, #0] + 80021aa: 68fb ldr r3, [r7, #12] + 80021ac: 681b ldr r3, [r3, #0] + 80021ae: 681a ldr r2, [r3, #0] + 80021b0: 68fb ldr r3, [r7, #12] + 80021b2: 681b ldr r3, [r3, #0] + 80021b4: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 80021b8: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80021ba: 68fb ldr r3, [r7, #12] + 80021bc: 2201 movs r2, #1 + 80021be: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80021c2: 68fb ldr r3, [r7, #12] + 80021c4: 2200 movs r2, #0 + 80021c6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 80021ca: 2303 movs r3, #3 + 80021cc: e017 b.n 80021fe + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 80021ce: 697b ldr r3, [r7, #20] + 80021d0: 2b00 cmp r3, #0 + 80021d2: d101 bne.n 80021d8 + { + tmp_timeout = 0U; + 80021d4: 2300 movs r3, #0 + 80021d6: 61fb str r3, [r7, #28] + } + count--; + 80021d8: 697b ldr r3, [r7, #20] + 80021da: 3b01 subs r3, #1 + 80021dc: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 80021de: 68fb ldr r3, [r7, #12] + 80021e0: 681b ldr r3, [r3, #0] + 80021e2: 689a ldr r2, [r3, #8] + 80021e4: 68bb ldr r3, [r7, #8] + 80021e6: 4013 ands r3, r2 + 80021e8: 68ba ldr r2, [r7, #8] + 80021ea: 429a cmp r2, r3 + 80021ec: bf0c ite eq + 80021ee: 2301 moveq r3, #1 + 80021f0: 2300 movne r3, #0 + 80021f2: b2db uxtb r3, r3 + 80021f4: 461a mov r2, r3 + 80021f6: 79fb ldrb r3, [r7, #7] + 80021f8: 429a cmp r2, r3 + 80021fa: d19b bne.n 8002134 + } + } + + return HAL_OK; + 80021fc: 2300 movs r3, #0 +} + 80021fe: 4618 mov r0, r3 + 8002200: 3720 adds r7, #32 + 8002202: 46bd mov sp, r7 + 8002204: bd80 pop {r7, pc} + 8002206: bf00 nop + 8002208: 20000000 .word 0x20000000 + +0800220c : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 800220c: b580 push {r7, lr} + 800220e: b088 sub sp, #32 + 8002210: af02 add r7, sp, #8 + 8002212: 60f8 str r0, [r7, #12] + 8002214: 60b9 str r1, [r7, #8] + 8002216: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8002218: 687b ldr r3, [r7, #4] + 800221a: 9300 str r3, [sp, #0] + 800221c: 68bb ldr r3, [r7, #8] + 800221e: 2201 movs r2, #1 + 8002220: 2102 movs r1, #2 + 8002222: 68f8 ldr r0, [r7, #12] + 8002224: f7ff ff6a bl 80020fc + 8002228: 4603 mov r3, r0 + 800222a: 2b00 cmp r3, #0 + 800222c: d007 beq.n 800223e + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 800222e: 68fb ldr r3, [r7, #12] + 8002230: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002232: f043 0220 orr.w r2, r3, #32 + 8002236: 68fb ldr r3, [r7, #12] + 8002238: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 800223a: 2303 movs r3, #3 + 800223c: e032 b.n 80022a4 + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 800223e: 4b1b ldr r3, [pc, #108] @ (80022ac ) + 8002240: 681b ldr r3, [r3, #0] + 8002242: 4a1b ldr r2, [pc, #108] @ (80022b0 ) + 8002244: fba2 2303 umull r2, r3, r2, r3 + 8002248: 0d5b lsrs r3, r3, #21 + 800224a: f44f 727a mov.w r2, #1000 @ 0x3e8 + 800224e: fb02 f303 mul.w r3, r2, r3 + 8002252: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8002254: 68fb ldr r3, [r7, #12] + 8002256: 685b ldr r3, [r3, #4] + 8002258: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800225c: d112 bne.n 8002284 + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 800225e: 687b ldr r3, [r7, #4] + 8002260: 9300 str r3, [sp, #0] + 8002262: 68bb ldr r3, [r7, #8] + 8002264: 2200 movs r2, #0 + 8002266: 2180 movs r1, #128 @ 0x80 + 8002268: 68f8 ldr r0, [r7, #12] + 800226a: f7ff ff47 bl 80020fc + 800226e: 4603 mov r3, r0 + 8002270: 2b00 cmp r3, #0 + 8002272: d016 beq.n 80022a2 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002274: 68fb ldr r3, [r7, #12] + 8002276: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002278: f043 0220 orr.w r2, r3, #32 + 800227c: 68fb ldr r3, [r7, #12] + 800227e: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002280: 2303 movs r3, #3 + 8002282: e00f b.n 80022a4 + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 8002284: 697b ldr r3, [r7, #20] + 8002286: 2b00 cmp r3, #0 + 8002288: d00a beq.n 80022a0 + { + break; + } + count--; + 800228a: 697b ldr r3, [r7, #20] + 800228c: 3b01 subs r3, #1 + 800228e: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8002290: 68fb ldr r3, [r7, #12] + 8002292: 681b ldr r3, [r3, #0] + 8002294: 689b ldr r3, [r3, #8] + 8002296: f003 0380 and.w r3, r3, #128 @ 0x80 + 800229a: 2b80 cmp r3, #128 @ 0x80 + 800229c: d0f2 beq.n 8002284 + 800229e: e000 b.n 80022a2 + break; + 80022a0: bf00 nop + } + + return HAL_OK; + 80022a2: 2300 movs r3, #0 +} + 80022a4: 4618 mov r0, r3 + 80022a6: 3718 adds r7, #24 + 80022a8: 46bd mov sp, r7 + 80022aa: bd80 pop {r7, pc} + 80022ac: 20000000 .word 0x20000000 + 80022b0: 165e9f81 .word 0x165e9f81 + +080022b4 : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 80022b4: b580 push {r7, lr} + 80022b6: b082 sub sp, #8 + 80022b8: af00 add r7, sp, #0 + 80022ba: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80022bc: 687b ldr r3, [r7, #4] + 80022be: 2b00 cmp r3, #0 + 80022c0: d101 bne.n 80022c6 + { + return HAL_ERROR; + 80022c2: 2301 movs r3, #1 + 80022c4: e031 b.n 800232a + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80022c6: 687b ldr r3, [r7, #4] + 80022c8: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 80022cc: b2db uxtb r3, r3 + 80022ce: 2b00 cmp r3, #0 + 80022d0: d106 bne.n 80022e0 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 80022d2: 687b ldr r3, [r7, #4] + 80022d4: 2200 movs r2, #0 + 80022d6: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 80022da: 6878 ldr r0, [r7, #4] + 80022dc: f7fe fb0c bl 80008f8 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 80022e0: 687b ldr r3, [r7, #4] + 80022e2: 2202 movs r2, #2 + 80022e4: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 80022e8: 687b ldr r3, [r7, #4] + 80022ea: 681a ldr r2, [r3, #0] + 80022ec: 687b ldr r3, [r7, #4] + 80022ee: 3304 adds r3, #4 + 80022f0: 4619 mov r1, r3 + 80022f2: 4610 mov r0, r2 + 80022f4: f000 fb7e bl 80029f4 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 80022f8: 687b ldr r3, [r7, #4] + 80022fa: 2201 movs r2, #1 + 80022fc: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002300: 687b ldr r3, [r7, #4] + 8002302: 2201 movs r2, #1 + 8002304: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002308: 687b ldr r3, [r7, #4] + 800230a: 2201 movs r2, #1 + 800230c: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002310: 687b ldr r3, [r7, #4] + 8002312: 2201 movs r2, #1 + 8002314: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002318: 687b ldr r3, [r7, #4] + 800231a: 2201 movs r2, #1 + 800231c: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002320: 687b ldr r3, [r7, #4] + 8002322: 2201 movs r2, #1 + 8002324: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002328: 2300 movs r3, #0 +} + 800232a: 4618 mov r0, r3 + 800232c: 3708 adds r7, #8 + 800232e: 46bd mov sp, r7 + 8002330: bd80 pop {r7, pc} + +08002332 : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 8002332: b580 push {r7, lr} + 8002334: b082 sub sp, #8 + 8002336: af00 add r7, sp, #0 + 8002338: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 800233a: 687b ldr r3, [r7, #4] + 800233c: 2b00 cmp r3, #0 + 800233e: d101 bne.n 8002344 + { + return HAL_ERROR; + 8002340: 2301 movs r3, #1 + 8002342: e031 b.n 80023a8 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002344: 687b ldr r3, [r7, #4] + 8002346: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 800234a: b2db uxtb r3, r3 + 800234c: 2b00 cmp r3, #0 + 800234e: d106 bne.n 800235e + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002350: 687b ldr r3, [r7, #4] + 8002352: 2200 movs r2, #0 + 8002354: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 8002358: 6878 ldr r0, [r7, #4] + 800235a: f000 f829 bl 80023b0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 800235e: 687b ldr r3, [r7, #4] + 8002360: 2202 movs r2, #2 + 8002362: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002366: 687b ldr r3, [r7, #4] + 8002368: 681a ldr r2, [r3, #0] + 800236a: 687b ldr r3, [r7, #4] + 800236c: 3304 adds r3, #4 + 800236e: 4619 mov r1, r3 + 8002370: 4610 mov r0, r2 + 8002372: f000 fb3f bl 80029f4 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002376: 687b ldr r3, [r7, #4] + 8002378: 2201 movs r2, #1 + 800237a: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 800237e: 687b ldr r3, [r7, #4] + 8002380: 2201 movs r2, #1 + 8002382: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002386: 687b ldr r3, [r7, #4] + 8002388: 2201 movs r2, #1 + 800238a: f883 203b strb.w r2, [r3, #59] @ 0x3b + 800238e: 687b ldr r3, [r7, #4] + 8002390: 2201 movs r2, #1 + 8002392: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002396: 687b ldr r3, [r7, #4] + 8002398: 2201 movs r2, #1 + 800239a: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 800239e: 687b ldr r3, [r7, #4] + 80023a0: 2201 movs r2, #1 + 80023a2: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 80023a6: 2300 movs r3, #0 +} + 80023a8: 4618 mov r0, r3 + 80023aa: 3708 adds r7, #8 + 80023ac: 46bd mov sp, r7 + 80023ae: bd80 pop {r7, pc} + +080023b0 : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 80023b0: b480 push {r7} + 80023b2: b083 sub sp, #12 + 80023b4: af00 add r7, sp, #0 + 80023b6: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 80023b8: bf00 nop + 80023ba: 370c adds r7, #12 + 80023bc: 46bd mov sp, r7 + 80023be: bc80 pop {r7} + 80023c0: 4770 bx lr + ... + +080023c4 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 80023c4: b580 push {r7, lr} + 80023c6: b084 sub sp, #16 + 80023c8: af00 add r7, sp, #0 + 80023ca: 6078 str r0, [r7, #4] + 80023cc: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 80023ce: 683b ldr r3, [r7, #0] + 80023d0: 2b00 cmp r3, #0 + 80023d2: d109 bne.n 80023e8 + 80023d4: 687b ldr r3, [r7, #4] + 80023d6: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 80023da: b2db uxtb r3, r3 + 80023dc: 2b01 cmp r3, #1 + 80023de: bf14 ite ne + 80023e0: 2301 movne r3, #1 + 80023e2: 2300 moveq r3, #0 + 80023e4: b2db uxtb r3, r3 + 80023e6: e022 b.n 800242e + 80023e8: 683b ldr r3, [r7, #0] + 80023ea: 2b04 cmp r3, #4 + 80023ec: d109 bne.n 8002402 + 80023ee: 687b ldr r3, [r7, #4] + 80023f0: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 80023f4: b2db uxtb r3, r3 + 80023f6: 2b01 cmp r3, #1 + 80023f8: bf14 ite ne + 80023fa: 2301 movne r3, #1 + 80023fc: 2300 moveq r3, #0 + 80023fe: b2db uxtb r3, r3 + 8002400: e015 b.n 800242e + 8002402: 683b ldr r3, [r7, #0] + 8002404: 2b08 cmp r3, #8 + 8002406: d109 bne.n 800241c + 8002408: 687b ldr r3, [r7, #4] + 800240a: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800240e: b2db uxtb r3, r3 + 8002410: 2b01 cmp r3, #1 + 8002412: bf14 ite ne + 8002414: 2301 movne r3, #1 + 8002416: 2300 moveq r3, #0 + 8002418: b2db uxtb r3, r3 + 800241a: e008 b.n 800242e + 800241c: 687b ldr r3, [r7, #4] + 800241e: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8002422: b2db uxtb r3, r3 + 8002424: 2b01 cmp r3, #1 + 8002426: bf14 ite ne + 8002428: 2301 movne r3, #1 + 800242a: 2300 moveq r3, #0 + 800242c: b2db uxtb r3, r3 + 800242e: 2b00 cmp r3, #0 + 8002430: d001 beq.n 8002436 + { + return HAL_ERROR; + 8002432: 2301 movs r3, #1 + 8002434: e051 b.n 80024da + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 8002436: 683b ldr r3, [r7, #0] + 8002438: 2b00 cmp r3, #0 + 800243a: d104 bne.n 8002446 + 800243c: 687b ldr r3, [r7, #4] + 800243e: 2202 movs r2, #2 + 8002440: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002444: e013 b.n 800246e + 8002446: 683b ldr r3, [r7, #0] + 8002448: 2b04 cmp r3, #4 + 800244a: d104 bne.n 8002456 + 800244c: 687b ldr r3, [r7, #4] + 800244e: 2202 movs r2, #2 + 8002450: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002454: e00b b.n 800246e + 8002456: 683b ldr r3, [r7, #0] + 8002458: 2b08 cmp r3, #8 + 800245a: d104 bne.n 8002466 + 800245c: 687b ldr r3, [r7, #4] + 800245e: 2202 movs r2, #2 + 8002460: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002464: e003 b.n 800246e + 8002466: 687b ldr r3, [r7, #4] + 8002468: 2202 movs r2, #2 + 800246a: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 800246e: 687b ldr r3, [r7, #4] + 8002470: 681b ldr r3, [r3, #0] + 8002472: 2201 movs r2, #1 + 8002474: 6839 ldr r1, [r7, #0] + 8002476: 4618 mov r0, r3 + 8002478: f000 fcbd bl 8002df6 + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 800247c: 687b ldr r3, [r7, #4] + 800247e: 681b ldr r3, [r3, #0] + 8002480: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002484: d00e beq.n 80024a4 + 8002486: 687b ldr r3, [r7, #4] + 8002488: 681b ldr r3, [r3, #0] + 800248a: 4a16 ldr r2, [pc, #88] @ (80024e4 ) + 800248c: 4293 cmp r3, r2 + 800248e: d009 beq.n 80024a4 + 8002490: 687b ldr r3, [r7, #4] + 8002492: 681b ldr r3, [r3, #0] + 8002494: 4a14 ldr r2, [pc, #80] @ (80024e8 ) + 8002496: 4293 cmp r3, r2 + 8002498: d004 beq.n 80024a4 + 800249a: 687b ldr r3, [r7, #4] + 800249c: 681b ldr r3, [r3, #0] + 800249e: 4a13 ldr r2, [pc, #76] @ (80024ec ) + 80024a0: 4293 cmp r3, r2 + 80024a2: d111 bne.n 80024c8 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 80024a4: 687b ldr r3, [r7, #4] + 80024a6: 681b ldr r3, [r3, #0] + 80024a8: 689b ldr r3, [r3, #8] + 80024aa: f003 0307 and.w r3, r3, #7 + 80024ae: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80024b0: 68fb ldr r3, [r7, #12] + 80024b2: 2b06 cmp r3, #6 + 80024b4: d010 beq.n 80024d8 + { + __HAL_TIM_ENABLE(htim); + 80024b6: 687b ldr r3, [r7, #4] + 80024b8: 681b ldr r3, [r3, #0] + 80024ba: 681a ldr r2, [r3, #0] + 80024bc: 687b ldr r3, [r7, #4] + 80024be: 681b ldr r3, [r3, #0] + 80024c0: f042 0201 orr.w r2, r2, #1 + 80024c4: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80024c6: e007 b.n 80024d8 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 80024c8: 687b ldr r3, [r7, #4] + 80024ca: 681b ldr r3, [r3, #0] + 80024cc: 681a ldr r2, [r3, #0] + 80024ce: 687b ldr r3, [r7, #4] + 80024d0: 681b ldr r3, [r3, #0] + 80024d2: f042 0201 orr.w r2, r2, #1 + 80024d6: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 80024d8: 2300 movs r3, #0 +} + 80024da: 4618 mov r0, r3 + 80024dc: 3710 adds r7, #16 + 80024de: 46bd mov sp, r7 + 80024e0: bd80 pop {r7, pc} + 80024e2: bf00 nop + 80024e4: 40000400 .word 0x40000400 + 80024e8: 40000800 .word 0x40000800 + 80024ec: 40010800 .word 0x40010800 + +080024f0 : + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + 80024f0: b580 push {r7, lr} + 80024f2: b084 sub sp, #16 + 80024f4: af00 add r7, sp, #0 + 80024f6: 6078 str r0, [r7, #4] + uint32_t itsource = htim->Instance->DIER; + 80024f8: 687b ldr r3, [r7, #4] + 80024fa: 681b ldr r3, [r3, #0] + 80024fc: 68db ldr r3, [r3, #12] + 80024fe: 60fb str r3, [r7, #12] + uint32_t itflag = htim->Instance->SR; + 8002500: 687b ldr r3, [r7, #4] + 8002502: 681b ldr r3, [r3, #0] + 8002504: 691b ldr r3, [r3, #16] + 8002506: 60bb str r3, [r7, #8] + + /* Capture compare 1 event */ + if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) + 8002508: 68bb ldr r3, [r7, #8] + 800250a: f003 0302 and.w r3, r3, #2 + 800250e: 2b00 cmp r3, #0 + 8002510: d020 beq.n 8002554 + { + if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) + 8002512: 68fb ldr r3, [r7, #12] + 8002514: f003 0302 and.w r3, r3, #2 + 8002518: 2b00 cmp r3, #0 + 800251a: d01b beq.n 8002554 + { + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); + 800251c: 687b ldr r3, [r7, #4] + 800251e: 681b ldr r3, [r3, #0] + 8002520: f06f 0202 mvn.w r2, #2 + 8002524: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + 8002526: 687b ldr r3, [r7, #4] + 8002528: 2201 movs r2, #1 + 800252a: 761a strb r2, [r3, #24] + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + 800252c: 687b ldr r3, [r7, #4] + 800252e: 681b ldr r3, [r3, #0] + 8002530: 699b ldr r3, [r3, #24] + 8002532: f003 0303 and.w r3, r3, #3 + 8002536: 2b00 cmp r3, #0 + 8002538: d003 beq.n 8002542 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 800253a: 6878 ldr r0, [r7, #4] + 800253c: f000 fa3f bl 80029be + 8002540: e005 b.n 800254e + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002542: 6878 ldr r0, [r7, #4] + 8002544: f000 fa32 bl 80029ac + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002548: 6878 ldr r0, [r7, #4] + 800254a: f000 fa41 bl 80029d0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 800254e: 687b ldr r3, [r7, #4] + 8002550: 2200 movs r2, #0 + 8002552: 761a strb r2, [r3, #24] + } + } + } + /* Capture compare 2 event */ + if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) + 8002554: 68bb ldr r3, [r7, #8] + 8002556: f003 0304 and.w r3, r3, #4 + 800255a: 2b00 cmp r3, #0 + 800255c: d020 beq.n 80025a0 + { + if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) + 800255e: 68fb ldr r3, [r7, #12] + 8002560: f003 0304 and.w r3, r3, #4 + 8002564: 2b00 cmp r3, #0 + 8002566: d01b beq.n 80025a0 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); + 8002568: 687b ldr r3, [r7, #4] + 800256a: 681b ldr r3, [r3, #0] + 800256c: f06f 0204 mvn.w r2, #4 + 8002570: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + 8002572: 687b ldr r3, [r7, #4] + 8002574: 2202 movs r2, #2 + 8002576: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + 8002578: 687b ldr r3, [r7, #4] + 800257a: 681b ldr r3, [r3, #0] + 800257c: 699b ldr r3, [r3, #24] + 800257e: f403 7340 and.w r3, r3, #768 @ 0x300 + 8002582: 2b00 cmp r3, #0 + 8002584: d003 beq.n 800258e + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002586: 6878 ldr r0, [r7, #4] + 8002588: f000 fa19 bl 80029be + 800258c: e005 b.n 800259a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 800258e: 6878 ldr r0, [r7, #4] + 8002590: f000 fa0c bl 80029ac + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002594: 6878 ldr r0, [r7, #4] + 8002596: f000 fa1b bl 80029d0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 800259a: 687b ldr r3, [r7, #4] + 800259c: 2200 movs r2, #0 + 800259e: 761a strb r2, [r3, #24] + } + } + /* Capture compare 3 event */ + if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) + 80025a0: 68bb ldr r3, [r7, #8] + 80025a2: f003 0308 and.w r3, r3, #8 + 80025a6: 2b00 cmp r3, #0 + 80025a8: d020 beq.n 80025ec + { + if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) + 80025aa: 68fb ldr r3, [r7, #12] + 80025ac: f003 0308 and.w r3, r3, #8 + 80025b0: 2b00 cmp r3, #0 + 80025b2: d01b beq.n 80025ec + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + 80025b4: 687b ldr r3, [r7, #4] + 80025b6: 681b ldr r3, [r3, #0] + 80025b8: f06f 0208 mvn.w r2, #8 + 80025bc: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + 80025be: 687b ldr r3, [r7, #4] + 80025c0: 2204 movs r2, #4 + 80025c2: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + 80025c4: 687b ldr r3, [r7, #4] + 80025c6: 681b ldr r3, [r3, #0] + 80025c8: 69db ldr r3, [r3, #28] + 80025ca: f003 0303 and.w r3, r3, #3 + 80025ce: 2b00 cmp r3, #0 + 80025d0: d003 beq.n 80025da + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 80025d2: 6878 ldr r0, [r7, #4] + 80025d4: f000 f9f3 bl 80029be + 80025d8: e005 b.n 80025e6 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 80025da: 6878 ldr r0, [r7, #4] + 80025dc: f000 f9e6 bl 80029ac + HAL_TIM_PWM_PulseFinishedCallback(htim); + 80025e0: 6878 ldr r0, [r7, #4] + 80025e2: f000 f9f5 bl 80029d0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 80025e6: 687b ldr r3, [r7, #4] + 80025e8: 2200 movs r2, #0 + 80025ea: 761a strb r2, [r3, #24] + } + } + /* Capture compare 4 event */ + if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) + 80025ec: 68bb ldr r3, [r7, #8] + 80025ee: f003 0310 and.w r3, r3, #16 + 80025f2: 2b00 cmp r3, #0 + 80025f4: d020 beq.n 8002638 + { + if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) + 80025f6: 68fb ldr r3, [r7, #12] + 80025f8: f003 0310 and.w r3, r3, #16 + 80025fc: 2b00 cmp r3, #0 + 80025fe: d01b beq.n 8002638 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); + 8002600: 687b ldr r3, [r7, #4] + 8002602: 681b ldr r3, [r3, #0] + 8002604: f06f 0210 mvn.w r2, #16 + 8002608: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + 800260a: 687b ldr r3, [r7, #4] + 800260c: 2208 movs r2, #8 + 800260e: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + 8002610: 687b ldr r3, [r7, #4] + 8002612: 681b ldr r3, [r3, #0] + 8002614: 69db ldr r3, [r3, #28] + 8002616: f403 7340 and.w r3, r3, #768 @ 0x300 + 800261a: 2b00 cmp r3, #0 + 800261c: d003 beq.n 8002626 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 800261e: 6878 ldr r0, [r7, #4] + 8002620: f000 f9cd bl 80029be + 8002624: e005 b.n 8002632 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002626: 6878 ldr r0, [r7, #4] + 8002628: f000 f9c0 bl 80029ac + HAL_TIM_PWM_PulseFinishedCallback(htim); + 800262c: 6878 ldr r0, [r7, #4] + 800262e: f000 f9cf bl 80029d0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002632: 687b ldr r3, [r7, #4] + 8002634: 2200 movs r2, #0 + 8002636: 761a strb r2, [r3, #24] + } + } + /* TIM Update event */ + if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) + 8002638: 68bb ldr r3, [r7, #8] + 800263a: f003 0301 and.w r3, r3, #1 + 800263e: 2b00 cmp r3, #0 + 8002640: d00c beq.n 800265c + { + if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) + 8002642: 68fb ldr r3, [r7, #12] + 8002644: f003 0301 and.w r3, r3, #1 + 8002648: 2b00 cmp r3, #0 + 800264a: d007 beq.n 800265c + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); + 800264c: 687b ldr r3, [r7, #4] + 800264e: 681b ldr r3, [r3, #0] + 8002650: f06f 0201 mvn.w r2, #1 + 8002654: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); + 8002656: 6878 ldr r0, [r7, #4] + 8002658: f000 f99f bl 800299a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) + 800265c: 68bb ldr r3, [r7, #8] + 800265e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002662: 2b00 cmp r3, #0 + 8002664: d00c beq.n 8002680 + { + if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) + 8002666: 68fb ldr r3, [r7, #12] + 8002668: f003 0340 and.w r3, r3, #64 @ 0x40 + 800266c: 2b00 cmp r3, #0 + 800266e: d007 beq.n 8002680 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); + 8002670: 687b ldr r3, [r7, #4] + 8002672: 681b ldr r3, [r3, #0] + 8002674: f06f 0240 mvn.w r2, #64 @ 0x40 + 8002678: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); + 800267a: 6878 ldr r0, [r7, #4] + 800267c: f000 f9b1 bl 80029e2 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + 8002680: bf00 nop + 8002682: 3710 adds r7, #16 + 8002684: 46bd mov sp, r7 + 8002686: bd80 pop {r7, pc} + +08002688 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8002688: b580 push {r7, lr} + 800268a: b086 sub sp, #24 + 800268c: af00 add r7, sp, #0 + 800268e: 60f8 str r0, [r7, #12] + 8002690: 60b9 str r1, [r7, #8] + 8002692: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8002694: 2300 movs r3, #0 + 8002696: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8002698: 68fb ldr r3, [r7, #12] + 800269a: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 800269e: 2b01 cmp r3, #1 + 80026a0: d101 bne.n 80026a6 + 80026a2: 2302 movs r3, #2 + 80026a4: e0ae b.n 8002804 + 80026a6: 68fb ldr r3, [r7, #12] + 80026a8: 2201 movs r2, #1 + 80026aa: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + switch (Channel) + 80026ae: 687b ldr r3, [r7, #4] + 80026b0: 2b0c cmp r3, #12 + 80026b2: f200 809f bhi.w 80027f4 + 80026b6: a201 add r2, pc, #4 @ (adr r2, 80026bc ) + 80026b8: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80026bc: 080026f1 .word 0x080026f1 + 80026c0: 080027f5 .word 0x080027f5 + 80026c4: 080027f5 .word 0x080027f5 + 80026c8: 080027f5 .word 0x080027f5 + 80026cc: 08002731 .word 0x08002731 + 80026d0: 080027f5 .word 0x080027f5 + 80026d4: 080027f5 .word 0x080027f5 + 80026d8: 080027f5 .word 0x080027f5 + 80026dc: 08002773 .word 0x08002773 + 80026e0: 080027f5 .word 0x080027f5 + 80026e4: 080027f5 .word 0x080027f5 + 80026e8: 080027f5 .word 0x080027f5 + 80026ec: 080027b3 .word 0x080027b3 + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 80026f0: 68fb ldr r3, [r7, #12] + 80026f2: 681b ldr r3, [r3, #0] + 80026f4: 68b9 ldr r1, [r7, #8] + 80026f6: 4618 mov r0, r3 + 80026f8: f000 f9f2 bl 8002ae0 + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 80026fc: 68fb ldr r3, [r7, #12] + 80026fe: 681b ldr r3, [r3, #0] + 8002700: 699a ldr r2, [r3, #24] + 8002702: 68fb ldr r3, [r7, #12] + 8002704: 681b ldr r3, [r3, #0] + 8002706: f042 0208 orr.w r2, r2, #8 + 800270a: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 800270c: 68fb ldr r3, [r7, #12] + 800270e: 681b ldr r3, [r3, #0] + 8002710: 699a ldr r2, [r3, #24] + 8002712: 68fb ldr r3, [r7, #12] + 8002714: 681b ldr r3, [r3, #0] + 8002716: f022 0204 bic.w r2, r2, #4 + 800271a: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 800271c: 68fb ldr r3, [r7, #12] + 800271e: 681b ldr r3, [r3, #0] + 8002720: 6999 ldr r1, [r3, #24] + 8002722: 68bb ldr r3, [r7, #8] + 8002724: 68da ldr r2, [r3, #12] + 8002726: 68fb ldr r3, [r7, #12] + 8002728: 681b ldr r3, [r3, #0] + 800272a: 430a orrs r2, r1 + 800272c: 619a str r2, [r3, #24] + break; + 800272e: e064 b.n 80027fa + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8002730: 68fb ldr r3, [r7, #12] + 8002732: 681b ldr r3, [r3, #0] + 8002734: 68b9 ldr r1, [r7, #8] + 8002736: 4618 mov r0, r3 + 8002738: f000 fa0e bl 8002b58 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 800273c: 68fb ldr r3, [r7, #12] + 800273e: 681b ldr r3, [r3, #0] + 8002740: 699a ldr r2, [r3, #24] + 8002742: 68fb ldr r3, [r7, #12] + 8002744: 681b ldr r3, [r3, #0] + 8002746: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 800274a: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 800274c: 68fb ldr r3, [r7, #12] + 800274e: 681b ldr r3, [r3, #0] + 8002750: 699a ldr r2, [r3, #24] + 8002752: 68fb ldr r3, [r7, #12] + 8002754: 681b ldr r3, [r3, #0] + 8002756: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800275a: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 800275c: 68fb ldr r3, [r7, #12] + 800275e: 681b ldr r3, [r3, #0] + 8002760: 6999 ldr r1, [r3, #24] + 8002762: 68bb ldr r3, [r7, #8] + 8002764: 68db ldr r3, [r3, #12] + 8002766: 021a lsls r2, r3, #8 + 8002768: 68fb ldr r3, [r7, #12] + 800276a: 681b ldr r3, [r3, #0] + 800276c: 430a orrs r2, r1 + 800276e: 619a str r2, [r3, #24] + break; + 8002770: e043 b.n 80027fa + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 8002772: 68fb ldr r3, [r7, #12] + 8002774: 681b ldr r3, [r3, #0] + 8002776: 68b9 ldr r1, [r7, #8] + 8002778: 4618 mov r0, r3 + 800277a: f000 fa2b bl 8002bd4 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 800277e: 68fb ldr r3, [r7, #12] + 8002780: 681b ldr r3, [r3, #0] + 8002782: 69da ldr r2, [r3, #28] + 8002784: 68fb ldr r3, [r7, #12] + 8002786: 681b ldr r3, [r3, #0] + 8002788: f042 0208 orr.w r2, r2, #8 + 800278c: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 800278e: 68fb ldr r3, [r7, #12] + 8002790: 681b ldr r3, [r3, #0] + 8002792: 69da ldr r2, [r3, #28] + 8002794: 68fb ldr r3, [r7, #12] + 8002796: 681b ldr r3, [r3, #0] + 8002798: f022 0204 bic.w r2, r2, #4 + 800279c: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 800279e: 68fb ldr r3, [r7, #12] + 80027a0: 681b ldr r3, [r3, #0] + 80027a2: 69d9 ldr r1, [r3, #28] + 80027a4: 68bb ldr r3, [r7, #8] + 80027a6: 68da ldr r2, [r3, #12] + 80027a8: 68fb ldr r3, [r7, #12] + 80027aa: 681b ldr r3, [r3, #0] + 80027ac: 430a orrs r2, r1 + 80027ae: 61da str r2, [r3, #28] + break; + 80027b0: e023 b.n 80027fa + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 80027b2: 68fb ldr r3, [r7, #12] + 80027b4: 681b ldr r3, [r3, #0] + 80027b6: 68b9 ldr r1, [r7, #8] + 80027b8: 4618 mov r0, r3 + 80027ba: f000 fa48 bl 8002c4e + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 80027be: 68fb ldr r3, [r7, #12] + 80027c0: 681b ldr r3, [r3, #0] + 80027c2: 69da ldr r2, [r3, #28] + 80027c4: 68fb ldr r3, [r7, #12] + 80027c6: 681b ldr r3, [r3, #0] + 80027c8: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 80027cc: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 80027ce: 68fb ldr r3, [r7, #12] + 80027d0: 681b ldr r3, [r3, #0] + 80027d2: 69da ldr r2, [r3, #28] + 80027d4: 68fb ldr r3, [r7, #12] + 80027d6: 681b ldr r3, [r3, #0] + 80027d8: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80027dc: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 80027de: 68fb ldr r3, [r7, #12] + 80027e0: 681b ldr r3, [r3, #0] + 80027e2: 69d9 ldr r1, [r3, #28] + 80027e4: 68bb ldr r3, [r7, #8] + 80027e6: 68db ldr r3, [r3, #12] + 80027e8: 021a lsls r2, r3, #8 + 80027ea: 68fb ldr r3, [r7, #12] + 80027ec: 681b ldr r3, [r3, #0] + 80027ee: 430a orrs r2, r1 + 80027f0: 61da str r2, [r3, #28] + break; + 80027f2: e002 b.n 80027fa + } + + default: + status = HAL_ERROR; + 80027f4: 2301 movs r3, #1 + 80027f6: 75fb strb r3, [r7, #23] + break; + 80027f8: bf00 nop + } + + __HAL_UNLOCK(htim); + 80027fa: 68fb ldr r3, [r7, #12] + 80027fc: 2200 movs r2, #0 + 80027fe: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002802: 7dfb ldrb r3, [r7, #23] +} + 8002804: 4618 mov r0, r3 + 8002806: 3718 adds r7, #24 + 8002808: 46bd mov sp, r7 + 800280a: bd80 pop {r7, pc} + +0800280c : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 800280c: b580 push {r7, lr} + 800280e: b084 sub sp, #16 + 8002810: af00 add r7, sp, #0 + 8002812: 6078 str r0, [r7, #4] + 8002814: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 8002816: 2300 movs r3, #0 + 8002818: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 800281a: 687b ldr r3, [r7, #4] + 800281c: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002820: 2b01 cmp r3, #1 + 8002822: d101 bne.n 8002828 + 8002824: 2302 movs r3, #2 + 8002826: e0b4 b.n 8002992 + 8002828: 687b ldr r3, [r7, #4] + 800282a: 2201 movs r2, #1 + 800282c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 8002830: 687b ldr r3, [r7, #4] + 8002832: 2202 movs r2, #2 + 8002834: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 8002838: 687b ldr r3, [r7, #4] + 800283a: 681b ldr r3, [r3, #0] + 800283c: 689b ldr r3, [r3, #8] + 800283e: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8002840: 68bb ldr r3, [r7, #8] + 8002842: f023 0377 bic.w r3, r3, #119 @ 0x77 + 8002846: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8002848: 68bb ldr r3, [r7, #8] + 800284a: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800284e: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 8002850: 687b ldr r3, [r7, #4] + 8002852: 681b ldr r3, [r3, #0] + 8002854: 68ba ldr r2, [r7, #8] + 8002856: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 8002858: 683b ldr r3, [r7, #0] + 800285a: 681b ldr r3, [r3, #0] + 800285c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002860: d03e beq.n 80028e0 + 8002862: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002866: f200 8087 bhi.w 8002978 + 800286a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800286e: f000 8086 beq.w 800297e + 8002872: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002876: d87f bhi.n 8002978 + 8002878: 2b70 cmp r3, #112 @ 0x70 + 800287a: d01a beq.n 80028b2 + 800287c: 2b70 cmp r3, #112 @ 0x70 + 800287e: d87b bhi.n 8002978 + 8002880: 2b60 cmp r3, #96 @ 0x60 + 8002882: d050 beq.n 8002926 + 8002884: 2b60 cmp r3, #96 @ 0x60 + 8002886: d877 bhi.n 8002978 + 8002888: 2b50 cmp r3, #80 @ 0x50 + 800288a: d03c beq.n 8002906 + 800288c: 2b50 cmp r3, #80 @ 0x50 + 800288e: d873 bhi.n 8002978 + 8002890: 2b40 cmp r3, #64 @ 0x40 + 8002892: d058 beq.n 8002946 + 8002894: 2b40 cmp r3, #64 @ 0x40 + 8002896: d86f bhi.n 8002978 + 8002898: 2b30 cmp r3, #48 @ 0x30 + 800289a: d064 beq.n 8002966 + 800289c: 2b30 cmp r3, #48 @ 0x30 + 800289e: d86b bhi.n 8002978 + 80028a0: 2b20 cmp r3, #32 + 80028a2: d060 beq.n 8002966 + 80028a4: 2b20 cmp r3, #32 + 80028a6: d867 bhi.n 8002978 + 80028a8: 2b00 cmp r3, #0 + 80028aa: d05c beq.n 8002966 + 80028ac: 2b10 cmp r3, #16 + 80028ae: d05a beq.n 8002966 + 80028b0: e062 b.n 8002978 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 80028b2: 687b ldr r3, [r7, #4] + 80028b4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 80028b6: 683b ldr r3, [r7, #0] + 80028b8: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 80028ba: 683b ldr r3, [r7, #0] + 80028bc: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028be: 683b ldr r3, [r7, #0] + 80028c0: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 80028c2: f000 fa79 bl 8002db8 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 80028c6: 687b ldr r3, [r7, #4] + 80028c8: 681b ldr r3, [r3, #0] + 80028ca: 689b ldr r3, [r3, #8] + 80028cc: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 80028ce: 68bb ldr r3, [r7, #8] + 80028d0: f043 0377 orr.w r3, r3, #119 @ 0x77 + 80028d4: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 80028d6: 687b ldr r3, [r7, #4] + 80028d8: 681b ldr r3, [r3, #0] + 80028da: 68ba ldr r2, [r7, #8] + 80028dc: 609a str r2, [r3, #8] + break; + 80028de: e04f b.n 8002980 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 80028e0: 687b ldr r3, [r7, #4] + 80028e2: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 80028e4: 683b ldr r3, [r7, #0] + 80028e6: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 80028e8: 683b ldr r3, [r7, #0] + 80028ea: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028ec: 683b ldr r3, [r7, #0] + 80028ee: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 80028f0: f000 fa62 bl 8002db8 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 80028f4: 687b ldr r3, [r7, #4] + 80028f6: 681b ldr r3, [r3, #0] + 80028f8: 689a ldr r2, [r3, #8] + 80028fa: 687b ldr r3, [r7, #4] + 80028fc: 681b ldr r3, [r3, #0] + 80028fe: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002902: 609a str r2, [r3, #8] + break; + 8002904: e03c b.n 8002980 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 8002906: 687b ldr r3, [r7, #4] + 8002908: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800290a: 683b ldr r3, [r7, #0] + 800290c: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 800290e: 683b ldr r3, [r7, #0] + 8002910: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8002912: 461a mov r2, r3 + 8002914: f000 f9d9 bl 8002cca + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 8002918: 687b ldr r3, [r7, #4] + 800291a: 681b ldr r3, [r3, #0] + 800291c: 2150 movs r1, #80 @ 0x50 + 800291e: 4618 mov r0, r3 + 8002920: f000 fa30 bl 8002d84 + break; + 8002924: e02c b.n 8002980 + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 8002926: 687b ldr r3, [r7, #4] + 8002928: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800292a: 683b ldr r3, [r7, #0] + 800292c: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 800292e: 683b ldr r3, [r7, #0] + 8002930: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 8002932: 461a mov r2, r3 + 8002934: f000 f9f7 bl 8002d26 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 8002938: 687b ldr r3, [r7, #4] + 800293a: 681b ldr r3, [r3, #0] + 800293c: 2160 movs r1, #96 @ 0x60 + 800293e: 4618 mov r0, r3 + 8002940: f000 fa20 bl 8002d84 + break; + 8002944: e01c b.n 8002980 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 8002946: 687b ldr r3, [r7, #4] + 8002948: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800294a: 683b ldr r3, [r7, #0] + 800294c: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 800294e: 683b ldr r3, [r7, #0] + 8002950: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8002952: 461a mov r2, r3 + 8002954: f000 f9b9 bl 8002cca + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 8002958: 687b ldr r3, [r7, #4] + 800295a: 681b ldr r3, [r3, #0] + 800295c: 2140 movs r1, #64 @ 0x40 + 800295e: 4618 mov r0, r3 + 8002960: f000 fa10 bl 8002d84 + break; + 8002964: e00c b.n 8002980 + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 8002966: 687b ldr r3, [r7, #4] + 8002968: 681a ldr r2, [r3, #0] + 800296a: 683b ldr r3, [r7, #0] + 800296c: 681b ldr r3, [r3, #0] + 800296e: 4619 mov r1, r3 + 8002970: 4610 mov r0, r2 + 8002972: f000 fa07 bl 8002d84 + break; + 8002976: e003 b.n 8002980 + } + + default: + status = HAL_ERROR; + 8002978: 2301 movs r3, #1 + 800297a: 73fb strb r3, [r7, #15] + break; + 800297c: e000 b.n 8002980 + break; + 800297e: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 8002980: 687b ldr r3, [r7, #4] + 8002982: 2201 movs r2, #1 + 8002984: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002988: 687b ldr r3, [r7, #4] + 800298a: 2200 movs r2, #0 + 800298c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002990: 7bfb ldrb r3, [r7, #15] +} + 8002992: 4618 mov r0, r3 + 8002994: 3710 adds r7, #16 + 8002996: 46bd mov sp, r7 + 8002998: bd80 pop {r7, pc} + +0800299a : + * @brief Period elapsed callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + 800299a: b480 push {r7} + 800299c: b083 sub sp, #12 + 800299e: af00 add r7, sp, #0 + 80029a0: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedCallback could be implemented in the user file + */ +} + 80029a2: bf00 nop + 80029a4: 370c adds r7, #12 + 80029a6: 46bd mov sp, r7 + 80029a8: bc80 pop {r7} + 80029aa: 4770 bx lr + +080029ac : + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + 80029ac: b480 push {r7} + 80029ae: b083 sub sp, #12 + 80029b0: af00 add r7, sp, #0 + 80029b2: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + 80029b4: bf00 nop + 80029b6: 370c adds r7, #12 + 80029b8: 46bd mov sp, r7 + 80029ba: bc80 pop {r7} + 80029bc: 4770 bx lr + +080029be : + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + 80029be: b480 push {r7} + 80029c0: b083 sub sp, #12 + 80029c2: af00 add r7, sp, #0 + 80029c4: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + 80029c6: bf00 nop + 80029c8: 370c adds r7, #12 + 80029ca: 46bd mov sp, r7 + 80029cc: bc80 pop {r7} + 80029ce: 4770 bx lr + +080029d0 : + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + 80029d0: b480 push {r7} + 80029d2: b083 sub sp, #12 + 80029d4: af00 add r7, sp, #0 + 80029d6: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file + */ +} + 80029d8: bf00 nop + 80029da: 370c adds r7, #12 + 80029dc: 46bd mov sp, r7 + 80029de: bc80 pop {r7} + 80029e0: 4770 bx lr + +080029e2 : + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + 80029e2: b480 push {r7} + 80029e4: b083 sub sp, #12 + 80029e6: af00 add r7, sp, #0 + 80029e8: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerCallback could be implemented in the user file + */ +} + 80029ea: bf00 nop + 80029ec: 370c adds r7, #12 + 80029ee: 46bd mov sp, r7 + 80029f0: bc80 pop {r7} + 80029f2: 4770 bx lr + +080029f4 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 80029f4: b480 push {r7} + 80029f6: b085 sub sp, #20 + 80029f8: af00 add r7, sp, #0 + 80029fa: 6078 str r0, [r7, #4] + 80029fc: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 80029fe: 687b ldr r3, [r7, #4] + 8002a00: 681b ldr r3, [r3, #0] + 8002a02: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 8002a04: 687b ldr r3, [r7, #4] + 8002a06: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002a0a: d00f beq.n 8002a2c + 8002a0c: 687b ldr r3, [r7, #4] + 8002a0e: 4a2e ldr r2, [pc, #184] @ (8002ac8 ) + 8002a10: 4293 cmp r3, r2 + 8002a12: d00b beq.n 8002a2c + 8002a14: 687b ldr r3, [r7, #4] + 8002a16: 4a2d ldr r2, [pc, #180] @ (8002acc ) + 8002a18: 4293 cmp r3, r2 + 8002a1a: d007 beq.n 8002a2c + 8002a1c: 687b ldr r3, [r7, #4] + 8002a1e: 4a2c ldr r2, [pc, #176] @ (8002ad0 ) + 8002a20: 4293 cmp r3, r2 + 8002a22: d003 beq.n 8002a2c + 8002a24: 687b ldr r3, [r7, #4] + 8002a26: 4a2b ldr r2, [pc, #172] @ (8002ad4 ) + 8002a28: 4293 cmp r3, r2 + 8002a2a: d108 bne.n 8002a3e + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 8002a2c: 68fb ldr r3, [r7, #12] + 8002a2e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002a32: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 8002a34: 683b ldr r3, [r7, #0] + 8002a36: 685b ldr r3, [r3, #4] + 8002a38: 68fa ldr r2, [r7, #12] + 8002a3a: 4313 orrs r3, r2 + 8002a3c: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8002a3e: 687b ldr r3, [r7, #4] + 8002a40: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002a44: d017 beq.n 8002a76 + 8002a46: 687b ldr r3, [r7, #4] + 8002a48: 4a1f ldr r2, [pc, #124] @ (8002ac8 ) + 8002a4a: 4293 cmp r3, r2 + 8002a4c: d013 beq.n 8002a76 + 8002a4e: 687b ldr r3, [r7, #4] + 8002a50: 4a1e ldr r2, [pc, #120] @ (8002acc ) + 8002a52: 4293 cmp r3, r2 + 8002a54: d00f beq.n 8002a76 + 8002a56: 687b ldr r3, [r7, #4] + 8002a58: 4a1d ldr r2, [pc, #116] @ (8002ad0 ) + 8002a5a: 4293 cmp r3, r2 + 8002a5c: d00b beq.n 8002a76 + 8002a5e: 687b ldr r3, [r7, #4] + 8002a60: 4a1c ldr r2, [pc, #112] @ (8002ad4 ) + 8002a62: 4293 cmp r3, r2 + 8002a64: d007 beq.n 8002a76 + 8002a66: 687b ldr r3, [r7, #4] + 8002a68: 4a1b ldr r2, [pc, #108] @ (8002ad8 ) + 8002a6a: 4293 cmp r3, r2 + 8002a6c: d003 beq.n 8002a76 + 8002a6e: 687b ldr r3, [r7, #4] + 8002a70: 4a1a ldr r2, [pc, #104] @ (8002adc ) + 8002a72: 4293 cmp r3, r2 + 8002a74: d108 bne.n 8002a88 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 8002a76: 68fb ldr r3, [r7, #12] + 8002a78: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002a7c: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 8002a7e: 683b ldr r3, [r7, #0] + 8002a80: 68db ldr r3, [r3, #12] + 8002a82: 68fa ldr r2, [r7, #12] + 8002a84: 4313 orrs r3, r2 + 8002a86: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 8002a88: 68fb ldr r3, [r7, #12] + 8002a8a: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8002a8e: 683b ldr r3, [r7, #0] + 8002a90: 691b ldr r3, [r3, #16] + 8002a92: 4313 orrs r3, r2 + 8002a94: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 8002a96: 683b ldr r3, [r7, #0] + 8002a98: 689a ldr r2, [r3, #8] + 8002a9a: 687b ldr r3, [r7, #4] + 8002a9c: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 8002a9e: 683b ldr r3, [r7, #0] + 8002aa0: 681a ldr r2, [r3, #0] + 8002aa2: 687b ldr r3, [r7, #4] + 8002aa4: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 8002aa6: 687b ldr r3, [r7, #4] + 8002aa8: 681b ldr r3, [r3, #0] + 8002aaa: f043 0204 orr.w r2, r3, #4 + 8002aae: 687b ldr r3, [r7, #4] + 8002ab0: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 8002ab2: 687b ldr r3, [r7, #4] + 8002ab4: 2201 movs r2, #1 + 8002ab6: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 8002ab8: 687b ldr r3, [r7, #4] + 8002aba: 68fa ldr r2, [r7, #12] + 8002abc: 601a str r2, [r3, #0] +} + 8002abe: bf00 nop + 8002ac0: 3714 adds r7, #20 + 8002ac2: 46bd mov sp, r7 + 8002ac4: bc80 pop {r7} + 8002ac6: 4770 bx lr + 8002ac8: 40000400 .word 0x40000400 + 8002acc: 40000800 .word 0x40000800 + 8002ad0: 40000c00 .word 0x40000c00 + 8002ad4: 40010800 .word 0x40010800 + 8002ad8: 40010c00 .word 0x40010c00 + 8002adc: 40011000 .word 0x40011000 + +08002ae0 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002ae0: b480 push {r7} + 8002ae2: b087 sub sp, #28 + 8002ae4: af00 add r7, sp, #0 + 8002ae6: 6078 str r0, [r7, #4] + 8002ae8: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002aea: 687b ldr r3, [r7, #4] + 8002aec: 6a1b ldr r3, [r3, #32] + 8002aee: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002af0: 687b ldr r3, [r7, #4] + 8002af2: 6a1b ldr r3, [r3, #32] + 8002af4: f023 0201 bic.w r2, r3, #1 + 8002af8: 687b ldr r3, [r7, #4] + 8002afa: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002afc: 687b ldr r3, [r7, #4] + 8002afe: 685b ldr r3, [r3, #4] + 8002b00: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002b02: 687b ldr r3, [r7, #4] + 8002b04: 699b ldr r3, [r3, #24] + 8002b06: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 8002b08: 68fb ldr r3, [r7, #12] + 8002b0a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002b0e: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8002b10: 68fb ldr r3, [r7, #12] + 8002b12: f023 0303 bic.w r3, r3, #3 + 8002b16: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002b18: 683b ldr r3, [r7, #0] + 8002b1a: 681b ldr r3, [r3, #0] + 8002b1c: 68fa ldr r2, [r7, #12] + 8002b1e: 4313 orrs r3, r2 + 8002b20: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8002b22: 697b ldr r3, [r7, #20] + 8002b24: f023 0302 bic.w r3, r3, #2 + 8002b28: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8002b2a: 683b ldr r3, [r7, #0] + 8002b2c: 689b ldr r3, [r3, #8] + 8002b2e: 697a ldr r2, [r7, #20] + 8002b30: 4313 orrs r3, r2 + 8002b32: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002b34: 687b ldr r3, [r7, #4] + 8002b36: 693a ldr r2, [r7, #16] + 8002b38: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002b3a: 687b ldr r3, [r7, #4] + 8002b3c: 68fa ldr r2, [r7, #12] + 8002b3e: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 8002b40: 683b ldr r3, [r7, #0] + 8002b42: 685a ldr r2, [r3, #4] + 8002b44: 687b ldr r3, [r7, #4] + 8002b46: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002b48: 687b ldr r3, [r7, #4] + 8002b4a: 697a ldr r2, [r7, #20] + 8002b4c: 621a str r2, [r3, #32] +} + 8002b4e: bf00 nop + 8002b50: 371c adds r7, #28 + 8002b52: 46bd mov sp, r7 + 8002b54: bc80 pop {r7} + 8002b56: 4770 bx lr + +08002b58 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002b58: b480 push {r7} + 8002b5a: b087 sub sp, #28 + 8002b5c: af00 add r7, sp, #0 + 8002b5e: 6078 str r0, [r7, #4] + 8002b60: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002b62: 687b ldr r3, [r7, #4] + 8002b64: 6a1b ldr r3, [r3, #32] + 8002b66: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002b68: 687b ldr r3, [r7, #4] + 8002b6a: 6a1b ldr r3, [r3, #32] + 8002b6c: f023 0210 bic.w r2, r3, #16 + 8002b70: 687b ldr r3, [r7, #4] + 8002b72: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002b74: 687b ldr r3, [r7, #4] + 8002b76: 685b ldr r3, [r3, #4] + 8002b78: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002b7a: 687b ldr r3, [r7, #4] + 8002b7c: 699b ldr r3, [r3, #24] + 8002b7e: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 8002b80: 68fb ldr r3, [r7, #12] + 8002b82: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002b86: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8002b88: 68fb ldr r3, [r7, #12] + 8002b8a: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002b8e: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002b90: 683b ldr r3, [r7, #0] + 8002b92: 681b ldr r3, [r3, #0] + 8002b94: 021b lsls r3, r3, #8 + 8002b96: 68fa ldr r2, [r7, #12] + 8002b98: 4313 orrs r3, r2 + 8002b9a: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8002b9c: 697b ldr r3, [r7, #20] + 8002b9e: f023 0320 bic.w r3, r3, #32 + 8002ba2: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8002ba4: 683b ldr r3, [r7, #0] + 8002ba6: 689b ldr r3, [r3, #8] + 8002ba8: 011b lsls r3, r3, #4 + 8002baa: 697a ldr r2, [r7, #20] + 8002bac: 4313 orrs r3, r2 + 8002bae: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002bb0: 687b ldr r3, [r7, #4] + 8002bb2: 693a ldr r2, [r7, #16] + 8002bb4: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002bb6: 687b ldr r3, [r7, #4] + 8002bb8: 68fa ldr r2, [r7, #12] + 8002bba: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8002bbc: 683b ldr r3, [r7, #0] + 8002bbe: 685a ldr r2, [r3, #4] + 8002bc0: 687b ldr r3, [r7, #4] + 8002bc2: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002bc4: 687b ldr r3, [r7, #4] + 8002bc6: 697a ldr r2, [r7, #20] + 8002bc8: 621a str r2, [r3, #32] +} + 8002bca: bf00 nop + 8002bcc: 371c adds r7, #28 + 8002bce: 46bd mov sp, r7 + 8002bd0: bc80 pop {r7} + 8002bd2: 4770 bx lr + +08002bd4 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002bd4: b480 push {r7} + 8002bd6: b087 sub sp, #28 + 8002bd8: af00 add r7, sp, #0 + 8002bda: 6078 str r0, [r7, #4] + 8002bdc: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002bde: 687b ldr r3, [r7, #4] + 8002be0: 6a1b ldr r3, [r3, #32] + 8002be2: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8002be4: 687b ldr r3, [r7, #4] + 8002be6: 6a1b ldr r3, [r3, #32] + 8002be8: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8002bec: 687b ldr r3, [r7, #4] + 8002bee: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002bf0: 687b ldr r3, [r7, #4] + 8002bf2: 685b ldr r3, [r3, #4] + 8002bf4: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002bf6: 687b ldr r3, [r7, #4] + 8002bf8: 69db ldr r3, [r3, #28] + 8002bfa: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8002bfc: 68fb ldr r3, [r7, #12] + 8002bfe: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002c02: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 8002c04: 68fb ldr r3, [r7, #12] + 8002c06: f023 0303 bic.w r3, r3, #3 + 8002c0a: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002c0c: 683b ldr r3, [r7, #0] + 8002c0e: 681b ldr r3, [r3, #0] + 8002c10: 68fa ldr r2, [r7, #12] + 8002c12: 4313 orrs r3, r2 + 8002c14: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8002c16: 697b ldr r3, [r7, #20] + 8002c18: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8002c1c: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 8002c1e: 683b ldr r3, [r7, #0] + 8002c20: 689b ldr r3, [r3, #8] + 8002c22: 021b lsls r3, r3, #8 + 8002c24: 697a ldr r2, [r7, #20] + 8002c26: 4313 orrs r3, r2 + 8002c28: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002c2a: 687b ldr r3, [r7, #4] + 8002c2c: 693a ldr r2, [r7, #16] + 8002c2e: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002c30: 687b ldr r3, [r7, #4] + 8002c32: 68fa ldr r2, [r7, #12] + 8002c34: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8002c36: 683b ldr r3, [r7, #0] + 8002c38: 685a ldr r2, [r3, #4] + 8002c3a: 687b ldr r3, [r7, #4] + 8002c3c: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002c3e: 687b ldr r3, [r7, #4] + 8002c40: 697a ldr r2, [r7, #20] + 8002c42: 621a str r2, [r3, #32] +} + 8002c44: bf00 nop + 8002c46: 371c adds r7, #28 + 8002c48: 46bd mov sp, r7 + 8002c4a: bc80 pop {r7} + 8002c4c: 4770 bx lr + +08002c4e : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002c4e: b480 push {r7} + 8002c50: b087 sub sp, #28 + 8002c52: af00 add r7, sp, #0 + 8002c54: 6078 str r0, [r7, #4] + 8002c56: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002c58: 687b ldr r3, [r7, #4] + 8002c5a: 6a1b ldr r3, [r3, #32] + 8002c5c: 617b str r3, [r7, #20] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8002c5e: 687b ldr r3, [r7, #4] + 8002c60: 6a1b ldr r3, [r3, #32] + 8002c62: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8002c66: 687b ldr r3, [r7, #4] + 8002c68: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002c6a: 687b ldr r3, [r7, #4] + 8002c6c: 685b ldr r3, [r3, #4] + 8002c6e: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002c70: 687b ldr r3, [r7, #4] + 8002c72: 69db ldr r3, [r3, #28] + 8002c74: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8002c76: 68fb ldr r3, [r7, #12] + 8002c78: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002c7c: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8002c7e: 68fb ldr r3, [r7, #12] + 8002c80: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002c84: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002c86: 683b ldr r3, [r7, #0] + 8002c88: 681b ldr r3, [r3, #0] + 8002c8a: 021b lsls r3, r3, #8 + 8002c8c: 68fa ldr r2, [r7, #12] + 8002c8e: 4313 orrs r3, r2 + 8002c90: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8002c92: 697b ldr r3, [r7, #20] + 8002c94: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8002c98: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8002c9a: 683b ldr r3, [r7, #0] + 8002c9c: 689b ldr r3, [r3, #8] + 8002c9e: 031b lsls r3, r3, #12 + 8002ca0: 697a ldr r2, [r7, #20] + 8002ca2: 4313 orrs r3, r2 + 8002ca4: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002ca6: 687b ldr r3, [r7, #4] + 8002ca8: 693a ldr r2, [r7, #16] + 8002caa: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002cac: 687b ldr r3, [r7, #4] + 8002cae: 68fa ldr r2, [r7, #12] + 8002cb0: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 8002cb2: 683b ldr r3, [r7, #0] + 8002cb4: 685a ldr r2, [r3, #4] + 8002cb6: 687b ldr r3, [r7, #4] + 8002cb8: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002cba: 687b ldr r3, [r7, #4] + 8002cbc: 697a ldr r2, [r7, #20] + 8002cbe: 621a str r2, [r3, #32] +} + 8002cc0: bf00 nop + 8002cc2: 371c adds r7, #28 + 8002cc4: 46bd mov sp, r7 + 8002cc6: bc80 pop {r7} + 8002cc8: 4770 bx lr + +08002cca : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002cca: b480 push {r7} + 8002ccc: b087 sub sp, #28 + 8002cce: af00 add r7, sp, #0 + 8002cd0: 60f8 str r0, [r7, #12] + 8002cd2: 60b9 str r1, [r7, #8] + 8002cd4: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8002cd6: 68fb ldr r3, [r7, #12] + 8002cd8: 6a1b ldr r3, [r3, #32] + 8002cda: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002cdc: 68fb ldr r3, [r7, #12] + 8002cde: 6a1b ldr r3, [r3, #32] + 8002ce0: f023 0201 bic.w r2, r3, #1 + 8002ce4: 68fb ldr r3, [r7, #12] + 8002ce6: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002ce8: 68fb ldr r3, [r7, #12] + 8002cea: 699b ldr r3, [r3, #24] + 8002cec: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8002cee: 693b ldr r3, [r7, #16] + 8002cf0: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8002cf4: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8002cf6: 687b ldr r3, [r7, #4] + 8002cf8: 011b lsls r3, r3, #4 + 8002cfa: 693a ldr r2, [r7, #16] + 8002cfc: 4313 orrs r3, r2 + 8002cfe: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8002d00: 697b ldr r3, [r7, #20] + 8002d02: f023 030a bic.w r3, r3, #10 + 8002d06: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8002d08: 697a ldr r2, [r7, #20] + 8002d0a: 68bb ldr r3, [r7, #8] + 8002d0c: 4313 orrs r3, r2 + 8002d0e: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8002d10: 68fb ldr r3, [r7, #12] + 8002d12: 693a ldr r2, [r7, #16] + 8002d14: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002d16: 68fb ldr r3, [r7, #12] + 8002d18: 697a ldr r2, [r7, #20] + 8002d1a: 621a str r2, [r3, #32] +} + 8002d1c: bf00 nop + 8002d1e: 371c adds r7, #28 + 8002d20: 46bd mov sp, r7 + 8002d22: bc80 pop {r7} + 8002d24: 4770 bx lr + +08002d26 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002d26: b480 push {r7} + 8002d28: b087 sub sp, #28 + 8002d2a: af00 add r7, sp, #0 + 8002d2c: 60f8 str r0, [r7, #12] + 8002d2e: 60b9 str r1, [r7, #8] + 8002d30: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 8002d32: 68fb ldr r3, [r7, #12] + 8002d34: 6a1b ldr r3, [r3, #32] + 8002d36: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002d38: 68fb ldr r3, [r7, #12] + 8002d3a: 6a1b ldr r3, [r3, #32] + 8002d3c: f023 0210 bic.w r2, r3, #16 + 8002d40: 68fb ldr r3, [r7, #12] + 8002d42: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002d44: 68fb ldr r3, [r7, #12] + 8002d46: 699b ldr r3, [r3, #24] + 8002d48: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8002d4a: 693b ldr r3, [r7, #16] + 8002d4c: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 8002d50: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 8002d52: 687b ldr r3, [r7, #4] + 8002d54: 031b lsls r3, r3, #12 + 8002d56: 693a ldr r2, [r7, #16] + 8002d58: 4313 orrs r3, r2 + 8002d5a: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8002d5c: 697b ldr r3, [r7, #20] + 8002d5e: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8002d62: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8002d64: 68bb ldr r3, [r7, #8] + 8002d66: 011b lsls r3, r3, #4 + 8002d68: 697a ldr r2, [r7, #20] + 8002d6a: 4313 orrs r3, r2 + 8002d6c: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8002d6e: 68fb ldr r3, [r7, #12] + 8002d70: 693a ldr r2, [r7, #16] + 8002d72: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002d74: 68fb ldr r3, [r7, #12] + 8002d76: 697a ldr r2, [r7, #20] + 8002d78: 621a str r2, [r3, #32] +} + 8002d7a: bf00 nop + 8002d7c: 371c adds r7, #28 + 8002d7e: 46bd mov sp, r7 + 8002d80: bc80 pop {r7} + 8002d82: 4770 bx lr + +08002d84 : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 8002d84: b480 push {r7} + 8002d86: b085 sub sp, #20 + 8002d88: af00 add r7, sp, #0 + 8002d8a: 6078 str r0, [r7, #4] + 8002d8c: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 8002d8e: 687b ldr r3, [r7, #4] + 8002d90: 689b ldr r3, [r3, #8] + 8002d92: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8002d94: 68fb ldr r3, [r7, #12] + 8002d96: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002d9a: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8002d9c: 683a ldr r2, [r7, #0] + 8002d9e: 68fb ldr r3, [r7, #12] + 8002da0: 4313 orrs r3, r2 + 8002da2: f043 0307 orr.w r3, r3, #7 + 8002da6: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002da8: 687b ldr r3, [r7, #4] + 8002daa: 68fa ldr r2, [r7, #12] + 8002dac: 609a str r2, [r3, #8] +} + 8002dae: bf00 nop + 8002db0: 3714 adds r7, #20 + 8002db2: 46bd mov sp, r7 + 8002db4: bc80 pop {r7} + 8002db6: 4770 bx lr + +08002db8 : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8002db8: b480 push {r7} + 8002dba: b087 sub sp, #28 + 8002dbc: af00 add r7, sp, #0 + 8002dbe: 60f8 str r0, [r7, #12] + 8002dc0: 60b9 str r1, [r7, #8] + 8002dc2: 607a str r2, [r7, #4] + 8002dc4: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8002dc6: 68fb ldr r3, [r7, #12] + 8002dc8: 689b ldr r3, [r3, #8] + 8002dca: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8002dcc: 697b ldr r3, [r7, #20] + 8002dce: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8002dd2: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8002dd4: 683b ldr r3, [r7, #0] + 8002dd6: 021a lsls r2, r3, #8 + 8002dd8: 687b ldr r3, [r7, #4] + 8002dda: 431a orrs r2, r3 + 8002ddc: 68bb ldr r3, [r7, #8] + 8002dde: 4313 orrs r3, r2 + 8002de0: 697a ldr r2, [r7, #20] + 8002de2: 4313 orrs r3, r2 + 8002de4: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002de6: 68fb ldr r3, [r7, #12] + 8002de8: 697a ldr r2, [r7, #20] + 8002dea: 609a str r2, [r3, #8] +} + 8002dec: bf00 nop + 8002dee: 371c adds r7, #28 + 8002df0: 46bd mov sp, r7 + 8002df2: bc80 pop {r7} + 8002df4: 4770 bx lr + +08002df6 : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8002df6: b480 push {r7} + 8002df8: b087 sub sp, #28 + 8002dfa: af00 add r7, sp, #0 + 8002dfc: 60f8 str r0, [r7, #12] + 8002dfe: 60b9 str r1, [r7, #8] + 8002e00: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 8002e02: 68bb ldr r3, [r7, #8] + 8002e04: f003 031f and.w r3, r3, #31 + 8002e08: 2201 movs r2, #1 + 8002e0a: fa02 f303 lsl.w r3, r2, r3 + 8002e0e: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 8002e10: 68fb ldr r3, [r7, #12] + 8002e12: 6a1a ldr r2, [r3, #32] + 8002e14: 697b ldr r3, [r7, #20] + 8002e16: 43db mvns r3, r3 + 8002e18: 401a ands r2, r3 + 8002e1a: 68fb ldr r3, [r7, #12] + 8002e1c: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8002e1e: 68fb ldr r3, [r7, #12] + 8002e20: 6a1a ldr r2, [r3, #32] + 8002e22: 68bb ldr r3, [r7, #8] + 8002e24: f003 031f and.w r3, r3, #31 + 8002e28: 6879 ldr r1, [r7, #4] + 8002e2a: fa01 f303 lsl.w r3, r1, r3 + 8002e2e: 431a orrs r2, r3 + 8002e30: 68fb ldr r3, [r7, #12] + 8002e32: 621a str r2, [r3, #32] +} + 8002e34: bf00 nop + 8002e36: 371c adds r7, #28 + 8002e38: 46bd mov sp, r7 + 8002e3a: bc80 pop {r7} + 8002e3c: 4770 bx lr + ... + +08002e40 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8002e40: b480 push {r7} + 8002e42: b085 sub sp, #20 + 8002e44: af00 add r7, sp, #0 + 8002e46: 6078 str r0, [r7, #4] + 8002e48: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 8002e4a: 687b ldr r3, [r7, #4] + 8002e4c: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002e50: 2b01 cmp r3, #1 + 8002e52: d101 bne.n 8002e58 + 8002e54: 2302 movs r3, #2 + 8002e56: e046 b.n 8002ee6 + 8002e58: 687b ldr r3, [r7, #4] + 8002e5a: 2201 movs r2, #1 + 8002e5c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002e60: 687b ldr r3, [r7, #4] + 8002e62: 2202 movs r2, #2 + 8002e64: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8002e68: 687b ldr r3, [r7, #4] + 8002e6a: 681b ldr r3, [r3, #0] + 8002e6c: 685b ldr r3, [r3, #4] + 8002e6e: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8002e70: 687b ldr r3, [r7, #4] + 8002e72: 681b ldr r3, [r3, #0] + 8002e74: 689b ldr r3, [r3, #8] + 8002e76: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8002e78: 68fb ldr r3, [r7, #12] + 8002e7a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002e7e: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8002e80: 683b ldr r3, [r7, #0] + 8002e82: 681b ldr r3, [r3, #0] + 8002e84: 68fa ldr r2, [r7, #12] + 8002e86: 4313 orrs r3, r2 + 8002e88: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8002e8a: 687b ldr r3, [r7, #4] + 8002e8c: 681b ldr r3, [r3, #0] + 8002e8e: 68fa ldr r2, [r7, #12] + 8002e90: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002e92: 687b ldr r3, [r7, #4] + 8002e94: 681b ldr r3, [r3, #0] + 8002e96: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002e9a: d00e beq.n 8002eba + 8002e9c: 687b ldr r3, [r7, #4] + 8002e9e: 681b ldr r3, [r3, #0] + 8002ea0: 4a13 ldr r2, [pc, #76] @ (8002ef0 ) + 8002ea2: 4293 cmp r3, r2 + 8002ea4: d009 beq.n 8002eba + 8002ea6: 687b ldr r3, [r7, #4] + 8002ea8: 681b ldr r3, [r3, #0] + 8002eaa: 4a12 ldr r2, [pc, #72] @ (8002ef4 ) + 8002eac: 4293 cmp r3, r2 + 8002eae: d004 beq.n 8002eba + 8002eb0: 687b ldr r3, [r7, #4] + 8002eb2: 681b ldr r3, [r3, #0] + 8002eb4: 4a10 ldr r2, [pc, #64] @ (8002ef8 ) + 8002eb6: 4293 cmp r3, r2 + 8002eb8: d10c bne.n 8002ed4 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8002eba: 68bb ldr r3, [r7, #8] + 8002ebc: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8002ec0: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 8002ec2: 683b ldr r3, [r7, #0] + 8002ec4: 685b ldr r3, [r3, #4] + 8002ec6: 68ba ldr r2, [r7, #8] + 8002ec8: 4313 orrs r3, r2 + 8002eca: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002ecc: 687b ldr r3, [r7, #4] + 8002ece: 681b ldr r3, [r3, #0] + 8002ed0: 68ba ldr r2, [r7, #8] + 8002ed2: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8002ed4: 687b ldr r3, [r7, #4] + 8002ed6: 2201 movs r2, #1 + 8002ed8: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002edc: 687b ldr r3, [r7, #4] + 8002ede: 2200 movs r2, #0 + 8002ee0: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 8002ee4: 2300 movs r3, #0 +} + 8002ee6: 4618 mov r0, r3 + 8002ee8: 3714 adds r7, #20 + 8002eea: 46bd mov sp, r7 + 8002eec: bc80 pop {r7} + 8002eee: 4770 bx lr + 8002ef0: 40000400 .word 0x40000400 + 8002ef4: 40000800 .word 0x40000800 + 8002ef8: 40010800 .word 0x40010800 + +08002efc : + 8002efc: 4603 mov r3, r0 + 8002efe: 4402 add r2, r0 + 8002f00: 4293 cmp r3, r2 + 8002f02: d100 bne.n 8002f06 + 8002f04: 4770 bx lr + 8002f06: f803 1b01 strb.w r1, [r3], #1 + 8002f0a: e7f9 b.n 8002f00 + +08002f0c <__libc_init_array>: + 8002f0c: b570 push {r4, r5, r6, lr} + 8002f0e: 2600 movs r6, #0 + 8002f10: 4d0c ldr r5, [pc, #48] @ (8002f44 <__libc_init_array+0x38>) + 8002f12: 4c0d ldr r4, [pc, #52] @ (8002f48 <__libc_init_array+0x3c>) + 8002f14: 1b64 subs r4, r4, r5 + 8002f16: 10a4 asrs r4, r4, #2 + 8002f18: 42a6 cmp r6, r4 + 8002f1a: d109 bne.n 8002f30 <__libc_init_array+0x24> + 8002f1c: f000 f81a bl 8002f54 <_init> + 8002f20: 2600 movs r6, #0 + 8002f22: 4d0a ldr r5, [pc, #40] @ (8002f4c <__libc_init_array+0x40>) + 8002f24: 4c0a ldr r4, [pc, #40] @ (8002f50 <__libc_init_array+0x44>) + 8002f26: 1b64 subs r4, r4, r5 + 8002f28: 10a4 asrs r4, r4, #2 + 8002f2a: 42a6 cmp r6, r4 + 8002f2c: d105 bne.n 8002f3a <__libc_init_array+0x2e> + 8002f2e: bd70 pop {r4, r5, r6, pc} + 8002f30: f855 3b04 ldr.w r3, [r5], #4 + 8002f34: 4798 blx r3 + 8002f36: 3601 adds r6, #1 + 8002f38: e7ee b.n 8002f18 <__libc_init_array+0xc> + 8002f3a: f855 3b04 ldr.w r3, [r5], #4 + 8002f3e: 4798 blx r3 + 8002f40: 3601 adds r6, #1 + 8002f42: e7f2 b.n 8002f2a <__libc_init_array+0x1e> + 8002f44: 08002f90 .word 0x08002f90 + 8002f48: 08002f90 .word 0x08002f90 + 8002f4c: 08002f90 .word 0x08002f90 + 8002f50: 08002f94 .word 0x08002f94 + +08002f54 <_init>: + 8002f54: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002f56: bf00 nop + 8002f58: bcf8 pop {r3, r4, r5, r6, r7} + 8002f5a: bc08 pop {r3} + 8002f5c: 469e mov lr, r3 + 8002f5e: 4770 bx lr + +08002f60 <_fini>: + 8002f60: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002f62: bf00 nop + 8002f64: bcf8 pop {r3, r4, r5, r6, r7} + 8002f66: bc08 pop {r3} + 8002f68: 469e mov lr, r3 + 8002f6a: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.map b/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.map new file mode 100644 index 0000000..dc6feb1 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_GENERATOR.map @@ -0,0 +1,3419 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x54 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .rodata.conv_7seg + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayChar + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_Delay + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85b07 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f63 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x8597b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aab ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x00000000 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x2e30 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.main 0x080004b0 0x34 ./Core/Src/main.o + 0x080004b0 main + .text.SystemClock_Config + 0x080004e4 0x8c ./Core/Src/main.o + 0x080004e4 SystemClock_Config + .text.MX_SPI1_Init + 0x08000570 0x6c ./Core/Src/main.o + .text.MX_TIM2_Init + 0x080005dc 0x9c ./Core/Src/main.o + .text.MX_TIM3_Init + 0x08000678 0xe4 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x0800075c 0xac ./Core/Src/main.o + .text.Error_Handler + 0x08000808 0xc ./Core/Src/main.o + 0x08000808 Error_Handler + .text.HAL_MspInit + 0x08000814 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000814 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000870 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000870 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x080008f8 0x80 ./Core/Src/stm32l1xx_hal_msp.o + 0x080008f8 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000978 0x70 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000978 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x080009e8 0x8 ./Core/Src/stm32l1xx_it.o + 0x080009e8 NMI_Handler + .text.HardFault_Handler + 0x080009f0 0x8 ./Core/Src/stm32l1xx_it.o + 0x080009f0 HardFault_Handler + .text.MemManage_Handler + 0x080009f8 0x8 ./Core/Src/stm32l1xx_it.o + 0x080009f8 MemManage_Handler + .text.BusFault_Handler + 0x08000a00 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000a00 BusFault_Handler + .text.UsageFault_Handler + 0x08000a08 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000a08 UsageFault_Handler + .text.SVC_Handler + 0x08000a10 0xc ./Core/Src/stm32l1xx_it.o + 0x08000a10 SVC_Handler + .text.DebugMon_Handler + 0x08000a1c 0xc ./Core/Src/stm32l1xx_it.o + 0x08000a1c DebugMon_Handler + .text.PendSV_Handler + 0x08000a28 0xc ./Core/Src/stm32l1xx_it.o + 0x08000a28 PendSV_Handler + .text.SysTick_Handler + 0x08000a34 0xc ./Core/Src/stm32l1xx_it.o + 0x08000a34 SysTick_Handler + .text.TIM2_IRQHandler + 0x08000a40 0x14 ./Core/Src/stm32l1xx_it.o + 0x08000a40 TIM2_IRQHandler + .text.TIM3_IRQHandler + 0x08000a54 0x14 ./Core/Src/stm32l1xx_it.o + 0x08000a54 TIM3_IRQHandler + .text.EXTI15_10_IRQHandler + 0x08000a68 0x18 ./Core/Src/stm32l1xx_it.o + 0x08000a68 EXTI15_10_IRQHandler + .text.SystemInit + 0x08000a80 0xc ./Core/Src/system_stm32l1xx.o + 0x08000a80 SystemInit + .text.Reset_Handler + 0x08000a8c 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08000a8c Reset_Handler + .text.Default_Handler + 0x08000ad4 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000ad4 DMA2_Channel3_IRQHandler + 0x08000ad4 EXTI2_IRQHandler + 0x08000ad4 COMP_ACQ_IRQHandler + 0x08000ad4 TIM10_IRQHandler + 0x08000ad4 USB_HP_IRQHandler + 0x08000ad4 TIM6_IRQHandler + 0x08000ad4 PVD_IRQHandler + 0x08000ad4 EXTI3_IRQHandler + 0x08000ad4 EXTI0_IRQHandler + 0x08000ad4 I2C2_EV_IRQHandler + 0x08000ad4 SPI1_IRQHandler + 0x08000ad4 USB_FS_WKUP_IRQHandler + 0x08000ad4 DMA2_Channel2_IRQHandler + 0x08000ad4 DMA1_Channel4_IRQHandler + 0x08000ad4 ADC1_IRQHandler + 0x08000ad4 USART3_IRQHandler + 0x08000ad4 DMA1_Channel7_IRQHandler + 0x08000ad4 LCD_IRQHandler + 0x08000ad4 UART5_IRQHandler + 0x08000ad4 TIM4_IRQHandler + 0x08000ad4 DMA2_Channel1_IRQHandler + 0x08000ad4 I2C1_EV_IRQHandler + 0x08000ad4 DMA1_Channel6_IRQHandler + 0x08000ad4 UART4_IRQHandler + 0x08000ad4 DMA2_Channel4_IRQHandler + 0x08000ad4 RCC_IRQHandler + 0x08000ad4 DMA1_Channel1_IRQHandler + 0x08000ad4 Default_Handler + 0x08000ad4 TIM7_IRQHandler + 0x08000ad4 TIM5_IRQHandler + 0x08000ad4 EXTI9_5_IRQHandler + 0x08000ad4 TIM9_IRQHandler + 0x08000ad4 TAMPER_STAMP_IRQHandler + 0x08000ad4 RTC_WKUP_IRQHandler + 0x08000ad4 SPI2_IRQHandler + 0x08000ad4 DMA2_Channel5_IRQHandler + 0x08000ad4 DMA1_Channel5_IRQHandler + 0x08000ad4 USB_LP_IRQHandler + 0x08000ad4 EXTI4_IRQHandler + 0x08000ad4 DMA1_Channel3_IRQHandler + 0x08000ad4 COMP_IRQHandler + 0x08000ad4 WWDG_IRQHandler + 0x08000ad4 DAC_IRQHandler + 0x08000ad4 EXTI1_IRQHandler + 0x08000ad4 TIM11_IRQHandler + 0x08000ad4 USART2_IRQHandler + 0x08000ad4 I2C2_ER_IRQHandler + 0x08000ad4 DMA1_Channel2_IRQHandler + 0x08000ad4 FLASH_IRQHandler + 0x08000ad4 USART1_IRQHandler + 0x08000ad4 SPI3_IRQHandler + 0x08000ad4 I2C1_ER_IRQHandler + 0x08000ad4 RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000ad6 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000ad6 MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000b00 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b00 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000b10 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b10 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000b20 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b20 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000b44 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b44 MAX7219_Clear + .text.MAX7219_Write + 0x08000b70 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b70 MAX7219_Write + .text.MAX7219_SendByte + 0x08000bac 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000bd0 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000bd0 HAL_Init + .text.HAL_InitTick + 0x08000c00 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000c00 HAL_InitTick + .text.HAL_IncTick + 0x08000c74 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000c74 HAL_IncTick + .text.HAL_GetTick + 0x08000c98 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000c98 HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x08000cac 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000cf4 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000d10 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000d48 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000d9c 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000e00 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000e44 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000e44 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000e5a 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000e5a HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000e92 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000e92 HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x08000eae 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000eae HAL_SYSTICK_Config + *fill* 0x08000ec6 0x2 + .text.HAL_GPIO_Init + 0x08000ec8 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000ec8 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x080011e8 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x080011e8 HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x08001218 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001218 HAL_GPIO_EXTI_IRQHandler + .text.HAL_GPIO_EXTI_Callback + 0x08001248 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001248 HAL_GPIO_EXTI_Callback + .text.HAL_RCC_OscConfig + 0x0800125c 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x0800125c HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x080018bc 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080018bc HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001b24 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001b24 HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001ca0 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001d60 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001d60 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001e72 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001e72 HAL_SPI_Transmit + *fill* 0x080020fa 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x080020fc 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x0800220c 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x080022b4 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080022b4 HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x08002332 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002332 HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x080023b0 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080023b0 HAL_TIM_PWM_MspInit + *fill* 0x080023c2 0x2 + .text.HAL_TIM_PWM_Start + 0x080023c4 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080023c4 HAL_TIM_PWM_Start + .text.HAL_TIM_IRQHandler + 0x080024f0 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024f0 HAL_TIM_IRQHandler + .text.HAL_TIM_PWM_ConfigChannel + 0x08002688 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002688 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x0800280c 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800280c HAL_TIM_ConfigClockSource + .text.HAL_TIM_PeriodElapsedCallback + 0x0800299a 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800299a HAL_TIM_PeriodElapsedCallback + .text.HAL_TIM_OC_DelayElapsedCallback + 0x080029ac 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080029ac HAL_TIM_OC_DelayElapsedCallback + .text.HAL_TIM_IC_CaptureCallback + 0x080029be 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080029be HAL_TIM_IC_CaptureCallback + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x080029d0 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080029d0 HAL_TIM_PWM_PulseFinishedCallback + .text.HAL_TIM_TriggerCallback + 0x080029e2 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080029e2 HAL_TIM_TriggerCallback + .text.TIM_Base_SetConfig + 0x080029f4 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x08002ae0 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x08002b58 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x08002bd4 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08002c4e 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08002cca 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08002d26 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08002d84 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08002db8 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x08002df6 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + *fill* 0x08002e3e 0x2 + .text.HAL_TIMEx_MasterConfigSynchronization + 0x08002e40 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x08002e40 HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x08002efc 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08002efc memset + .text.__libc_init_array + 0x08002f0c 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x08002f0c __libc_init_array + *(.glue_7) + .glue_7 0x08002f54 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08002f54 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08002f54 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08002f54 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002f54 _init + .init 0x08002f58 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002f60 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002f60 _fini + .fini 0x08002f64 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08002f6c . = ALIGN (0x4) + 0x08002f6c _etext = . + +.vfp11_veneer 0x08002f6c 0x0 + .vfp11_veneer 0x08002f6c 0x0 linker stubs + +.v4_bx 0x08002f6c 0x0 + .v4_bx 0x08002f6c 0x0 linker stubs + +.iplt 0x08002f6c 0x0 + .iplt 0x08002f6c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08002f6c 0x1c + 0x08002f6c . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x08002f6c 0x9 ./Core/Src/system_stm32l1xx.o + 0x08002f6c PLLMulTable + *fill* 0x08002f75 0x3 + .rodata.AHBPrescTable + 0x08002f78 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002f78 AHBPrescTable + 0x08002f88 . = ALIGN (0x4) + +.ARM.extab 0x08002f88 0x0 + 0x08002f88 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08002f88 . = ALIGN (0x4) + +.ARM 0x08002f88 0x8 + 0x08002f88 . = ALIGN (0x4) + 0x08002f88 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08002f88 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x08002f90 __exidx_end = . + 0x08002f90 . = ALIGN (0x4) + +.preinit_array 0x08002f90 0x0 + 0x08002f90 . = ALIGN (0x4) + 0x08002f90 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08002f90 PROVIDE (__preinit_array_end = .) + 0x08002f90 . = ALIGN (0x4) + +.init_array 0x08002f90 0x4 + 0x08002f90 . = ALIGN (0x4) + 0x08002f90 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08002f90 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08002f94 PROVIDE (__init_array_end = .) + 0x08002f94 . = ALIGN (0x4) + +.fini_array 0x08002f94 0x4 + 0x08002f94 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08002f94 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08002f98 . = ALIGN (0x4) + 0x08002f98 _sidata = LOADADDR (.data) + +.rel.dyn 0x08002f98 0x0 + .rel.iplt 0x08002f98 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x08002f98 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x08002fa4 + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0xf8 load address 0x08002fa4 + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.htim2 0x20000080 0x40 ./Core/Src/main.o + 0x20000080 htim2 + .bss.htim3 0x200000c0 0x40 ./Core/Src/main.o + 0x200000c0 htim3 + .bss.uwTick 0x20000100 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000100 uwTick + *(COMMON) + 0x20000104 . = ALIGN (0x4) + 0x20000104 _ebss = . + 0x20000104 __bss_end__ = _ebss + +._user_heap_stack + 0x20000104 0x604 load address 0x08002fa4 + 0x20000108 . = ALIGN (0x8) + *fill* 0x20000104 0x4 + [!provide] PROVIDE (end = .) + 0x20000108 PROVIDE (_end = .) + 0x20000308 . = (. + _Min_Heap_Size) + *fill* 0x20000108 0x200 + 0x20000708 . = (. + _Min_Stack_Size) + *fill* 0x20000308 0x400 + 0x20000708 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002fe 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000032b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000348 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP3_PWM_GENERATOR.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x97ec + .debug_info 0x00000000 0x11d9 ./Core/Src/main.o + .debug_info 0x000011d9 0xe14 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00001fed 0x6d6 ./Core/Src/stm32l1xx_it.o + .debug_info 0x000026c3 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x0000293f 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x0000296f 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x0000317d 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x0000386c 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x00004551 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00004b03 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x0000549e 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x00006977 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x00009144 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x19a3 + .debug_abbrev 0x00000000 0x2cb ./Core/Src/main.o + .debug_abbrev 0x000002cb 0x1c2 ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x0000048d 0x190 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x0000061d 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x00000739 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x0000075d 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000946 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000bbb 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000ed7 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x000010ab 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x00001363 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x000015dd 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x0000183b 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xa90 + .debug_aranges + 0x00000000 0x50 ./Core/Src/main.o + .debug_aranges + 0x00000050 0x48 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x00000098 0x78 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000110 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000138 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000160 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001d8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002b8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003e0 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000438 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004c8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x00000698 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a68 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x803 + .debug_rnglists + 0x00000000 0x3b ./Core/Src/main.o + .debug_rnglists + 0x0000003b 0x33 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x0000006e 0x55 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000c3 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000dd 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000f6 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000014b 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001ee 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002c7 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x00000306 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000373 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004e2 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x000007e9 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xaa50 + .debug_line 0x00000000 0x8b8 ./Core/Src/main.o + .debug_line 0x000008b8 0x79c ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00001054 0x7b8 ./Core/Src/stm32l1xx_it.o + .debug_line 0x0000180c 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001f6d 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001fe6 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x000027f5 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00003181 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003ddc 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x000047ac 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x000056fb 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x00007346 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a2f7 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x88675 + .debug_str 0x00000000 0x88675 ./Core/Src/main.o + 0x86772 (size before relaxing) + .debug_str 0x00088675 0x863e3 ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x00088675 0x85df1 ./Core/Src/stm32l1xx_it.o + .debug_str 0x00088675 0x85908 ./Core/Src/system_stm32l1xx.o + .debug_str 0x00088675 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x00088675 0x85e64 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x00088675 0x86030 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x00088675 0x8613c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x00088675 0x85a9b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x00088675 0x85dc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x00088675 0x8622a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x00088675 0x86c0b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x00088675 0x85db0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2ba0 + .debug_frame 0x00000000 0xf0 ./Core/Src/main.o + .debug_frame 0x000000f0 0xec ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x000001dc 0x158 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000334 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x0000038c 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000524 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000860 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000d48 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000e94 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x000010b8 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x000018e0 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002a94 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002af4 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002b14 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002b40 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002b6c 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_LED.list b/TP4_INIT_TFT/Debug/TP3_PWM_LED.list new file mode 100644 index 0000000..6c31734 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_LED.list @@ -0,0 +1,8719 @@ + +TP3_PWM_LED.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 000030ec 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000001c 08003228 08003228 00004228 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08003244 08003244 00005010 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08003244 08003244 00004244 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 0800324c 0800324c 00005010 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 0800324c 0800324c 0000424c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08003250 08003250 00004250 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 00000010 20000000 08003254 00005000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 0000013c 20000010 08003264 00005010 2**2 + ALLOC + 10 ._user_heap_stack 00000604 2000014c 08003264 0000514c 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 00005010 2**0 + CONTENTS, READONLY + 12 .debug_info 0000998e 00000000 00000000 00005039 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000019f6 00000000 00000000 0000e9c7 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000ab0 00000000 00000000 000103c0 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 0000081f 00000000 00000000 00010e70 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 0001168f 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000ab8c 00000000 00000000 00026c88 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 000886ff 00000000 00000000 00031814 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b9f13 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002c2c 00000000 00000000 000b9f58 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000bcb84 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 20000010 .word 0x20000010 + 8000158: 00000000 .word 0x00000000 + 800015c: 08003210 .word 0x08003210 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000014 .word 0x20000014 + 8000178: 08003210 .word 0x08003210 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80004b0: b580 push {r7, lr} + 80004b2: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80004b4: f000 fca0 bl 8000df8 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80004b8: f000 f822 bl 8000500 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 80004bc: f000 f9be bl 800083c + MX_SPI1_Init(); + 80004c0: f000 f864 bl 800058c + MX_TIM4_Init(); + 80004c4: f000 f8e6 bl 8000694 + MX_TIM11_Init(); + 80004c8: f000 f958 bl 800077c + MX_TIM2_Init(); + 80004cc: f000 f894 bl 80005f8 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 80004d0: f000 fc15 bl 8000cfe + HAL_TIM_Base_Start_IT(&htim2); + 80004d4: 4807 ldr r0, [pc, #28] @ (80004f4 ) + 80004d6: f002 f841 bl 800255c + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); + 80004da: 2104 movs r1, #4 + 80004dc: 4806 ldr r0, [pc, #24] @ (80004f8 ) + 80004de: f002 f8d7 bl 8002690 + HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); + 80004e2: 2100 movs r1, #0 + 80004e4: 4805 ldr r0, [pc, #20] @ (80004fc ) + 80004e6: f002 f8d3 bl 8002690 + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 80004ea: f000 fc3f bl 8000d6c + while (1) + 80004ee: bf00 nop + 80004f0: e7fd b.n 80004ee + 80004f2: bf00 nop + 80004f4: 20000084 .word 0x20000084 + 80004f8: 200000c4 .word 0x200000c4 + 80004fc: 20000104 .word 0x20000104 + +08000500 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000500: b580 push {r7, lr} + 8000502: b092 sub sp, #72 @ 0x48 + 8000504: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000506: f107 0314 add.w r3, r7, #20 + 800050a: 2234 movs r2, #52 @ 0x34 + 800050c: 2100 movs r1, #0 + 800050e: 4618 mov r0, r3 + 8000510: f002 fe52 bl 80031b8 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000514: 463b mov r3, r7 + 8000516: 2200 movs r2, #0 + 8000518: 601a str r2, [r3, #0] + 800051a: 605a str r2, [r3, #4] + 800051c: 609a str r2, [r3, #8] + 800051e: 60da str r2, [r3, #12] + 8000520: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000522: 4b19 ldr r3, [pc, #100] @ (8000588 ) + 8000524: 681b ldr r3, [r3, #0] + 8000526: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 800052a: 4a17 ldr r2, [pc, #92] @ (8000588 ) + 800052c: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000530: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000532: 2302 movs r3, #2 + 8000534: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000536: 2301 movs r3, #1 + 8000538: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 800053a: 2310 movs r3, #16 + 800053c: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 800053e: 2300 movs r3, #0 + 8000540: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000542: f107 0314 add.w r3, r7, #20 + 8000546: 4618 mov r0, r3 + 8000548: f000 ff9c bl 8001484 + 800054c: 4603 mov r3, r0 + 800054e: 2b00 cmp r3, #0 + 8000550: d001 beq.n 8000556 + { + Error_Handler(); + 8000552: f000 fa23 bl 800099c + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000556: 230f movs r3, #15 + 8000558: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 800055a: 2301 movs r3, #1 + 800055c: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800055e: 2300 movs r3, #0 + 8000560: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 8000562: 2300 movs r3, #0 + 8000564: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8000566: 2300 movs r3, #0 + 8000568: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 800056a: 463b mov r3, r7 + 800056c: 2100 movs r1, #0 + 800056e: 4618 mov r0, r3 + 8000570: f001 fab8 bl 8001ae4 + 8000574: 4603 mov r3, r0 + 8000576: 2b00 cmp r3, #0 + 8000578: d001 beq.n 800057e + { + Error_Handler(); + 800057a: f000 fa0f bl 800099c + } +} + 800057e: bf00 nop + 8000580: 3748 adds r7, #72 @ 0x48 + 8000582: 46bd mov sp, r7 + 8000584: bd80 pop {r7, pc} + 8000586: bf00 nop + 8000588: 40007000 .word 0x40007000 + +0800058c : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 800058c: b580 push {r7, lr} + 800058e: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 8000590: 4b17 ldr r3, [pc, #92] @ (80005f0 ) + 8000592: 4a18 ldr r2, [pc, #96] @ (80005f4 ) + 8000594: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 8000596: 4b16 ldr r3, [pc, #88] @ (80005f0 ) + 8000598: f44f 7282 mov.w r2, #260 @ 0x104 + 800059c: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 800059e: 4b14 ldr r3, [pc, #80] @ (80005f0 ) + 80005a0: 2200 movs r2, #0 + 80005a2: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80005a4: 4b12 ldr r3, [pc, #72] @ (80005f0 ) + 80005a6: 2200 movs r2, #0 + 80005a8: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 80005aa: 4b11 ldr r3, [pc, #68] @ (80005f0 ) + 80005ac: 2200 movs r2, #0 + 80005ae: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 80005b0: 4b0f ldr r3, [pc, #60] @ (80005f0 ) + 80005b2: 2200 movs r2, #0 + 80005b4: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 80005b6: 4b0e ldr r3, [pc, #56] @ (80005f0 ) + 80005b8: f44f 7200 mov.w r2, #512 @ 0x200 + 80005bc: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 80005be: 4b0c ldr r3, [pc, #48] @ (80005f0 ) + 80005c0: 2200 movs r2, #0 + 80005c2: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 80005c4: 4b0a ldr r3, [pc, #40] @ (80005f0 ) + 80005c6: 2200 movs r2, #0 + 80005c8: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 80005ca: 4b09 ldr r3, [pc, #36] @ (80005f0 ) + 80005cc: 2200 movs r2, #0 + 80005ce: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 80005d0: 4b07 ldr r3, [pc, #28] @ (80005f0 ) + 80005d2: 2200 movs r2, #0 + 80005d4: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 80005d6: 4b06 ldr r3, [pc, #24] @ (80005f0 ) + 80005d8: 220a movs r2, #10 + 80005da: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 80005dc: 4804 ldr r0, [pc, #16] @ (80005f0 ) + 80005de: f001 fcd3 bl 8001f88 + 80005e2: 4603 mov r3, r0 + 80005e4: 2b00 cmp r3, #0 + 80005e6: d001 beq.n 80005ec + { + Error_Handler(); + 80005e8: f000 f9d8 bl 800099c + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 80005ec: bf00 nop + 80005ee: bd80 pop {r7, pc} + 80005f0: 2000002c .word 0x2000002c + 80005f4: 40013000 .word 0x40013000 + +080005f8 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 80005f8: b580 push {r7, lr} + 80005fa: b086 sub sp, #24 + 80005fc: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80005fe: f107 0308 add.w r3, r7, #8 + 8000602: 2200 movs r2, #0 + 8000604: 601a str r2, [r3, #0] + 8000606: 605a str r2, [r3, #4] + 8000608: 609a str r2, [r3, #8] + 800060a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800060c: 463b mov r3, r7 + 800060e: 2200 movs r2, #0 + 8000610: 601a str r2, [r3, #0] + 8000612: 605a str r2, [r3, #4] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 8000614: 4b1e ldr r3, [pc, #120] @ (8000690 ) + 8000616: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 800061a: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 1000-1; + 800061c: 4b1c ldr r3, [pc, #112] @ (8000690 ) + 800061e: f240 32e7 movw r2, #999 @ 0x3e7 + 8000622: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000624: 4b1a ldr r3, [pc, #104] @ (8000690 ) + 8000626: 2200 movs r2, #0 + 8000628: 609a str r2, [r3, #8] + htim2.Init.Period = 16000-1; + 800062a: 4b19 ldr r3, [pc, #100] @ (8000690 ) + 800062c: f643 627f movw r2, #15999 @ 0x3e7f + 8000630: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000632: 4b17 ldr r3, [pc, #92] @ (8000690 ) + 8000634: 2200 movs r2, #0 + 8000636: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 8000638: 4b15 ldr r3, [pc, #84] @ (8000690 ) + 800063a: 2280 movs r2, #128 @ 0x80 + 800063c: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 800063e: 4814 ldr r0, [pc, #80] @ (8000690 ) + 8000640: f001 ff4c bl 80024dc + 8000644: 4603 mov r3, r0 + 8000646: 2b00 cmp r3, #0 + 8000648: d001 beq.n 800064e + { + Error_Handler(); + 800064a: f000 f9a7 bl 800099c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 800064e: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000652: 60bb str r3, [r7, #8] + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 8000654: f107 0308 add.w r3, r7, #8 + 8000658: 4619 mov r1, r3 + 800065a: 480d ldr r0, [pc, #52] @ (8000690 ) + 800065c: f002 fa3c bl 8002ad8 + 8000660: 4603 mov r3, r0 + 8000662: 2b00 cmp r3, #0 + 8000664: d001 beq.n 800066a + { + Error_Handler(); + 8000666: f000 f999 bl 800099c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 800066a: 2300 movs r3, #0 + 800066c: 603b str r3, [r7, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 800066e: 2300 movs r3, #0 + 8000670: 607b str r3, [r7, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 8000672: 463b mov r3, r7 + 8000674: 4619 mov r1, r3 + 8000676: 4806 ldr r0, [pc, #24] @ (8000690 ) + 8000678: f002 fd40 bl 80030fc + 800067c: 4603 mov r3, r0 + 800067e: 2b00 cmp r3, #0 + 8000680: d001 beq.n 8000686 + { + Error_Handler(); + 8000682: f000 f98b bl 800099c + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + 8000686: bf00 nop + 8000688: 3718 adds r7, #24 + 800068a: 46bd mov sp, r7 + 800068c: bd80 pop {r7, pc} + 800068e: bf00 nop + 8000690: 20000084 .word 0x20000084 + +08000694 : + * @brief TIM4 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM4_Init(void) +{ + 8000694: b580 push {r7, lr} + 8000696: b08a sub sp, #40 @ 0x28 + 8000698: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM4_Init 0 */ + + /* USER CODE END TIM4_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800069a: f107 0318 add.w r3, r7, #24 + 800069e: 2200 movs r2, #0 + 80006a0: 601a str r2, [r3, #0] + 80006a2: 605a str r2, [r3, #4] + 80006a4: 609a str r2, [r3, #8] + 80006a6: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80006a8: f107 0310 add.w r3, r7, #16 + 80006ac: 2200 movs r2, #0 + 80006ae: 601a str r2, [r3, #0] + 80006b0: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 80006b2: 463b mov r3, r7 + 80006b4: 2200 movs r2, #0 + 80006b6: 601a str r2, [r3, #0] + 80006b8: 605a str r2, [r3, #4] + 80006ba: 609a str r2, [r3, #8] + 80006bc: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM4_Init 1 */ + + /* USER CODE END TIM4_Init 1 */ + htim4.Instance = TIM4; + 80006be: 4b2d ldr r3, [pc, #180] @ (8000774 ) + 80006c0: 4a2d ldr r2, [pc, #180] @ (8000778 ) + 80006c2: 601a str r2, [r3, #0] + htim4.Init.Prescaler = 20-1; + 80006c4: 4b2b ldr r3, [pc, #172] @ (8000774 ) + 80006c6: 2213 movs r2, #19 + 80006c8: 605a str r2, [r3, #4] + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + 80006ca: 4b2a ldr r3, [pc, #168] @ (8000774 ) + 80006cc: 2200 movs r2, #0 + 80006ce: 609a str r2, [r3, #8] + htim4.Init.Period = 16000-1; + 80006d0: 4b28 ldr r3, [pc, #160] @ (8000774 ) + 80006d2: f643 627f movw r2, #15999 @ 0x3e7f + 80006d6: 60da str r2, [r3, #12] + htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80006d8: 4b26 ldr r3, [pc, #152] @ (8000774 ) + 80006da: 2200 movs r2, #0 + 80006dc: 611a str r2, [r3, #16] + htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 80006de: 4b25 ldr r3, [pc, #148] @ (8000774 ) + 80006e0: 2280 movs r2, #128 @ 0x80 + 80006e2: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim4) != HAL_OK) + 80006e4: 4823 ldr r0, [pc, #140] @ (8000774 ) + 80006e6: f001 fef9 bl 80024dc + 80006ea: 4603 mov r3, r0 + 80006ec: 2b00 cmp r3, #0 + 80006ee: d001 beq.n 80006f4 + { + Error_Handler(); + 80006f0: f000 f954 bl 800099c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80006f4: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80006f8: 61bb str r3, [r7, #24] + if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) + 80006fa: f107 0318 add.w r3, r7, #24 + 80006fe: 4619 mov r1, r3 + 8000700: 481c ldr r0, [pc, #112] @ (8000774 ) + 8000702: f002 f9e9 bl 8002ad8 + 8000706: 4603 mov r3, r0 + 8000708: 2b00 cmp r3, #0 + 800070a: d001 beq.n 8000710 + { + Error_Handler(); + 800070c: f000 f946 bl 800099c + } + if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) + 8000710: 4818 ldr r0, [pc, #96] @ (8000774 ) + 8000712: f001 ff75 bl 8002600 + 8000716: 4603 mov r3, r0 + 8000718: 2b00 cmp r3, #0 + 800071a: d001 beq.n 8000720 + { + Error_Handler(); + 800071c: f000 f93e bl 800099c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000720: 2300 movs r3, #0 + 8000722: 613b str r3, [r7, #16] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000724: 2300 movs r3, #0 + 8000726: 617b str r3, [r7, #20] + if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) + 8000728: f107 0310 add.w r3, r7, #16 + 800072c: 4619 mov r1, r3 + 800072e: 4811 ldr r0, [pc, #68] @ (8000774 ) + 8000730: f002 fce4 bl 80030fc + 8000734: 4603 mov r3, r0 + 8000736: 2b00 cmp r3, #0 + 8000738: d001 beq.n 800073e + { + Error_Handler(); + 800073a: f000 f92f bl 800099c + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 800073e: 2360 movs r3, #96 @ 0x60 + 8000740: 603b str r3, [r7, #0] + sConfigOC.Pulse = 800-1; + 8000742: f240 331f movw r3, #799 @ 0x31f + 8000746: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000748: 2300 movs r3, #0 + 800074a: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 800074c: 2300 movs r3, #0 + 800074e: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 8000750: 463b mov r3, r7 + 8000752: 2204 movs r2, #4 + 8000754: 4619 mov r1, r3 + 8000756: 4807 ldr r0, [pc, #28] @ (8000774 ) + 8000758: f002 f8fc bl 8002954 + 800075c: 4603 mov r3, r0 + 800075e: 2b00 cmp r3, #0 + 8000760: d001 beq.n 8000766 + { + Error_Handler(); + 8000762: f000 f91b bl 800099c + } + /* USER CODE BEGIN TIM4_Init 2 */ + + /* USER CODE END TIM4_Init 2 */ + HAL_TIM_MspPostInit(&htim4); + 8000766: 4803 ldr r0, [pc, #12] @ (8000774 ) + 8000768: f000 f9ec bl 8000b44 + +} + 800076c: bf00 nop + 800076e: 3728 adds r7, #40 @ 0x28 + 8000770: 46bd mov sp, r7 + 8000772: bd80 pop {r7, pc} + 8000774: 200000c4 .word 0x200000c4 + 8000778: 40000800 .word 0x40000800 + +0800077c : + * @brief TIM11 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM11_Init(void) +{ + 800077c: b580 push {r7, lr} + 800077e: b088 sub sp, #32 + 8000780: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM11_Init 0 */ + + /* USER CODE END TIM11_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 8000782: f107 0310 add.w r3, r7, #16 + 8000786: 2200 movs r2, #0 + 8000788: 601a str r2, [r3, #0] + 800078a: 605a str r2, [r3, #4] + 800078c: 609a str r2, [r3, #8] + 800078e: 60da str r2, [r3, #12] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000790: 463b mov r3, r7 + 8000792: 2200 movs r2, #0 + 8000794: 601a str r2, [r3, #0] + 8000796: 605a str r2, [r3, #4] + 8000798: 609a str r2, [r3, #8] + 800079a: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM11_Init 1 */ + + /* USER CODE END TIM11_Init 1 */ + htim11.Instance = TIM11; + 800079c: 4b25 ldr r3, [pc, #148] @ (8000834 ) + 800079e: 4a26 ldr r2, [pc, #152] @ (8000838 ) + 80007a0: 601a str r2, [r3, #0] + htim11.Init.Prescaler = 20-1; + 80007a2: 4b24 ldr r3, [pc, #144] @ (8000834 ) + 80007a4: 2213 movs r2, #19 + 80007a6: 605a str r2, [r3, #4] + htim11.Init.CounterMode = TIM_COUNTERMODE_UP; + 80007a8: 4b22 ldr r3, [pc, #136] @ (8000834 ) + 80007aa: 2200 movs r2, #0 + 80007ac: 609a str r2, [r3, #8] + htim11.Init.Period = 16000-1; + 80007ae: 4b21 ldr r3, [pc, #132] @ (8000834 ) + 80007b0: f643 627f movw r2, #15999 @ 0x3e7f + 80007b4: 60da str r2, [r3, #12] + htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80007b6: 4b1f ldr r3, [pc, #124] @ (8000834 ) + 80007b8: 2200 movs r2, #0 + 80007ba: 611a str r2, [r3, #16] + htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 80007bc: 4b1d ldr r3, [pc, #116] @ (8000834 ) + 80007be: 2280 movs r2, #128 @ 0x80 + 80007c0: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim11) != HAL_OK) + 80007c2: 481c ldr r0, [pc, #112] @ (8000834 ) + 80007c4: f001 fe8a bl 80024dc + 80007c8: 4603 mov r3, r0 + 80007ca: 2b00 cmp r3, #0 + 80007cc: d001 beq.n 80007d2 + { + Error_Handler(); + 80007ce: f000 f8e5 bl 800099c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80007d2: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80007d6: 613b str r3, [r7, #16] + if (HAL_TIM_ConfigClockSource(&htim11, &sClockSourceConfig) != HAL_OK) + 80007d8: f107 0310 add.w r3, r7, #16 + 80007dc: 4619 mov r1, r3 + 80007de: 4815 ldr r0, [pc, #84] @ (8000834 ) + 80007e0: f002 f97a bl 8002ad8 + 80007e4: 4603 mov r3, r0 + 80007e6: 2b00 cmp r3, #0 + 80007e8: d001 beq.n 80007ee + { + Error_Handler(); + 80007ea: f000 f8d7 bl 800099c + } + if (HAL_TIM_PWM_Init(&htim11) != HAL_OK) + 80007ee: 4811 ldr r0, [pc, #68] @ (8000834 ) + 80007f0: f001 ff06 bl 8002600 + 80007f4: 4603 mov r3, r0 + 80007f6: 2b00 cmp r3, #0 + 80007f8: d001 beq.n 80007fe + { + Error_Handler(); + 80007fa: f000 f8cf bl 800099c + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80007fe: 2360 movs r3, #96 @ 0x60 + 8000800: 603b str r3, [r7, #0] + sConfigOC.Pulse = 800-1; + 8000802: f240 331f movw r3, #799 @ 0x31f + 8000806: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000808: 2300 movs r3, #0 + 800080a: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 800080c: 2300 movs r3, #0 + 800080e: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim11, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000810: 463b mov r3, r7 + 8000812: 2200 movs r2, #0 + 8000814: 4619 mov r1, r3 + 8000816: 4807 ldr r0, [pc, #28] @ (8000834 ) + 8000818: f002 f89c bl 8002954 + 800081c: 4603 mov r3, r0 + 800081e: 2b00 cmp r3, #0 + 8000820: d001 beq.n 8000826 + { + Error_Handler(); + 8000822: f000 f8bb bl 800099c + } + /* USER CODE BEGIN TIM11_Init 2 */ + + /* USER CODE END TIM11_Init 2 */ + HAL_TIM_MspPostInit(&htim11); + 8000826: 4803 ldr r0, [pc, #12] @ (8000834 ) + 8000828: f000 f98c bl 8000b44 + +} + 800082c: bf00 nop + 800082e: 3720 adds r7, #32 + 8000830: 46bd mov sp, r7 + 8000832: bd80 pop {r7, pc} + 8000834: 20000104 .word 0x20000104 + 8000838: 40011000 .word 0x40011000 + +0800083c : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 800083c: b580 push {r7, lr} + 800083e: b088 sub sp, #32 + 8000840: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000842: f107 030c add.w r3, r7, #12 + 8000846: 2200 movs r2, #0 + 8000848: 601a str r2, [r3, #0] + 800084a: 605a str r2, [r3, #4] + 800084c: 609a str r2, [r3, #8] + 800084e: 60da str r2, [r3, #12] + 8000850: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000852: 4b28 ldr r3, [pc, #160] @ (80008f4 ) + 8000854: 69db ldr r3, [r3, #28] + 8000856: 4a27 ldr r2, [pc, #156] @ (80008f4 ) + 8000858: f043 0304 orr.w r3, r3, #4 + 800085c: 61d3 str r3, [r2, #28] + 800085e: 4b25 ldr r3, [pc, #148] @ (80008f4 ) + 8000860: 69db ldr r3, [r3, #28] + 8000862: f003 0304 and.w r3, r3, #4 + 8000866: 60bb str r3, [r7, #8] + 8000868: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800086a: 4b22 ldr r3, [pc, #136] @ (80008f4 ) + 800086c: 69db ldr r3, [r3, #28] + 800086e: 4a21 ldr r2, [pc, #132] @ (80008f4 ) + 8000870: f043 0301 orr.w r3, r3, #1 + 8000874: 61d3 str r3, [r2, #28] + 8000876: 4b1f ldr r3, [pc, #124] @ (80008f4 ) + 8000878: 69db ldr r3, [r3, #28] + 800087a: f003 0301 and.w r3, r3, #1 + 800087e: 607b str r3, [r7, #4] + 8000880: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000882: 4b1c ldr r3, [pc, #112] @ (80008f4 ) + 8000884: 69db ldr r3, [r3, #28] + 8000886: 4a1b ldr r2, [pc, #108] @ (80008f4 ) + 8000888: f043 0302 orr.w r3, r3, #2 + 800088c: 61d3 str r3, [r2, #28] + 800088e: 4b19 ldr r3, [pc, #100] @ (80008f4 ) + 8000890: 69db ldr r3, [r3, #28] + 8000892: f003 0302 and.w r3, r3, #2 + 8000896: 603b str r3, [r7, #0] + 8000898: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 800089a: 2200 movs r2, #0 + 800089c: 2101 movs r1, #1 + 800089e: 4816 ldr r0, [pc, #88] @ (80008f8 ) + 80008a0: f000 fdb6 bl 8001410 + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 80008a4: 2301 movs r3, #1 + 80008a6: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80008a8: 2301 movs r3, #1 + 80008aa: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008ac: 2300 movs r3, #0 + 80008ae: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008b0: 2300 movs r3, #0 + 80008b2: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80008b4: f107 030c add.w r3, r7, #12 + 80008b8: 4619 mov r1, r3 + 80008ba: 480f ldr r0, [pc, #60] @ (80008f8 ) + 80008bc: f000 fc18 bl 80010f0 + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 80008c0: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 80008c4: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 80008c6: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 80008ca: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008cc: 2300 movs r3, #0 + 80008ce: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80008d0: f107 030c add.w r3, r7, #12 + 80008d4: 4619 mov r1, r3 + 80008d6: 4809 ldr r0, [pc, #36] @ (80008fc ) + 80008d8: f000 fc0a bl 80010f0 + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 80008dc: 2200 movs r2, #0 + 80008de: 2100 movs r1, #0 + 80008e0: 2028 movs r0, #40 @ 0x28 + 80008e2: f000 fbce bl 8001082 + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 80008e6: 2028 movs r0, #40 @ 0x28 + 80008e8: f000 fbe7 bl 80010ba + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80008ec: bf00 nop + 80008ee: 3720 adds r7, #32 + 80008f0: 46bd mov sp, r7 + 80008f2: bd80 pop {r7, pc} + 80008f4: 40023800 .word 0x40023800 + 80008f8: 40020800 .word 0x40020800 + 80008fc: 40020000 .word 0x40020000 + +08000900 : + +/* USER CODE BEGIN 4 */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { + 8000900: b480 push {r7} + 8000902: b083 sub sp, #12 + 8000904: af00 add r7, sp, #0 + 8000906: 6078 str r0, [r7, #4] + if (htim->Instance == TIM2) { + 8000908: 687b ldr r3, [r7, #4] + 800090a: 681b ldr r3, [r3, #0] + 800090c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000910: d137 bne.n 8000982 + if (sens) { + 8000912: 4b1e ldr r3, [pc, #120] @ (800098c ) + 8000914: 781b ldrb r3, [r3, #0] + 8000916: b2db uxtb r3, r3 + 8000918: 2b00 cmp r3, #0 + 800091a: d00f beq.n 800093c + angle ++; + 800091c: 4b1c ldr r3, [pc, #112] @ (8000990 ) + 800091e: 781b ldrb r3, [r3, #0] + 8000920: b2db uxtb r3, r3 + 8000922: 3301 adds r3, #1 + 8000924: b2da uxtb r2, r3 + 8000926: 4b1a ldr r3, [pc, #104] @ (8000990 ) + 8000928: 701a strb r2, [r3, #0] + if (angle >= 20) { + 800092a: 4b19 ldr r3, [pc, #100] @ (8000990 ) + 800092c: 781b ldrb r3, [r3, #0] + 800092e: b2db uxtb r3, r3 + 8000930: 2b13 cmp r3, #19 + 8000932: d912 bls.n 800095a + sens = 0; + 8000934: 4b15 ldr r3, [pc, #84] @ (800098c ) + 8000936: 2200 movs r2, #0 + 8000938: 701a strb r2, [r3, #0] + 800093a: e00e b.n 800095a + } + } else { + angle --; + 800093c: 4b14 ldr r3, [pc, #80] @ (8000990 ) + 800093e: 781b ldrb r3, [r3, #0] + 8000940: b2db uxtb r3, r3 + 8000942: 3b01 subs r3, #1 + 8000944: b2da uxtb r2, r3 + 8000946: 4b12 ldr r3, [pc, #72] @ (8000990 ) + 8000948: 701a strb r2, [r3, #0] + if (angle <= 0) { + 800094a: 4b11 ldr r3, [pc, #68] @ (8000990 ) + 800094c: 781b ldrb r3, [r3, #0] + 800094e: b2db uxtb r3, r3 + 8000950: 2b00 cmp r3, #0 + 8000952: d102 bne.n 800095a + sens = 1; + 8000954: 4b0d ldr r3, [pc, #52] @ (800098c ) + 8000956: 2201 movs r2, #1 + 8000958: 701a strb r2, [r3, #0] + } + } + + TIM11 -> CCR1 = angle * 800; + 800095a: 4b0d ldr r3, [pc, #52] @ (8000990 ) + 800095c: 781b ldrb r3, [r3, #0] + 800095e: b2db uxtb r3, r3 + 8000960: 461a mov r2, r3 + 8000962: f44f 7348 mov.w r3, #800 @ 0x320 + 8000966: fb03 f202 mul.w r2, r3, r2 + 800096a: 4b0a ldr r3, [pc, #40] @ (8000994 ) + 800096c: 635a str r2, [r3, #52] @ 0x34 + TIM4 -> CCR2 = angle * 800; + 800096e: 4b08 ldr r3, [pc, #32] @ (8000990 ) + 8000970: 781b ldrb r3, [r3, #0] + 8000972: b2db uxtb r3, r3 + 8000974: 461a mov r2, r3 + 8000976: f44f 7348 mov.w r3, #800 @ 0x320 + 800097a: fb03 f202 mul.w r2, r3, r2 + 800097e: 4b06 ldr r3, [pc, #24] @ (8000998 ) + 8000980: 639a str r2, [r3, #56] @ 0x38 + } +} + 8000982: bf00 nop + 8000984: 370c adds r7, #12 + 8000986: 46bd mov sp, r7 + 8000988: bc80 pop {r7} + 800098a: 4770 bx lr + 800098c: 20000000 .word 0x20000000 + 8000990: 20000144 .word 0x20000144 + 8000994: 40011000 .word 0x40011000 + 8000998: 40000800 .word 0x40000800 + +0800099c : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 800099c: b480 push {r7} + 800099e: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 80009a0: b672 cpsid i +} + 80009a2: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 80009a4: bf00 nop + 80009a6: e7fd b.n 80009a4 + +080009a8 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 80009a8: b480 push {r7} + 80009aa: b085 sub sp, #20 + 80009ac: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 80009ae: 4b14 ldr r3, [pc, #80] @ (8000a00 ) + 80009b0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80009b2: 4a13 ldr r2, [pc, #76] @ (8000a00 ) + 80009b4: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80009b8: 6253 str r3, [r2, #36] @ 0x24 + 80009ba: 4b11 ldr r3, [pc, #68] @ (8000a00 ) + 80009bc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80009be: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80009c2: 60fb str r3, [r7, #12] + 80009c4: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 80009c6: 4b0e ldr r3, [pc, #56] @ (8000a00 ) + 80009c8: 6a1b ldr r3, [r3, #32] + 80009ca: 4a0d ldr r2, [pc, #52] @ (8000a00 ) + 80009cc: f043 0301 orr.w r3, r3, #1 + 80009d0: 6213 str r3, [r2, #32] + 80009d2: 4b0b ldr r3, [pc, #44] @ (8000a00 ) + 80009d4: 6a1b ldr r3, [r3, #32] + 80009d6: f003 0301 and.w r3, r3, #1 + 80009da: 60bb str r3, [r7, #8] + 80009dc: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 80009de: 4b08 ldr r3, [pc, #32] @ (8000a00 ) + 80009e0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80009e2: 4a07 ldr r2, [pc, #28] @ (8000a00 ) + 80009e4: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80009e8: 6253 str r3, [r2, #36] @ 0x24 + 80009ea: 4b05 ldr r3, [pc, #20] @ (8000a00 ) + 80009ec: 6a5b ldr r3, [r3, #36] @ 0x24 + 80009ee: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80009f2: 607b str r3, [r7, #4] + 80009f4: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 80009f6: bf00 nop + 80009f8: 3714 adds r7, #20 + 80009fa: 46bd mov sp, r7 + 80009fc: bc80 pop {r7} + 80009fe: 4770 bx lr + 8000a00: 40023800 .word 0x40023800 + +08000a04 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000a04: b580 push {r7, lr} + 8000a06: b08a sub sp, #40 @ 0x28 + 8000a08: af00 add r7, sp, #0 + 8000a0a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000a0c: f107 0314 add.w r3, r7, #20 + 8000a10: 2200 movs r2, #0 + 8000a12: 601a str r2, [r3, #0] + 8000a14: 605a str r2, [r3, #4] + 8000a16: 609a str r2, [r3, #8] + 8000a18: 60da str r2, [r3, #12] + 8000a1a: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 8000a1c: 687b ldr r3, [r7, #4] + 8000a1e: 681b ldr r3, [r3, #0] + 8000a20: 4a17 ldr r2, [pc, #92] @ (8000a80 ) + 8000a22: 4293 cmp r3, r2 + 8000a24: d127 bne.n 8000a76 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 8000a26: 4b17 ldr r3, [pc, #92] @ (8000a84 ) + 8000a28: 6a1b ldr r3, [r3, #32] + 8000a2a: 4a16 ldr r2, [pc, #88] @ (8000a84 ) + 8000a2c: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 8000a30: 6213 str r3, [r2, #32] + 8000a32: 4b14 ldr r3, [pc, #80] @ (8000a84 ) + 8000a34: 6a1b ldr r3, [r3, #32] + 8000a36: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8000a3a: 613b str r3, [r7, #16] + 8000a3c: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000a3e: 4b11 ldr r3, [pc, #68] @ (8000a84 ) + 8000a40: 69db ldr r3, [r3, #28] + 8000a42: 4a10 ldr r2, [pc, #64] @ (8000a84 ) + 8000a44: f043 0301 orr.w r3, r3, #1 + 8000a48: 61d3 str r3, [r2, #28] + 8000a4a: 4b0e ldr r3, [pc, #56] @ (8000a84 ) + 8000a4c: 69db ldr r3, [r3, #28] + 8000a4e: f003 0301 and.w r3, r3, #1 + 8000a52: 60fb str r3, [r7, #12] + 8000a54: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 8000a56: 23e0 movs r3, #224 @ 0xe0 + 8000a58: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000a5a: 2302 movs r3, #2 + 8000a5c: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000a5e: 2300 movs r3, #0 + 8000a60: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8000a62: 2303 movs r3, #3 + 8000a64: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 8000a66: 2305 movs r3, #5 + 8000a68: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000a6a: f107 0314 add.w r3, r7, #20 + 8000a6e: 4619 mov r1, r3 + 8000a70: 4805 ldr r0, [pc, #20] @ (8000a88 ) + 8000a72: f000 fb3d bl 80010f0 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 8000a76: bf00 nop + 8000a78: 3728 adds r7, #40 @ 0x28 + 8000a7a: 46bd mov sp, r7 + 8000a7c: bd80 pop {r7, pc} + 8000a7e: bf00 nop + 8000a80: 40013000 .word 0x40013000 + 8000a84: 40023800 .word 0x40023800 + 8000a88: 40020000 .word 0x40020000 + +08000a8c : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 8000a8c: b580 push {r7, lr} + 8000a8e: b086 sub sp, #24 + 8000a90: af00 add r7, sp, #0 + 8000a92: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 8000a94: 687b ldr r3, [r7, #4] + 8000a96: 681b ldr r3, [r3, #0] + 8000a98: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000a9c: d114 bne.n 8000ac8 + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 8000a9e: 4b26 ldr r3, [pc, #152] @ (8000b38 ) + 8000aa0: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000aa2: 4a25 ldr r2, [pc, #148] @ (8000b38 ) + 8000aa4: f043 0301 orr.w r3, r3, #1 + 8000aa8: 6253 str r3, [r2, #36] @ 0x24 + 8000aaa: 4b23 ldr r3, [pc, #140] @ (8000b38 ) + 8000aac: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000aae: f003 0301 and.w r3, r3, #1 + 8000ab2: 617b str r3, [r7, #20] + 8000ab4: 697b ldr r3, [r7, #20] + /* TIM2 interrupt Init */ + HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + 8000ab6: 2200 movs r2, #0 + 8000ab8: 2100 movs r1, #0 + 8000aba: 201c movs r0, #28 + 8000abc: f000 fae1 bl 8001082 + HAL_NVIC_EnableIRQ(TIM2_IRQn); + 8000ac0: 201c movs r0, #28 + 8000ac2: f000 fafa bl 80010ba + /* USER CODE BEGIN TIM11_MspInit 1 */ + + /* USER CODE END TIM11_MspInit 1 */ + } + +} + 8000ac6: e032 b.n 8000b2e + else if(htim_base->Instance==TIM4) + 8000ac8: 687b ldr r3, [r7, #4] + 8000aca: 681b ldr r3, [r3, #0] + 8000acc: 4a1b ldr r2, [pc, #108] @ (8000b3c ) + 8000ace: 4293 cmp r3, r2 + 8000ad0: d114 bne.n 8000afc + __HAL_RCC_TIM4_CLK_ENABLE(); + 8000ad2: 4b19 ldr r3, [pc, #100] @ (8000b38 ) + 8000ad4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000ad6: 4a18 ldr r2, [pc, #96] @ (8000b38 ) + 8000ad8: f043 0304 orr.w r3, r3, #4 + 8000adc: 6253 str r3, [r2, #36] @ 0x24 + 8000ade: 4b16 ldr r3, [pc, #88] @ (8000b38 ) + 8000ae0: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000ae2: f003 0304 and.w r3, r3, #4 + 8000ae6: 613b str r3, [r7, #16] + 8000ae8: 693b ldr r3, [r7, #16] + HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0); + 8000aea: 2200 movs r2, #0 + 8000aec: 2100 movs r1, #0 + 8000aee: 201e movs r0, #30 + 8000af0: f000 fac7 bl 8001082 + HAL_NVIC_EnableIRQ(TIM4_IRQn); + 8000af4: 201e movs r0, #30 + 8000af6: f000 fae0 bl 80010ba +} + 8000afa: e018 b.n 8000b2e + else if(htim_base->Instance==TIM11) + 8000afc: 687b ldr r3, [r7, #4] + 8000afe: 681b ldr r3, [r3, #0] + 8000b00: 4a0f ldr r2, [pc, #60] @ (8000b40 ) + 8000b02: 4293 cmp r3, r2 + 8000b04: d113 bne.n 8000b2e + __HAL_RCC_TIM11_CLK_ENABLE(); + 8000b06: 4b0c ldr r3, [pc, #48] @ (8000b38 ) + 8000b08: 6a1b ldr r3, [r3, #32] + 8000b0a: 4a0b ldr r2, [pc, #44] @ (8000b38 ) + 8000b0c: f043 0310 orr.w r3, r3, #16 + 8000b10: 6213 str r3, [r2, #32] + 8000b12: 4b09 ldr r3, [pc, #36] @ (8000b38 ) + 8000b14: 6a1b ldr r3, [r3, #32] + 8000b16: f003 0310 and.w r3, r3, #16 + 8000b1a: 60fb str r3, [r7, #12] + 8000b1c: 68fb ldr r3, [r7, #12] + HAL_NVIC_SetPriority(TIM11_IRQn, 0, 0); + 8000b1e: 2200 movs r2, #0 + 8000b20: 2100 movs r1, #0 + 8000b22: 201b movs r0, #27 + 8000b24: f000 faad bl 8001082 + HAL_NVIC_EnableIRQ(TIM11_IRQn); + 8000b28: 201b movs r0, #27 + 8000b2a: f000 fac6 bl 80010ba +} + 8000b2e: bf00 nop + 8000b30: 3718 adds r7, #24 + 8000b32: 46bd mov sp, r7 + 8000b34: bd80 pop {r7, pc} + 8000b36: bf00 nop + 8000b38: 40023800 .word 0x40023800 + 8000b3c: 40000800 .word 0x40000800 + 8000b40: 40011000 .word 0x40011000 + +08000b44 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000b44: b580 push {r7, lr} + 8000b46: b08a sub sp, #40 @ 0x28 + 8000b48: af00 add r7, sp, #0 + 8000b4a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000b4c: f107 0314 add.w r3, r7, #20 + 8000b50: 2200 movs r2, #0 + 8000b52: 601a str r2, [r3, #0] + 8000b54: 605a str r2, [r3, #4] + 8000b56: 609a str r2, [r3, #8] + 8000b58: 60da str r2, [r3, #12] + 8000b5a: 611a str r2, [r3, #16] + if(htim->Instance==TIM4) + 8000b5c: 687b ldr r3, [r7, #4] + 8000b5e: 681b ldr r3, [r3, #0] + 8000b60: 4a22 ldr r2, [pc, #136] @ (8000bec ) + 8000b62: 4293 cmp r3, r2 + 8000b64: d11c bne.n 8000ba0 + { + /* USER CODE BEGIN TIM4_MspPostInit 0 */ + + /* USER CODE END TIM4_MspPostInit 0 */ + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000b66: 4b22 ldr r3, [pc, #136] @ (8000bf0 ) + 8000b68: 69db ldr r3, [r3, #28] + 8000b6a: 4a21 ldr r2, [pc, #132] @ (8000bf0 ) + 8000b6c: f043 0302 orr.w r3, r3, #2 + 8000b70: 61d3 str r3, [r2, #28] + 8000b72: 4b1f ldr r3, [pc, #124] @ (8000bf0 ) + 8000b74: 69db ldr r3, [r3, #28] + 8000b76: f003 0302 and.w r3, r3, #2 + 8000b7a: 613b str r3, [r7, #16] + 8000b7c: 693b ldr r3, [r7, #16] + /**TIM4 GPIO Configuration + PB7 ------> TIM4_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + 8000b7e: 2380 movs r3, #128 @ 0x80 + 8000b80: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000b82: 2302 movs r3, #2 + 8000b84: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000b86: 2300 movs r3, #0 + 8000b88: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000b8a: 2300 movs r3, #0 + 8000b8c: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + 8000b8e: 2302 movs r3, #2 + 8000b90: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000b92: f107 0314 add.w r3, r7, #20 + 8000b96: 4619 mov r1, r3 + 8000b98: 4816 ldr r0, [pc, #88] @ (8000bf4 ) + 8000b9a: f000 faa9 bl 80010f0 + /* USER CODE BEGIN TIM11_MspPostInit 1 */ + + /* USER CODE END TIM11_MspPostInit 1 */ + } + +} + 8000b9e: e021 b.n 8000be4 + else if(htim->Instance==TIM11) + 8000ba0: 687b ldr r3, [r7, #4] + 8000ba2: 681b ldr r3, [r3, #0] + 8000ba4: 4a14 ldr r2, [pc, #80] @ (8000bf8 ) + 8000ba6: 4293 cmp r3, r2 + 8000ba8: d11c bne.n 8000be4 + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000baa: 4b11 ldr r3, [pc, #68] @ (8000bf0 ) + 8000bac: 69db ldr r3, [r3, #28] + 8000bae: 4a10 ldr r2, [pc, #64] @ (8000bf0 ) + 8000bb0: f043 0302 orr.w r3, r3, #2 + 8000bb4: 61d3 str r3, [r2, #28] + 8000bb6: 4b0e ldr r3, [pc, #56] @ (8000bf0 ) + 8000bb8: 69db ldr r3, [r3, #28] + 8000bba: f003 0302 and.w r3, r3, #2 + 8000bbe: 60fb str r3, [r7, #12] + 8000bc0: 68fb ldr r3, [r7, #12] + GPIO_InitStruct.Pin = GPIO_PIN_15; + 8000bc2: f44f 4300 mov.w r3, #32768 @ 0x8000 + 8000bc6: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000bc8: 2302 movs r3, #2 + 8000bca: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000bcc: 2300 movs r3, #0 + 8000bce: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000bd0: 2300 movs r3, #0 + 8000bd2: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + 8000bd4: 2303 movs r3, #3 + 8000bd6: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000bd8: f107 0314 add.w r3, r7, #20 + 8000bdc: 4619 mov r1, r3 + 8000bde: 4805 ldr r0, [pc, #20] @ (8000bf4 ) + 8000be0: f000 fa86 bl 80010f0 +} + 8000be4: bf00 nop + 8000be6: 3728 adds r7, #40 @ 0x28 + 8000be8: 46bd mov sp, r7 + 8000bea: bd80 pop {r7, pc} + 8000bec: 40000800 .word 0x40000800 + 8000bf0: 40023800 .word 0x40023800 + 8000bf4: 40020400 .word 0x40020400 + 8000bf8: 40011000 .word 0x40011000 + +08000bfc : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000bfc: b480 push {r7} + 8000bfe: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 8000c00: bf00 nop + 8000c02: e7fd b.n 8000c00 + +08000c04 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000c04: b480 push {r7} + 8000c06: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000c08: bf00 nop + 8000c0a: e7fd b.n 8000c08 + +08000c0c : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000c0c: b480 push {r7} + 8000c0e: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000c10: bf00 nop + 8000c12: e7fd b.n 8000c10 + +08000c14 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000c14: b480 push {r7} + 8000c16: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000c18: bf00 nop + 8000c1a: e7fd b.n 8000c18 + +08000c1c : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000c1c: b480 push {r7} + 8000c1e: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000c20: bf00 nop + 8000c22: e7fd b.n 8000c20 + +08000c24 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000c24: b480 push {r7} + 8000c26: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000c28: bf00 nop + 8000c2a: 46bd mov sp, r7 + 8000c2c: bc80 pop {r7} + 8000c2e: 4770 bx lr + +08000c30 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000c30: b480 push {r7} + 8000c32: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000c34: bf00 nop + 8000c36: 46bd mov sp, r7 + 8000c38: bc80 pop {r7} + 8000c3a: 4770 bx lr + +08000c3c : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000c3c: b480 push {r7} + 8000c3e: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000c40: bf00 nop + 8000c42: 46bd mov sp, r7 + 8000c44: bc80 pop {r7} + 8000c46: 4770 bx lr + +08000c48 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000c48: b580 push {r7, lr} + 8000c4a: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000c4c: f000 f926 bl 8000e9c + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000c50: bf00 nop + 8000c52: bd80 pop {r7, pc} + +08000c54 : + +/** + * @brief This function handles TIM11 global interrupt. + */ +void TIM11_IRQHandler(void) +{ + 8000c54: b580 push {r7, lr} + 8000c56: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM11_IRQn 0 */ + + /* USER CODE END TIM11_IRQn 0 */ + HAL_TIM_IRQHandler(&htim11); + 8000c58: 4802 ldr r0, [pc, #8] @ (8000c64 ) + 8000c5a: f001 fdaf bl 80027bc + /* USER CODE BEGIN TIM11_IRQn 1 */ + + /* USER CODE END TIM11_IRQn 1 */ +} + 8000c5e: bf00 nop + 8000c60: bd80 pop {r7, pc} + 8000c62: bf00 nop + 8000c64: 20000104 .word 0x20000104 + +08000c68 : + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + 8000c68: b580 push {r7, lr} + 8000c6a: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + 8000c6c: 4802 ldr r0, [pc, #8] @ (8000c78 ) + 8000c6e: f001 fda5 bl 80027bc + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + 8000c72: bf00 nop + 8000c74: bd80 pop {r7, pc} + 8000c76: bf00 nop + 8000c78: 20000084 .word 0x20000084 + +08000c7c : + +/** + * @brief This function handles TIM4 global interrupt. + */ +void TIM4_IRQHandler(void) +{ + 8000c7c: b580 push {r7, lr} + 8000c7e: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM4_IRQn 0 */ + + /* USER CODE END TIM4_IRQn 0 */ + HAL_TIM_IRQHandler(&htim4); + 8000c80: 4802 ldr r0, [pc, #8] @ (8000c8c ) + 8000c82: f001 fd9b bl 80027bc + /* USER CODE BEGIN TIM4_IRQn 1 */ + + /* USER CODE END TIM4_IRQn 1 */ +} + 8000c86: bf00 nop + 8000c88: bd80 pop {r7, pc} + 8000c8a: bf00 nop + 8000c8c: 200000c4 .word 0x200000c4 + +08000c90 : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 8000c90: b580 push {r7, lr} + 8000c92: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 8000c94: f44f 6000 mov.w r0, #2048 @ 0x800 + 8000c98: f000 fbd2 bl 8001440 + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 8000c9c: f44f 5080 mov.w r0, #4096 @ 0x1000 + 8000ca0: f000 fbce bl 8001440 + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8000ca4: bf00 nop + 8000ca6: bd80 pop {r7, pc} + +08000ca8 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000ca8: b480 push {r7} + 8000caa: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000cac: bf00 nop + 8000cae: 46bd mov sp, r7 + 8000cb0: bc80 pop {r7} + 8000cb2: 4770 bx lr + +08000cb4 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000cb4: f7ff fff8 bl 8000ca8 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000cb8: 480b ldr r0, [pc, #44] @ (8000ce8 ) + ldr r1, =_edata + 8000cba: 490c ldr r1, [pc, #48] @ (8000cec ) + ldr r2, =_sidata + 8000cbc: 4a0c ldr r2, [pc, #48] @ (8000cf0 ) + movs r3, #0 + 8000cbe: 2300 movs r3, #0 + b LoopCopyDataInit + 8000cc0: e002 b.n 8000cc8 + +08000cc2 : + +CopyDataInit: + ldr r4, [r2, r3] + 8000cc2: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000cc4: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000cc6: 3304 adds r3, #4 + +08000cc8 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000cc8: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000cca: 428c cmp r4, r1 + bcc CopyDataInit + 8000ccc: d3f9 bcc.n 8000cc2 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000cce: 4a09 ldr r2, [pc, #36] @ (8000cf4 ) + ldr r4, =_ebss + 8000cd0: 4c09 ldr r4, [pc, #36] @ (8000cf8 ) + movs r3, #0 + 8000cd2: 2300 movs r3, #0 + b LoopFillZerobss + 8000cd4: e001 b.n 8000cda + +08000cd6 : + +FillZerobss: + str r3, [r2] + 8000cd6: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000cd8: 3204 adds r2, #4 + +08000cda : + +LoopFillZerobss: + cmp r2, r4 + 8000cda: 42a2 cmp r2, r4 + bcc FillZerobss + 8000cdc: d3fb bcc.n 8000cd6 + +/* Call static constructors */ + bl __libc_init_array + 8000cde: f002 fa73 bl 80031c8 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000ce2: f7ff fbe5 bl 80004b0
+ bx lr + 8000ce6: 4770 bx lr + ldr r0, =_sdata + 8000ce8: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000cec: 20000010 .word 0x20000010 + ldr r2, =_sidata + 8000cf0: 08003254 .word 0x08003254 + ldr r2, =_sbss + 8000cf4: 20000010 .word 0x20000010 + ldr r4, =_ebss + 8000cf8: 2000014c .word 0x2000014c + +08000cfc : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000cfc: e7fe b.n 8000cfc + +08000cfe : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000cfe: b580 push {r7, lr} + 8000d00: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 8000d02: 2107 movs r1, #7 + 8000d04: 200b movs r0, #11 + 8000d06: f000 f847 bl 8000d98 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000d0a: 2100 movs r1, #0 + 8000d0c: 2009 movs r0, #9 + 8000d0e: f000 f843 bl 8000d98 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000d12: f000 f809 bl 8000d28 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000d16: f000 f80f bl 8000d38 + MAX7219_Clear(); // clear all digits + 8000d1a: f000 f827 bl 8000d6c + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000d1e: 200f movs r0, #15 + 8000d20: f000 f812 bl 8000d48 +} + 8000d24: bf00 nop + 8000d26: bd80 pop {r7, pc} + +08000d28 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000d28: b580 push {r7, lr} + 8000d2a: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000d2c: 2101 movs r1, #1 + 8000d2e: 200c movs r0, #12 + 8000d30: f000 f832 bl 8000d98 +} + 8000d34: bf00 nop + 8000d36: bd80 pop {r7, pc} + +08000d38 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000d38: b580 push {r7, lr} + 8000d3a: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000d3c: 2100 movs r1, #0 + 8000d3e: 200f movs r0, #15 + 8000d40: f000 f82a bl 8000d98 +} + 8000d44: bf00 nop + 8000d46: bd80 pop {r7, pc} + +08000d48 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000d48: b580 push {r7, lr} + 8000d4a: b082 sub sp, #8 + 8000d4c: af00 add r7, sp, #0 + 8000d4e: 4603 mov r3, r0 + 8000d50: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000d52: 79fb ldrb r3, [r7, #7] + 8000d54: f003 030f and.w r3, r3, #15 + 8000d58: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000d5a: 79fb ldrb r3, [r7, #7] + 8000d5c: 4619 mov r1, r3 + 8000d5e: 200a movs r0, #10 + 8000d60: f000 f81a bl 8000d98 +} + 8000d64: bf00 nop + 8000d66: 3708 adds r7, #8 + 8000d68: 46bd mov sp, r7 + 8000d6a: bd80 pop {r7, pc} + +08000d6c : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000d6c: b580 push {r7, lr} + 8000d6e: b082 sub sp, #8 + 8000d70: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000d72: 2300 movs r3, #0 + 8000d74: 71fb strb r3, [r7, #7] + 8000d76: e007 b.n 8000d88 + MAX7219_Write(i, 0x00); // turn all segments off + 8000d78: 79fb ldrb r3, [r7, #7] + 8000d7a: 2100 movs r1, #0 + 8000d7c: 4618 mov r0, r3 + 8000d7e: f000 f80b bl 8000d98 + for (i=0; i < 8; i++) + 8000d82: 79fb ldrb r3, [r7, #7] + 8000d84: 3301 adds r3, #1 + 8000d86: 71fb strb r3, [r7, #7] + 8000d88: 79fb ldrb r3, [r7, #7] + 8000d8a: 2b07 cmp r3, #7 + 8000d8c: d9f4 bls.n 8000d78 +} + 8000d8e: bf00 nop + 8000d90: bf00 nop + 8000d92: 3708 adds r7, #8 + 8000d94: 46bd mov sp, r7 + 8000d96: bd80 pop {r7, pc} + +08000d98 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000d98: b580 push {r7, lr} + 8000d9a: b082 sub sp, #8 + 8000d9c: af00 add r7, sp, #0 + 8000d9e: 4603 mov r3, r0 + 8000da0: 460a mov r2, r1 + 8000da2: 71fb strb r3, [r7, #7] + 8000da4: 4613 mov r3, r2 + 8000da6: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000da8: 4b09 ldr r3, [pc, #36] @ (8000dd0 ) + 8000daa: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000dae: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000db0: 79fb ldrb r3, [r7, #7] + 8000db2: 4618 mov r0, r3 + 8000db4: f000 f80e bl 8000dd4 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000db8: 79bb ldrb r3, [r7, #6] + 8000dba: 4618 mov r0, r3 + 8000dbc: f000 f80a bl 8000dd4 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000dc0: 4b03 ldr r3, [pc, #12] @ (8000dd0 ) + 8000dc2: 2201 movs r2, #1 + 8000dc4: 619a str r2, [r3, #24] + } + 8000dc6: bf00 nop + 8000dc8: 3708 adds r7, #8 + 8000dca: 46bd mov sp, r7 + 8000dcc: bd80 pop {r7, pc} + 8000dce: bf00 nop + 8000dd0: 40020800 .word 0x40020800 + +08000dd4 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000dd4: b580 push {r7, lr} + 8000dd6: b082 sub sp, #8 + 8000dd8: af00 add r7, sp, #0 + 8000dda: 4603 mov r3, r0 + 8000ddc: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000dde: 1df9 adds r1, r7, #7 + 8000de0: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000de4: 2201 movs r2, #1 + 8000de6: 4803 ldr r0, [pc, #12] @ (8000df4 ) + 8000de8: f001 f957 bl 800209a + +} + 8000dec: bf00 nop + 8000dee: 3708 adds r7, #8 + 8000df0: 46bd mov sp, r7 + 8000df2: bd80 pop {r7, pc} + 8000df4: 2000002c .word 0x2000002c + +08000df8 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000df8: b580 push {r7, lr} + 8000dfa: b082 sub sp, #8 + 8000dfc: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000dfe: 2300 movs r3, #0 + 8000e00: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000e02: 2003 movs r0, #3 + 8000e04: f000 f932 bl 800106c + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000e08: 200f movs r0, #15 + 8000e0a: f000 f80d bl 8000e28 + 8000e0e: 4603 mov r3, r0 + 8000e10: 2b00 cmp r3, #0 + 8000e12: d002 beq.n 8000e1a + { + status = HAL_ERROR; + 8000e14: 2301 movs r3, #1 + 8000e16: 71fb strb r3, [r7, #7] + 8000e18: e001 b.n 8000e1e + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000e1a: f7ff fdc5 bl 80009a8 + } + + /* Return function status */ + return status; + 8000e1e: 79fb ldrb r3, [r7, #7] +} + 8000e20: 4618 mov r0, r3 + 8000e22: 3708 adds r7, #8 + 8000e24: 46bd mov sp, r7 + 8000e26: bd80 pop {r7, pc} + +08000e28 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000e28: b580 push {r7, lr} + 8000e2a: b084 sub sp, #16 + 8000e2c: af00 add r7, sp, #0 + 8000e2e: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000e30: 2300 movs r3, #0 + 8000e32: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000e34: 4b16 ldr r3, [pc, #88] @ (8000e90 ) + 8000e36: 681b ldr r3, [r3, #0] + 8000e38: 2b00 cmp r3, #0 + 8000e3a: d022 beq.n 8000e82 + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000e3c: 4b15 ldr r3, [pc, #84] @ (8000e94 ) + 8000e3e: 681a ldr r2, [r3, #0] + 8000e40: 4b13 ldr r3, [pc, #76] @ (8000e90 ) + 8000e42: 681b ldr r3, [r3, #0] + 8000e44: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000e48: fbb1 f3f3 udiv r3, r1, r3 + 8000e4c: fbb2 f3f3 udiv r3, r2, r3 + 8000e50: 4618 mov r0, r3 + 8000e52: f000 f940 bl 80010d6 + 8000e56: 4603 mov r3, r0 + 8000e58: 2b00 cmp r3, #0 + 8000e5a: d10f bne.n 8000e7c + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000e5c: 687b ldr r3, [r7, #4] + 8000e5e: 2b0f cmp r3, #15 + 8000e60: d809 bhi.n 8000e76 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000e62: 2200 movs r2, #0 + 8000e64: 6879 ldr r1, [r7, #4] + 8000e66: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000e6a: f000 f90a bl 8001082 + uwTickPrio = TickPriority; + 8000e6e: 4a0a ldr r2, [pc, #40] @ (8000e98 ) + 8000e70: 687b ldr r3, [r7, #4] + 8000e72: 6013 str r3, [r2, #0] + 8000e74: e007 b.n 8000e86 + } + else + { + status = HAL_ERROR; + 8000e76: 2301 movs r3, #1 + 8000e78: 73fb strb r3, [r7, #15] + 8000e7a: e004 b.n 8000e86 + } + } + else + { + status = HAL_ERROR; + 8000e7c: 2301 movs r3, #1 + 8000e7e: 73fb strb r3, [r7, #15] + 8000e80: e001 b.n 8000e86 + } + } + else + { + status = HAL_ERROR; + 8000e82: 2301 movs r3, #1 + 8000e84: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000e86: 7bfb ldrb r3, [r7, #15] +} + 8000e88: 4618 mov r0, r3 + 8000e8a: 3710 adds r7, #16 + 8000e8c: 46bd mov sp, r7 + 8000e8e: bd80 pop {r7, pc} + 8000e90: 2000000c .word 0x2000000c + 8000e94: 20000004 .word 0x20000004 + 8000e98: 20000008 .word 0x20000008 + +08000e9c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000e9c: b480 push {r7} + 8000e9e: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000ea0: 4b05 ldr r3, [pc, #20] @ (8000eb8 ) + 8000ea2: 681a ldr r2, [r3, #0] + 8000ea4: 4b05 ldr r3, [pc, #20] @ (8000ebc ) + 8000ea6: 681b ldr r3, [r3, #0] + 8000ea8: 4413 add r3, r2 + 8000eaa: 4a03 ldr r2, [pc, #12] @ (8000eb8 ) + 8000eac: 6013 str r3, [r2, #0] +} + 8000eae: bf00 nop + 8000eb0: 46bd mov sp, r7 + 8000eb2: bc80 pop {r7} + 8000eb4: 4770 bx lr + 8000eb6: bf00 nop + 8000eb8: 20000148 .word 0x20000148 + 8000ebc: 2000000c .word 0x2000000c + +08000ec0 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000ec0: b480 push {r7} + 8000ec2: af00 add r7, sp, #0 + return uwTick; + 8000ec4: 4b02 ldr r3, [pc, #8] @ (8000ed0 ) + 8000ec6: 681b ldr r3, [r3, #0] +} + 8000ec8: 4618 mov r0, r3 + 8000eca: 46bd mov sp, r7 + 8000ecc: bc80 pop {r7} + 8000ece: 4770 bx lr + 8000ed0: 20000148 .word 0x20000148 + +08000ed4 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000ed4: b480 push {r7} + 8000ed6: b085 sub sp, #20 + 8000ed8: af00 add r7, sp, #0 + 8000eda: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000edc: 687b ldr r3, [r7, #4] + 8000ede: f003 0307 and.w r3, r3, #7 + 8000ee2: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000ee4: 4b0c ldr r3, [pc, #48] @ (8000f18 <__NVIC_SetPriorityGrouping+0x44>) + 8000ee6: 68db ldr r3, [r3, #12] + 8000ee8: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000eea: 68ba ldr r2, [r7, #8] + 8000eec: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000ef0: 4013 ands r3, r2 + 8000ef2: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000ef4: 68fb ldr r3, [r7, #12] + 8000ef6: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000ef8: 68bb ldr r3, [r7, #8] + 8000efa: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000efc: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000f00: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000f04: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000f06: 4a04 ldr r2, [pc, #16] @ (8000f18 <__NVIC_SetPriorityGrouping+0x44>) + 8000f08: 68bb ldr r3, [r7, #8] + 8000f0a: 60d3 str r3, [r2, #12] +} + 8000f0c: bf00 nop + 8000f0e: 3714 adds r7, #20 + 8000f10: 46bd mov sp, r7 + 8000f12: bc80 pop {r7} + 8000f14: 4770 bx lr + 8000f16: bf00 nop + 8000f18: e000ed00 .word 0xe000ed00 + +08000f1c <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000f1c: b480 push {r7} + 8000f1e: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000f20: 4b04 ldr r3, [pc, #16] @ (8000f34 <__NVIC_GetPriorityGrouping+0x18>) + 8000f22: 68db ldr r3, [r3, #12] + 8000f24: 0a1b lsrs r3, r3, #8 + 8000f26: f003 0307 and.w r3, r3, #7 +} + 8000f2a: 4618 mov r0, r3 + 8000f2c: 46bd mov sp, r7 + 8000f2e: bc80 pop {r7} + 8000f30: 4770 bx lr + 8000f32: bf00 nop + 8000f34: e000ed00 .word 0xe000ed00 + +08000f38 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000f38: b480 push {r7} + 8000f3a: b083 sub sp, #12 + 8000f3c: af00 add r7, sp, #0 + 8000f3e: 4603 mov r3, r0 + 8000f40: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000f42: f997 3007 ldrsb.w r3, [r7, #7] + 8000f46: 2b00 cmp r3, #0 + 8000f48: db0b blt.n 8000f62 <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000f4a: 79fb ldrb r3, [r7, #7] + 8000f4c: f003 021f and.w r2, r3, #31 + 8000f50: 4906 ldr r1, [pc, #24] @ (8000f6c <__NVIC_EnableIRQ+0x34>) + 8000f52: f997 3007 ldrsb.w r3, [r7, #7] + 8000f56: 095b lsrs r3, r3, #5 + 8000f58: 2001 movs r0, #1 + 8000f5a: fa00 f202 lsl.w r2, r0, r2 + 8000f5e: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000f62: bf00 nop + 8000f64: 370c adds r7, #12 + 8000f66: 46bd mov sp, r7 + 8000f68: bc80 pop {r7} + 8000f6a: 4770 bx lr + 8000f6c: e000e100 .word 0xe000e100 + +08000f70 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000f70: b480 push {r7} + 8000f72: b083 sub sp, #12 + 8000f74: af00 add r7, sp, #0 + 8000f76: 4603 mov r3, r0 + 8000f78: 6039 str r1, [r7, #0] + 8000f7a: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000f7c: f997 3007 ldrsb.w r3, [r7, #7] + 8000f80: 2b00 cmp r3, #0 + 8000f82: db0a blt.n 8000f9a <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000f84: 683b ldr r3, [r7, #0] + 8000f86: b2da uxtb r2, r3 + 8000f88: 490c ldr r1, [pc, #48] @ (8000fbc <__NVIC_SetPriority+0x4c>) + 8000f8a: f997 3007 ldrsb.w r3, [r7, #7] + 8000f8e: 0112 lsls r2, r2, #4 + 8000f90: b2d2 uxtb r2, r2 + 8000f92: 440b add r3, r1 + 8000f94: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000f98: e00a b.n 8000fb0 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000f9a: 683b ldr r3, [r7, #0] + 8000f9c: b2da uxtb r2, r3 + 8000f9e: 4908 ldr r1, [pc, #32] @ (8000fc0 <__NVIC_SetPriority+0x50>) + 8000fa0: 79fb ldrb r3, [r7, #7] + 8000fa2: f003 030f and.w r3, r3, #15 + 8000fa6: 3b04 subs r3, #4 + 8000fa8: 0112 lsls r2, r2, #4 + 8000faa: b2d2 uxtb r2, r2 + 8000fac: 440b add r3, r1 + 8000fae: 761a strb r2, [r3, #24] +} + 8000fb0: bf00 nop + 8000fb2: 370c adds r7, #12 + 8000fb4: 46bd mov sp, r7 + 8000fb6: bc80 pop {r7} + 8000fb8: 4770 bx lr + 8000fba: bf00 nop + 8000fbc: e000e100 .word 0xe000e100 + 8000fc0: e000ed00 .word 0xe000ed00 + +08000fc4 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000fc4: b480 push {r7} + 8000fc6: b089 sub sp, #36 @ 0x24 + 8000fc8: af00 add r7, sp, #0 + 8000fca: 60f8 str r0, [r7, #12] + 8000fcc: 60b9 str r1, [r7, #8] + 8000fce: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000fd0: 68fb ldr r3, [r7, #12] + 8000fd2: f003 0307 and.w r3, r3, #7 + 8000fd6: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000fd8: 69fb ldr r3, [r7, #28] + 8000fda: f1c3 0307 rsb r3, r3, #7 + 8000fde: 2b04 cmp r3, #4 + 8000fe0: bf28 it cs + 8000fe2: 2304 movcs r3, #4 + 8000fe4: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000fe6: 69fb ldr r3, [r7, #28] + 8000fe8: 3304 adds r3, #4 + 8000fea: 2b06 cmp r3, #6 + 8000fec: d902 bls.n 8000ff4 + 8000fee: 69fb ldr r3, [r7, #28] + 8000ff0: 3b03 subs r3, #3 + 8000ff2: e000 b.n 8000ff6 + 8000ff4: 2300 movs r3, #0 + 8000ff6: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000ff8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000ffc: 69bb ldr r3, [r7, #24] + 8000ffe: fa02 f303 lsl.w r3, r2, r3 + 8001002: 43da mvns r2, r3 + 8001004: 68bb ldr r3, [r7, #8] + 8001006: 401a ands r2, r3 + 8001008: 697b ldr r3, [r7, #20] + 800100a: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 800100c: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8001010: 697b ldr r3, [r7, #20] + 8001012: fa01 f303 lsl.w r3, r1, r3 + 8001016: 43d9 mvns r1, r3 + 8001018: 687b ldr r3, [r7, #4] + 800101a: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 800101c: 4313 orrs r3, r2 + ); +} + 800101e: 4618 mov r0, r3 + 8001020: 3724 adds r7, #36 @ 0x24 + 8001022: 46bd mov sp, r7 + 8001024: bc80 pop {r7} + 8001026: 4770 bx lr + +08001028 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8001028: b580 push {r7, lr} + 800102a: b082 sub sp, #8 + 800102c: af00 add r7, sp, #0 + 800102e: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8001030: 687b ldr r3, [r7, #4] + 8001032: 3b01 subs r3, #1 + 8001034: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8001038: d301 bcc.n 800103e + { + return (1UL); /* Reload value impossible */ + 800103a: 2301 movs r3, #1 + 800103c: e00f b.n 800105e + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 800103e: 4a0a ldr r2, [pc, #40] @ (8001068 ) + 8001040: 687b ldr r3, [r7, #4] + 8001042: 3b01 subs r3, #1 + 8001044: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8001046: 210f movs r1, #15 + 8001048: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800104c: f7ff ff90 bl 8000f70 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8001050: 4b05 ldr r3, [pc, #20] @ (8001068 ) + 8001052: 2200 movs r2, #0 + 8001054: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8001056: 4b04 ldr r3, [pc, #16] @ (8001068 ) + 8001058: 2207 movs r2, #7 + 800105a: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 800105c: 2300 movs r3, #0 +} + 800105e: 4618 mov r0, r3 + 8001060: 3708 adds r7, #8 + 8001062: 46bd mov sp, r7 + 8001064: bd80 pop {r7, pc} + 8001066: bf00 nop + 8001068: e000e010 .word 0xe000e010 + +0800106c : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 800106c: b580 push {r7, lr} + 800106e: b082 sub sp, #8 + 8001070: af00 add r7, sp, #0 + 8001072: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8001074: 6878 ldr r0, [r7, #4] + 8001076: f7ff ff2d bl 8000ed4 <__NVIC_SetPriorityGrouping> +} + 800107a: bf00 nop + 800107c: 3708 adds r7, #8 + 800107e: 46bd mov sp, r7 + 8001080: bd80 pop {r7, pc} + +08001082 : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8001082: b580 push {r7, lr} + 8001084: b086 sub sp, #24 + 8001086: af00 add r7, sp, #0 + 8001088: 4603 mov r3, r0 + 800108a: 60b9 str r1, [r7, #8] + 800108c: 607a str r2, [r7, #4] + 800108e: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8001090: 2300 movs r3, #0 + 8001092: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8001094: f7ff ff42 bl 8000f1c <__NVIC_GetPriorityGrouping> + 8001098: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 800109a: 687a ldr r2, [r7, #4] + 800109c: 68b9 ldr r1, [r7, #8] + 800109e: 6978 ldr r0, [r7, #20] + 80010a0: f7ff ff90 bl 8000fc4 + 80010a4: 4602 mov r2, r0 + 80010a6: f997 300f ldrsb.w r3, [r7, #15] + 80010aa: 4611 mov r1, r2 + 80010ac: 4618 mov r0, r3 + 80010ae: f7ff ff5f bl 8000f70 <__NVIC_SetPriority> +} + 80010b2: bf00 nop + 80010b4: 3718 adds r7, #24 + 80010b6: 46bd mov sp, r7 + 80010b8: bd80 pop {r7, pc} + +080010ba : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 80010ba: b580 push {r7, lr} + 80010bc: b082 sub sp, #8 + 80010be: af00 add r7, sp, #0 + 80010c0: 4603 mov r3, r0 + 80010c2: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 80010c4: f997 3007 ldrsb.w r3, [r7, #7] + 80010c8: 4618 mov r0, r3 + 80010ca: f7ff ff35 bl 8000f38 <__NVIC_EnableIRQ> +} + 80010ce: bf00 nop + 80010d0: 3708 adds r7, #8 + 80010d2: 46bd mov sp, r7 + 80010d4: bd80 pop {r7, pc} + +080010d6 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 80010d6: b580 push {r7, lr} + 80010d8: b082 sub sp, #8 + 80010da: af00 add r7, sp, #0 + 80010dc: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 80010de: 6878 ldr r0, [r7, #4] + 80010e0: f7ff ffa2 bl 8001028 + 80010e4: 4603 mov r3, r0 +} + 80010e6: 4618 mov r0, r3 + 80010e8: 3708 adds r7, #8 + 80010ea: 46bd mov sp, r7 + 80010ec: bd80 pop {r7, pc} + ... + +080010f0 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 80010f0: b480 push {r7} + 80010f2: b087 sub sp, #28 + 80010f4: af00 add r7, sp, #0 + 80010f6: 6078 str r0, [r7, #4] + 80010f8: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 80010fa: 2300 movs r3, #0 + 80010fc: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 80010fe: 2300 movs r3, #0 + 8001100: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8001102: 2300 movs r3, #0 + 8001104: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8001106: e160 b.n 80013ca + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8001108: 683b ldr r3, [r7, #0] + 800110a: 681a ldr r2, [r3, #0] + 800110c: 2101 movs r1, #1 + 800110e: 697b ldr r3, [r7, #20] + 8001110: fa01 f303 lsl.w r3, r1, r3 + 8001114: 4013 ands r3, r2 + 8001116: 60fb str r3, [r7, #12] + + if (iocurrent) + 8001118: 68fb ldr r3, [r7, #12] + 800111a: 2b00 cmp r3, #0 + 800111c: f000 8152 beq.w 80013c4 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001120: 683b ldr r3, [r7, #0] + 8001122: 685b ldr r3, [r3, #4] + 8001124: f003 0303 and.w r3, r3, #3 + 8001128: 2b01 cmp r3, #1 + 800112a: d005 beq.n 8001138 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 800112c: 683b ldr r3, [r7, #0] + 800112e: 685b ldr r3, [r3, #4] + 8001130: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001134: 2b02 cmp r3, #2 + 8001136: d130 bne.n 800119a + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8001138: 687b ldr r3, [r7, #4] + 800113a: 689b ldr r3, [r3, #8] + 800113c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 800113e: 697b ldr r3, [r7, #20] + 8001140: 005b lsls r3, r3, #1 + 8001142: 2203 movs r2, #3 + 8001144: fa02 f303 lsl.w r3, r2, r3 + 8001148: 43db mvns r3, r3 + 800114a: 693a ldr r2, [r7, #16] + 800114c: 4013 ands r3, r2 + 800114e: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8001150: 683b ldr r3, [r7, #0] + 8001152: 68da ldr r2, [r3, #12] + 8001154: 697b ldr r3, [r7, #20] + 8001156: 005b lsls r3, r3, #1 + 8001158: fa02 f303 lsl.w r3, r2, r3 + 800115c: 693a ldr r2, [r7, #16] + 800115e: 4313 orrs r3, r2 + 8001160: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8001162: 687b ldr r3, [r7, #4] + 8001164: 693a ldr r2, [r7, #16] + 8001166: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001168: 687b ldr r3, [r7, #4] + 800116a: 685b ldr r3, [r3, #4] + 800116c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 800116e: 2201 movs r2, #1 + 8001170: 697b ldr r3, [r7, #20] + 8001172: fa02 f303 lsl.w r3, r2, r3 + 8001176: 43db mvns r3, r3 + 8001178: 693a ldr r2, [r7, #16] + 800117a: 4013 ands r3, r2 + 800117c: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800117e: 683b ldr r3, [r7, #0] + 8001180: 685b ldr r3, [r3, #4] + 8001182: 091b lsrs r3, r3, #4 + 8001184: f003 0201 and.w r2, r3, #1 + 8001188: 697b ldr r3, [r7, #20] + 800118a: fa02 f303 lsl.w r3, r2, r3 + 800118e: 693a ldr r2, [r7, #16] + 8001190: 4313 orrs r3, r2 + 8001192: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8001194: 687b ldr r3, [r7, #4] + 8001196: 693a ldr r2, [r7, #16] + 8001198: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 800119a: 683b ldr r3, [r7, #0] + 800119c: 685b ldr r3, [r3, #4] + 800119e: f003 0303 and.w r3, r3, #3 + 80011a2: 2b03 cmp r3, #3 + 80011a4: d017 beq.n 80011d6 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 80011a6: 687b ldr r3, [r7, #4] + 80011a8: 68db ldr r3, [r3, #12] + 80011aa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 80011ac: 697b ldr r3, [r7, #20] + 80011ae: 005b lsls r3, r3, #1 + 80011b0: 2203 movs r2, #3 + 80011b2: fa02 f303 lsl.w r3, r2, r3 + 80011b6: 43db mvns r3, r3 + 80011b8: 693a ldr r2, [r7, #16] + 80011ba: 4013 ands r3, r2 + 80011bc: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 80011be: 683b ldr r3, [r7, #0] + 80011c0: 689a ldr r2, [r3, #8] + 80011c2: 697b ldr r3, [r7, #20] + 80011c4: 005b lsls r3, r3, #1 + 80011c6: fa02 f303 lsl.w r3, r2, r3 + 80011ca: 693a ldr r2, [r7, #16] + 80011cc: 4313 orrs r3, r2 + 80011ce: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 80011d0: 687b ldr r3, [r7, #4] + 80011d2: 693a ldr r2, [r7, #16] + 80011d4: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 80011d6: 683b ldr r3, [r7, #0] + 80011d8: 685b ldr r3, [r3, #4] + 80011da: f003 0303 and.w r3, r3, #3 + 80011de: 2b02 cmp r3, #2 + 80011e0: d123 bne.n 800122a + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 80011e2: 697b ldr r3, [r7, #20] + 80011e4: 08da lsrs r2, r3, #3 + 80011e6: 687b ldr r3, [r7, #4] + 80011e8: 3208 adds r2, #8 + 80011ea: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80011ee: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 80011f0: 697b ldr r3, [r7, #20] + 80011f2: f003 0307 and.w r3, r3, #7 + 80011f6: 009b lsls r3, r3, #2 + 80011f8: 220f movs r2, #15 + 80011fa: fa02 f303 lsl.w r3, r2, r3 + 80011fe: 43db mvns r3, r3 + 8001200: 693a ldr r2, [r7, #16] + 8001202: 4013 ands r3, r2 + 8001204: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8001206: 683b ldr r3, [r7, #0] + 8001208: 691a ldr r2, [r3, #16] + 800120a: 697b ldr r3, [r7, #20] + 800120c: f003 0307 and.w r3, r3, #7 + 8001210: 009b lsls r3, r3, #2 + 8001212: fa02 f303 lsl.w r3, r2, r3 + 8001216: 693a ldr r2, [r7, #16] + 8001218: 4313 orrs r3, r2 + 800121a: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 800121c: 697b ldr r3, [r7, #20] + 800121e: 08da lsrs r2, r3, #3 + 8001220: 687b ldr r3, [r7, #4] + 8001222: 3208 adds r2, #8 + 8001224: 6939 ldr r1, [r7, #16] + 8001226: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 800122a: 687b ldr r3, [r7, #4] + 800122c: 681b ldr r3, [r3, #0] + 800122e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8001230: 697b ldr r3, [r7, #20] + 8001232: 005b lsls r3, r3, #1 + 8001234: 2203 movs r2, #3 + 8001236: fa02 f303 lsl.w r3, r2, r3 + 800123a: 43db mvns r3, r3 + 800123c: 693a ldr r2, [r7, #16] + 800123e: 4013 ands r3, r2 + 8001240: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8001242: 683b ldr r3, [r7, #0] + 8001244: 685b ldr r3, [r3, #4] + 8001246: f003 0203 and.w r2, r3, #3 + 800124a: 697b ldr r3, [r7, #20] + 800124c: 005b lsls r3, r3, #1 + 800124e: fa02 f303 lsl.w r3, r2, r3 + 8001252: 693a ldr r2, [r7, #16] + 8001254: 4313 orrs r3, r2 + 8001256: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001258: 687b ldr r3, [r7, #4] + 800125a: 693a ldr r2, [r7, #16] + 800125c: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 800125e: 683b ldr r3, [r7, #0] + 8001260: 685b ldr r3, [r3, #4] + 8001262: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8001266: 2b00 cmp r3, #0 + 8001268: f000 80ac beq.w 80013c4 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 800126c: 4b5e ldr r3, [pc, #376] @ (80013e8 ) + 800126e: 6a1b ldr r3, [r3, #32] + 8001270: 4a5d ldr r2, [pc, #372] @ (80013e8 ) + 8001272: f043 0301 orr.w r3, r3, #1 + 8001276: 6213 str r3, [r2, #32] + 8001278: 4b5b ldr r3, [pc, #364] @ (80013e8 ) + 800127a: 6a1b ldr r3, [r3, #32] + 800127c: f003 0301 and.w r3, r3, #1 + 8001280: 60bb str r3, [r7, #8] + 8001282: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8001284: 4a59 ldr r2, [pc, #356] @ (80013ec ) + 8001286: 697b ldr r3, [r7, #20] + 8001288: 089b lsrs r3, r3, #2 + 800128a: 3302 adds r3, #2 + 800128c: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001290: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8001292: 697b ldr r3, [r7, #20] + 8001294: f003 0303 and.w r3, r3, #3 + 8001298: 009b lsls r3, r3, #2 + 800129a: 220f movs r2, #15 + 800129c: fa02 f303 lsl.w r3, r2, r3 + 80012a0: 43db mvns r3, r3 + 80012a2: 693a ldr r2, [r7, #16] + 80012a4: 4013 ands r3, r2 + 80012a6: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 80012a8: 687b ldr r3, [r7, #4] + 80012aa: 4a51 ldr r2, [pc, #324] @ (80013f0 ) + 80012ac: 4293 cmp r3, r2 + 80012ae: d025 beq.n 80012fc + 80012b0: 687b ldr r3, [r7, #4] + 80012b2: 4a50 ldr r2, [pc, #320] @ (80013f4 ) + 80012b4: 4293 cmp r3, r2 + 80012b6: d01f beq.n 80012f8 + 80012b8: 687b ldr r3, [r7, #4] + 80012ba: 4a4f ldr r2, [pc, #316] @ (80013f8 ) + 80012bc: 4293 cmp r3, r2 + 80012be: d019 beq.n 80012f4 + 80012c0: 687b ldr r3, [r7, #4] + 80012c2: 4a4e ldr r2, [pc, #312] @ (80013fc ) + 80012c4: 4293 cmp r3, r2 + 80012c6: d013 beq.n 80012f0 + 80012c8: 687b ldr r3, [r7, #4] + 80012ca: 4a4d ldr r2, [pc, #308] @ (8001400 ) + 80012cc: 4293 cmp r3, r2 + 80012ce: d00d beq.n 80012ec + 80012d0: 687b ldr r3, [r7, #4] + 80012d2: 4a4c ldr r2, [pc, #304] @ (8001404 ) + 80012d4: 4293 cmp r3, r2 + 80012d6: d007 beq.n 80012e8 + 80012d8: 687b ldr r3, [r7, #4] + 80012da: 4a4b ldr r2, [pc, #300] @ (8001408 ) + 80012dc: 4293 cmp r3, r2 + 80012de: d101 bne.n 80012e4 + 80012e0: 2306 movs r3, #6 + 80012e2: e00c b.n 80012fe + 80012e4: 2307 movs r3, #7 + 80012e6: e00a b.n 80012fe + 80012e8: 2305 movs r3, #5 + 80012ea: e008 b.n 80012fe + 80012ec: 2304 movs r3, #4 + 80012ee: e006 b.n 80012fe + 80012f0: 2303 movs r3, #3 + 80012f2: e004 b.n 80012fe + 80012f4: 2302 movs r3, #2 + 80012f6: e002 b.n 80012fe + 80012f8: 2301 movs r3, #1 + 80012fa: e000 b.n 80012fe + 80012fc: 2300 movs r3, #0 + 80012fe: 697a ldr r2, [r7, #20] + 8001300: f002 0203 and.w r2, r2, #3 + 8001304: 0092 lsls r2, r2, #2 + 8001306: 4093 lsls r3, r2 + 8001308: 693a ldr r2, [r7, #16] + 800130a: 4313 orrs r3, r2 + 800130c: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 800130e: 4937 ldr r1, [pc, #220] @ (80013ec ) + 8001310: 697b ldr r3, [r7, #20] + 8001312: 089b lsrs r3, r3, #2 + 8001314: 3302 adds r3, #2 + 8001316: 693a ldr r2, [r7, #16] + 8001318: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 800131c: 4b3b ldr r3, [pc, #236] @ (800140c ) + 800131e: 689b ldr r3, [r3, #8] + 8001320: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001322: 68fb ldr r3, [r7, #12] + 8001324: 43db mvns r3, r3 + 8001326: 693a ldr r2, [r7, #16] + 8001328: 4013 ands r3, r2 + 800132a: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 800132c: 683b ldr r3, [r7, #0] + 800132e: 685b ldr r3, [r3, #4] + 8001330: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001334: 2b00 cmp r3, #0 + 8001336: d003 beq.n 8001340 + { + SET_BIT(temp, iocurrent); + 8001338: 693a ldr r2, [r7, #16] + 800133a: 68fb ldr r3, [r7, #12] + 800133c: 4313 orrs r3, r2 + 800133e: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001340: 4a32 ldr r2, [pc, #200] @ (800140c ) + 8001342: 693b ldr r3, [r7, #16] + 8001344: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8001346: 4b31 ldr r3, [pc, #196] @ (800140c ) + 8001348: 68db ldr r3, [r3, #12] + 800134a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800134c: 68fb ldr r3, [r7, #12] + 800134e: 43db mvns r3, r3 + 8001350: 693a ldr r2, [r7, #16] + 8001352: 4013 ands r3, r2 + 8001354: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001356: 683b ldr r3, [r7, #0] + 8001358: 685b ldr r3, [r3, #4] + 800135a: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 800135e: 2b00 cmp r3, #0 + 8001360: d003 beq.n 800136a + { + SET_BIT(temp, iocurrent); + 8001362: 693a ldr r2, [r7, #16] + 8001364: 68fb ldr r3, [r7, #12] + 8001366: 4313 orrs r3, r2 + 8001368: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 800136a: 4a28 ldr r2, [pc, #160] @ (800140c ) + 800136c: 693b ldr r3, [r7, #16] + 800136e: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8001370: 4b26 ldr r3, [pc, #152] @ (800140c ) + 8001372: 685b ldr r3, [r3, #4] + 8001374: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001376: 68fb ldr r3, [r7, #12] + 8001378: 43db mvns r3, r3 + 800137a: 693a ldr r2, [r7, #16] + 800137c: 4013 ands r3, r2 + 800137e: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001380: 683b ldr r3, [r7, #0] + 8001382: 685b ldr r3, [r3, #4] + 8001384: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001388: 2b00 cmp r3, #0 + 800138a: d003 beq.n 8001394 + { + SET_BIT(temp, iocurrent); + 800138c: 693a ldr r2, [r7, #16] + 800138e: 68fb ldr r3, [r7, #12] + 8001390: 4313 orrs r3, r2 + 8001392: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8001394: 4a1d ldr r2, [pc, #116] @ (800140c ) + 8001396: 693b ldr r3, [r7, #16] + 8001398: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 800139a: 4b1c ldr r3, [pc, #112] @ (800140c ) + 800139c: 681b ldr r3, [r3, #0] + 800139e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80013a0: 68fb ldr r3, [r7, #12] + 80013a2: 43db mvns r3, r3 + 80013a4: 693a ldr r2, [r7, #16] + 80013a6: 4013 ands r3, r2 + 80013a8: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 80013aa: 683b ldr r3, [r7, #0] + 80013ac: 685b ldr r3, [r3, #4] + 80013ae: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80013b2: 2b00 cmp r3, #0 + 80013b4: d003 beq.n 80013be + { + SET_BIT(temp, iocurrent); + 80013b6: 693a ldr r2, [r7, #16] + 80013b8: 68fb ldr r3, [r7, #12] + 80013ba: 4313 orrs r3, r2 + 80013bc: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 80013be: 4a13 ldr r2, [pc, #76] @ (800140c ) + 80013c0: 693b ldr r3, [r7, #16] + 80013c2: 6013 str r3, [r2, #0] + } + } + + position++; + 80013c4: 697b ldr r3, [r7, #20] + 80013c6: 3301 adds r3, #1 + 80013c8: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80013ca: 683b ldr r3, [r7, #0] + 80013cc: 681a ldr r2, [r3, #0] + 80013ce: 697b ldr r3, [r7, #20] + 80013d0: fa22 f303 lsr.w r3, r2, r3 + 80013d4: 2b00 cmp r3, #0 + 80013d6: f47f ae97 bne.w 8001108 + } +} + 80013da: bf00 nop + 80013dc: bf00 nop + 80013de: 371c adds r7, #28 + 80013e0: 46bd mov sp, r7 + 80013e2: bc80 pop {r7} + 80013e4: 4770 bx lr + 80013e6: bf00 nop + 80013e8: 40023800 .word 0x40023800 + 80013ec: 40010000 .word 0x40010000 + 80013f0: 40020000 .word 0x40020000 + 80013f4: 40020400 .word 0x40020400 + 80013f8: 40020800 .word 0x40020800 + 80013fc: 40020c00 .word 0x40020c00 + 8001400: 40021000 .word 0x40021000 + 8001404: 40021400 .word 0x40021400 + 8001408: 40021800 .word 0x40021800 + 800140c: 40010400 .word 0x40010400 + +08001410 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 8001410: b480 push {r7} + 8001412: b083 sub sp, #12 + 8001414: af00 add r7, sp, #0 + 8001416: 6078 str r0, [r7, #4] + 8001418: 460b mov r3, r1 + 800141a: 807b strh r3, [r7, #2] + 800141c: 4613 mov r3, r2 + 800141e: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8001420: 787b ldrb r3, [r7, #1] + 8001422: 2b00 cmp r3, #0 + 8001424: d003 beq.n 800142e + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001426: 887a ldrh r2, [r7, #2] + 8001428: 687b ldr r3, [r7, #4] + 800142a: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 800142c: e003 b.n 8001436 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 800142e: 887b ldrh r3, [r7, #2] + 8001430: 041a lsls r2, r3, #16 + 8001432: 687b ldr r3, [r7, #4] + 8001434: 619a str r2, [r3, #24] +} + 8001436: bf00 nop + 8001438: 370c adds r7, #12 + 800143a: 46bd mov sp, r7 + 800143c: bc80 pop {r7} + 800143e: 4770 bx lr + +08001440 : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 8001440: b580 push {r7, lr} + 8001442: b082 sub sp, #8 + 8001444: af00 add r7, sp, #0 + 8001446: 4603 mov r3, r0 + 8001448: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 800144a: 4b08 ldr r3, [pc, #32] @ (800146c ) + 800144c: 695a ldr r2, [r3, #20] + 800144e: 88fb ldrh r3, [r7, #6] + 8001450: 4013 ands r3, r2 + 8001452: 2b00 cmp r3, #0 + 8001454: d006 beq.n 8001464 + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 8001456: 4a05 ldr r2, [pc, #20] @ (800146c ) + 8001458: 88fb ldrh r3, [r7, #6] + 800145a: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 800145c: 88fb ldrh r3, [r7, #6] + 800145e: 4618 mov r0, r3 + 8001460: f000 f806 bl 8001470 + } +} + 8001464: bf00 nop + 8001466: 3708 adds r7, #8 + 8001468: 46bd mov sp, r7 + 800146a: bd80 pop {r7, pc} + 800146c: 40010400 .word 0x40010400 + +08001470 : + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 8001470: b480 push {r7} + 8001472: b083 sub sp, #12 + 8001474: af00 add r7, sp, #0 + 8001476: 4603 mov r3, r0 + 8001478: 80fb strh r3, [r7, #6] + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + 800147a: bf00 nop + 800147c: 370c adds r7, #12 + 800147e: 46bd mov sp, r7 + 8001480: bc80 pop {r7} + 8001482: 4770 bx lr + +08001484 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8001484: b580 push {r7, lr} + 8001486: b088 sub sp, #32 + 8001488: af00 add r7, sp, #0 + 800148a: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 800148c: 687b ldr r3, [r7, #4] + 800148e: 2b00 cmp r3, #0 + 8001490: d101 bne.n 8001496 + { + return HAL_ERROR; + 8001492: 2301 movs r3, #1 + 8001494: e31d b.n 8001ad2 + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8001496: 4b94 ldr r3, [pc, #592] @ (80016e8 ) + 8001498: 689b ldr r3, [r3, #8] + 800149a: f003 030c and.w r3, r3, #12 + 800149e: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 80014a0: 4b91 ldr r3, [pc, #580] @ (80016e8 ) + 80014a2: 689b ldr r3, [r3, #8] + 80014a4: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80014a8: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 80014aa: 687b ldr r3, [r7, #4] + 80014ac: 681b ldr r3, [r3, #0] + 80014ae: f003 0301 and.w r3, r3, #1 + 80014b2: 2b00 cmp r3, #0 + 80014b4: d07b beq.n 80015ae + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 80014b6: 69bb ldr r3, [r7, #24] + 80014b8: 2b08 cmp r3, #8 + 80014ba: d006 beq.n 80014ca + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 80014bc: 69bb ldr r3, [r7, #24] + 80014be: 2b0c cmp r3, #12 + 80014c0: d10f bne.n 80014e2 + 80014c2: 697b ldr r3, [r7, #20] + 80014c4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80014c8: d10b bne.n 80014e2 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80014ca: 4b87 ldr r3, [pc, #540] @ (80016e8 ) + 80014cc: 681b ldr r3, [r3, #0] + 80014ce: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80014d2: 2b00 cmp r3, #0 + 80014d4: d06a beq.n 80015ac + 80014d6: 687b ldr r3, [r7, #4] + 80014d8: 685b ldr r3, [r3, #4] + 80014da: 2b00 cmp r3, #0 + 80014dc: d166 bne.n 80015ac + { + return HAL_ERROR; + 80014de: 2301 movs r3, #1 + 80014e0: e2f7 b.n 8001ad2 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80014e2: 687b ldr r3, [r7, #4] + 80014e4: 685b ldr r3, [r3, #4] + 80014e6: 2b01 cmp r3, #1 + 80014e8: d106 bne.n 80014f8 + 80014ea: 4b7f ldr r3, [pc, #508] @ (80016e8 ) + 80014ec: 681b ldr r3, [r3, #0] + 80014ee: 4a7e ldr r2, [pc, #504] @ (80016e8 ) + 80014f0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80014f4: 6013 str r3, [r2, #0] + 80014f6: e02d b.n 8001554 + 80014f8: 687b ldr r3, [r7, #4] + 80014fa: 685b ldr r3, [r3, #4] + 80014fc: 2b00 cmp r3, #0 + 80014fe: d10c bne.n 800151a + 8001500: 4b79 ldr r3, [pc, #484] @ (80016e8 ) + 8001502: 681b ldr r3, [r3, #0] + 8001504: 4a78 ldr r2, [pc, #480] @ (80016e8 ) + 8001506: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800150a: 6013 str r3, [r2, #0] + 800150c: 4b76 ldr r3, [pc, #472] @ (80016e8 ) + 800150e: 681b ldr r3, [r3, #0] + 8001510: 4a75 ldr r2, [pc, #468] @ (80016e8 ) + 8001512: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001516: 6013 str r3, [r2, #0] + 8001518: e01c b.n 8001554 + 800151a: 687b ldr r3, [r7, #4] + 800151c: 685b ldr r3, [r3, #4] + 800151e: 2b05 cmp r3, #5 + 8001520: d10c bne.n 800153c + 8001522: 4b71 ldr r3, [pc, #452] @ (80016e8 ) + 8001524: 681b ldr r3, [r3, #0] + 8001526: 4a70 ldr r2, [pc, #448] @ (80016e8 ) + 8001528: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 800152c: 6013 str r3, [r2, #0] + 800152e: 4b6e ldr r3, [pc, #440] @ (80016e8 ) + 8001530: 681b ldr r3, [r3, #0] + 8001532: 4a6d ldr r2, [pc, #436] @ (80016e8 ) + 8001534: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001538: 6013 str r3, [r2, #0] + 800153a: e00b b.n 8001554 + 800153c: 4b6a ldr r3, [pc, #424] @ (80016e8 ) + 800153e: 681b ldr r3, [r3, #0] + 8001540: 4a69 ldr r2, [pc, #420] @ (80016e8 ) + 8001542: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001546: 6013 str r3, [r2, #0] + 8001548: 4b67 ldr r3, [pc, #412] @ (80016e8 ) + 800154a: 681b ldr r3, [r3, #0] + 800154c: 4a66 ldr r2, [pc, #408] @ (80016e8 ) + 800154e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001552: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8001554: 687b ldr r3, [r7, #4] + 8001556: 685b ldr r3, [r3, #4] + 8001558: 2b00 cmp r3, #0 + 800155a: d013 beq.n 8001584 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800155c: f7ff fcb0 bl 8000ec0 + 8001560: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001562: e008 b.n 8001576 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001564: f7ff fcac bl 8000ec0 + 8001568: 4602 mov r2, r0 + 800156a: 693b ldr r3, [r7, #16] + 800156c: 1ad3 subs r3, r2, r3 + 800156e: 2b64 cmp r3, #100 @ 0x64 + 8001570: d901 bls.n 8001576 + { + return HAL_TIMEOUT; + 8001572: 2303 movs r3, #3 + 8001574: e2ad b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001576: 4b5c ldr r3, [pc, #368] @ (80016e8 ) + 8001578: 681b ldr r3, [r3, #0] + 800157a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800157e: 2b00 cmp r3, #0 + 8001580: d0f0 beq.n 8001564 + 8001582: e014 b.n 80015ae + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001584: f7ff fc9c bl 8000ec0 + 8001588: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800158a: e008 b.n 800159e + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 800158c: f7ff fc98 bl 8000ec0 + 8001590: 4602 mov r2, r0 + 8001592: 693b ldr r3, [r7, #16] + 8001594: 1ad3 subs r3, r2, r3 + 8001596: 2b64 cmp r3, #100 @ 0x64 + 8001598: d901 bls.n 800159e + { + return HAL_TIMEOUT; + 800159a: 2303 movs r3, #3 + 800159c: e299 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800159e: 4b52 ldr r3, [pc, #328] @ (80016e8 ) + 80015a0: 681b ldr r3, [r3, #0] + 80015a2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80015a6: 2b00 cmp r3, #0 + 80015a8: d1f0 bne.n 800158c + 80015aa: e000 b.n 80015ae + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80015ac: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80015ae: 687b ldr r3, [r7, #4] + 80015b0: 681b ldr r3, [r3, #0] + 80015b2: f003 0302 and.w r3, r3, #2 + 80015b6: 2b00 cmp r3, #0 + 80015b8: d05a beq.n 8001670 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 80015ba: 69bb ldr r3, [r7, #24] + 80015bc: 2b04 cmp r3, #4 + 80015be: d005 beq.n 80015cc + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 80015c0: 69bb ldr r3, [r7, #24] + 80015c2: 2b0c cmp r3, #12 + 80015c4: d119 bne.n 80015fa + 80015c6: 697b ldr r3, [r7, #20] + 80015c8: 2b00 cmp r3, #0 + 80015ca: d116 bne.n 80015fa + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80015cc: 4b46 ldr r3, [pc, #280] @ (80016e8 ) + 80015ce: 681b ldr r3, [r3, #0] + 80015d0: f003 0302 and.w r3, r3, #2 + 80015d4: 2b00 cmp r3, #0 + 80015d6: d005 beq.n 80015e4 + 80015d8: 687b ldr r3, [r7, #4] + 80015da: 68db ldr r3, [r3, #12] + 80015dc: 2b01 cmp r3, #1 + 80015de: d001 beq.n 80015e4 + { + return HAL_ERROR; + 80015e0: 2301 movs r3, #1 + 80015e2: e276 b.n 8001ad2 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80015e4: 4b40 ldr r3, [pc, #256] @ (80016e8 ) + 80015e6: 685b ldr r3, [r3, #4] + 80015e8: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80015ec: 687b ldr r3, [r7, #4] + 80015ee: 691b ldr r3, [r3, #16] + 80015f0: 021b lsls r3, r3, #8 + 80015f2: 493d ldr r1, [pc, #244] @ (80016e8 ) + 80015f4: 4313 orrs r3, r2 + 80015f6: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80015f8: e03a b.n 8001670 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 80015fa: 687b ldr r3, [r7, #4] + 80015fc: 68db ldr r3, [r3, #12] + 80015fe: 2b00 cmp r3, #0 + 8001600: d020 beq.n 8001644 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 8001602: 4b3a ldr r3, [pc, #232] @ (80016ec ) + 8001604: 2201 movs r2, #1 + 8001606: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001608: f7ff fc5a bl 8000ec0 + 800160c: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800160e: e008 b.n 8001622 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001610: f7ff fc56 bl 8000ec0 + 8001614: 4602 mov r2, r0 + 8001616: 693b ldr r3, [r7, #16] + 8001618: 1ad3 subs r3, r2, r3 + 800161a: 2b02 cmp r3, #2 + 800161c: d901 bls.n 8001622 + { + return HAL_TIMEOUT; + 800161e: 2303 movs r3, #3 + 8001620: e257 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001622: 4b31 ldr r3, [pc, #196] @ (80016e8 ) + 8001624: 681b ldr r3, [r3, #0] + 8001626: f003 0302 and.w r3, r3, #2 + 800162a: 2b00 cmp r3, #0 + 800162c: d0f0 beq.n 8001610 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800162e: 4b2e ldr r3, [pc, #184] @ (80016e8 ) + 8001630: 685b ldr r3, [r3, #4] + 8001632: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001636: 687b ldr r3, [r7, #4] + 8001638: 691b ldr r3, [r3, #16] + 800163a: 021b lsls r3, r3, #8 + 800163c: 492a ldr r1, [pc, #168] @ (80016e8 ) + 800163e: 4313 orrs r3, r2 + 8001640: 604b str r3, [r1, #4] + 8001642: e015 b.n 8001670 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8001644: 4b29 ldr r3, [pc, #164] @ (80016ec ) + 8001646: 2200 movs r2, #0 + 8001648: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800164a: f7ff fc39 bl 8000ec0 + 800164e: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001650: e008 b.n 8001664 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001652: f7ff fc35 bl 8000ec0 + 8001656: 4602 mov r2, r0 + 8001658: 693b ldr r3, [r7, #16] + 800165a: 1ad3 subs r3, r2, r3 + 800165c: 2b02 cmp r3, #2 + 800165e: d901 bls.n 8001664 + { + return HAL_TIMEOUT; + 8001660: 2303 movs r3, #3 + 8001662: e236 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001664: 4b20 ldr r3, [pc, #128] @ (80016e8 ) + 8001666: 681b ldr r3, [r3, #0] + 8001668: f003 0302 and.w r3, r3, #2 + 800166c: 2b00 cmp r3, #0 + 800166e: d1f0 bne.n 8001652 + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 8001670: 687b ldr r3, [r7, #4] + 8001672: 681b ldr r3, [r3, #0] + 8001674: f003 0310 and.w r3, r3, #16 + 8001678: 2b00 cmp r3, #0 + 800167a: f000 80b8 beq.w 80017ee + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 800167e: 69bb ldr r3, [r7, #24] + 8001680: 2b00 cmp r3, #0 + 8001682: d170 bne.n 8001766 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 8001684: 4b18 ldr r3, [pc, #96] @ (80016e8 ) + 8001686: 681b ldr r3, [r3, #0] + 8001688: f403 7300 and.w r3, r3, #512 @ 0x200 + 800168c: 2b00 cmp r3, #0 + 800168e: d005 beq.n 800169c + 8001690: 687b ldr r3, [r7, #4] + 8001692: 699b ldr r3, [r3, #24] + 8001694: 2b00 cmp r3, #0 + 8001696: d101 bne.n 800169c + { + return HAL_ERROR; + 8001698: 2301 movs r3, #1 + 800169a: e21a b.n 8001ad2 + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 800169c: 687b ldr r3, [r7, #4] + 800169e: 6a1a ldr r2, [r3, #32] + 80016a0: 4b11 ldr r3, [pc, #68] @ (80016e8 ) + 80016a2: 685b ldr r3, [r3, #4] + 80016a4: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80016a8: 429a cmp r2, r3 + 80016aa: d921 bls.n 80016f0 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80016ac: 687b ldr r3, [r7, #4] + 80016ae: 6a1b ldr r3, [r3, #32] + 80016b0: 4618 mov r0, r3 + 80016b2: f000 fc09 bl 8001ec8 + 80016b6: 4603 mov r3, r0 + 80016b8: 2b00 cmp r3, #0 + 80016ba: d001 beq.n 80016c0 + { + return HAL_ERROR; + 80016bc: 2301 movs r3, #1 + 80016be: e208 b.n 8001ad2 + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80016c0: 4b09 ldr r3, [pc, #36] @ (80016e8 ) + 80016c2: 685b ldr r3, [r3, #4] + 80016c4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80016c8: 687b ldr r3, [r7, #4] + 80016ca: 6a1b ldr r3, [r3, #32] + 80016cc: 4906 ldr r1, [pc, #24] @ (80016e8 ) + 80016ce: 4313 orrs r3, r2 + 80016d0: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80016d2: 4b05 ldr r3, [pc, #20] @ (80016e8 ) + 80016d4: 685b ldr r3, [r3, #4] + 80016d6: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80016da: 687b ldr r3, [r7, #4] + 80016dc: 69db ldr r3, [r3, #28] + 80016de: 061b lsls r3, r3, #24 + 80016e0: 4901 ldr r1, [pc, #4] @ (80016e8 ) + 80016e2: 4313 orrs r3, r2 + 80016e4: 604b str r3, [r1, #4] + 80016e6: e020 b.n 800172a + 80016e8: 40023800 .word 0x40023800 + 80016ec: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80016f0: 4b99 ldr r3, [pc, #612] @ (8001958 ) + 80016f2: 685b ldr r3, [r3, #4] + 80016f4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80016f8: 687b ldr r3, [r7, #4] + 80016fa: 6a1b ldr r3, [r3, #32] + 80016fc: 4996 ldr r1, [pc, #600] @ (8001958 ) + 80016fe: 4313 orrs r3, r2 + 8001700: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001702: 4b95 ldr r3, [pc, #596] @ (8001958 ) + 8001704: 685b ldr r3, [r3, #4] + 8001706: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 800170a: 687b ldr r3, [r7, #4] + 800170c: 69db ldr r3, [r3, #28] + 800170e: 061b lsls r3, r3, #24 + 8001710: 4991 ldr r1, [pc, #580] @ (8001958 ) + 8001712: 4313 orrs r3, r2 + 8001714: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001716: 687b ldr r3, [r7, #4] + 8001718: 6a1b ldr r3, [r3, #32] + 800171a: 4618 mov r0, r3 + 800171c: f000 fbd4 bl 8001ec8 + 8001720: 4603 mov r3, r0 + 8001722: 2b00 cmp r3, #0 + 8001724: d001 beq.n 800172a + { + return HAL_ERROR; + 8001726: 2301 movs r3, #1 + 8001728: e1d3 b.n 8001ad2 + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800172a: 687b ldr r3, [r7, #4] + 800172c: 6a1b ldr r3, [r3, #32] + 800172e: 0b5b lsrs r3, r3, #13 + 8001730: 3301 adds r3, #1 + 8001732: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001736: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 800173a: 4a87 ldr r2, [pc, #540] @ (8001958 ) + 800173c: 6892 ldr r2, [r2, #8] + 800173e: 0912 lsrs r2, r2, #4 + 8001740: f002 020f and.w r2, r2, #15 + 8001744: 4985 ldr r1, [pc, #532] @ (800195c ) + 8001746: 5c8a ldrb r2, [r1, r2] + 8001748: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800174a: 4a85 ldr r2, [pc, #532] @ (8001960 ) + 800174c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 800174e: 4b85 ldr r3, [pc, #532] @ (8001964 ) + 8001750: 681b ldr r3, [r3, #0] + 8001752: 4618 mov r0, r3 + 8001754: f7ff fb68 bl 8000e28 + 8001758: 4603 mov r3, r0 + 800175a: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 800175c: 7bfb ldrb r3, [r7, #15] + 800175e: 2b00 cmp r3, #0 + 8001760: d045 beq.n 80017ee + { + return status; + 8001762: 7bfb ldrb r3, [r7, #15] + 8001764: e1b5 b.n 8001ad2 + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8001766: 687b ldr r3, [r7, #4] + 8001768: 699b ldr r3, [r3, #24] + 800176a: 2b00 cmp r3, #0 + 800176c: d029 beq.n 80017c2 + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 800176e: 4b7e ldr r3, [pc, #504] @ (8001968 ) + 8001770: 2201 movs r2, #1 + 8001772: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001774: f7ff fba4 bl 8000ec0 + 8001778: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800177a: e008 b.n 800178e + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 800177c: f7ff fba0 bl 8000ec0 + 8001780: 4602 mov r2, r0 + 8001782: 693b ldr r3, [r7, #16] + 8001784: 1ad3 subs r3, r2, r3 + 8001786: 2b02 cmp r3, #2 + 8001788: d901 bls.n 800178e + { + return HAL_TIMEOUT; + 800178a: 2303 movs r3, #3 + 800178c: e1a1 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800178e: 4b72 ldr r3, [pc, #456] @ (8001958 ) + 8001790: 681b ldr r3, [r3, #0] + 8001792: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001796: 2b00 cmp r3, #0 + 8001798: d0f0 beq.n 800177c + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800179a: 4b6f ldr r3, [pc, #444] @ (8001958 ) + 800179c: 685b ldr r3, [r3, #4] + 800179e: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80017a2: 687b ldr r3, [r7, #4] + 80017a4: 6a1b ldr r3, [r3, #32] + 80017a6: 496c ldr r1, [pc, #432] @ (8001958 ) + 80017a8: 4313 orrs r3, r2 + 80017aa: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80017ac: 4b6a ldr r3, [pc, #424] @ (8001958 ) + 80017ae: 685b ldr r3, [r3, #4] + 80017b0: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80017b4: 687b ldr r3, [r7, #4] + 80017b6: 69db ldr r3, [r3, #28] + 80017b8: 061b lsls r3, r3, #24 + 80017ba: 4967 ldr r1, [pc, #412] @ (8001958 ) + 80017bc: 4313 orrs r3, r2 + 80017be: 604b str r3, [r1, #4] + 80017c0: e015 b.n 80017ee + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 80017c2: 4b69 ldr r3, [pc, #420] @ (8001968 ) + 80017c4: 2200 movs r2, #0 + 80017c6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80017c8: f7ff fb7a bl 8000ec0 + 80017cc: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80017ce: e008 b.n 80017e2 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80017d0: f7ff fb76 bl 8000ec0 + 80017d4: 4602 mov r2, r0 + 80017d6: 693b ldr r3, [r7, #16] + 80017d8: 1ad3 subs r3, r2, r3 + 80017da: 2b02 cmp r3, #2 + 80017dc: d901 bls.n 80017e2 + { + return HAL_TIMEOUT; + 80017de: 2303 movs r3, #3 + 80017e0: e177 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80017e2: 4b5d ldr r3, [pc, #372] @ (8001958 ) + 80017e4: 681b ldr r3, [r3, #0] + 80017e6: f403 7300 and.w r3, r3, #512 @ 0x200 + 80017ea: 2b00 cmp r3, #0 + 80017ec: d1f0 bne.n 80017d0 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 80017ee: 687b ldr r3, [r7, #4] + 80017f0: 681b ldr r3, [r3, #0] + 80017f2: f003 0308 and.w r3, r3, #8 + 80017f6: 2b00 cmp r3, #0 + 80017f8: d030 beq.n 800185c + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 80017fa: 687b ldr r3, [r7, #4] + 80017fc: 695b ldr r3, [r3, #20] + 80017fe: 2b00 cmp r3, #0 + 8001800: d016 beq.n 8001830 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8001802: 4b5a ldr r3, [pc, #360] @ (800196c ) + 8001804: 2201 movs r2, #1 + 8001806: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001808: f7ff fb5a bl 8000ec0 + 800180c: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800180e: e008 b.n 8001822 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001810: f7ff fb56 bl 8000ec0 + 8001814: 4602 mov r2, r0 + 8001816: 693b ldr r3, [r7, #16] + 8001818: 1ad3 subs r3, r2, r3 + 800181a: 2b02 cmp r3, #2 + 800181c: d901 bls.n 8001822 + { + return HAL_TIMEOUT; + 800181e: 2303 movs r3, #3 + 8001820: e157 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001822: 4b4d ldr r3, [pc, #308] @ (8001958 ) + 8001824: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001826: f003 0302 and.w r3, r3, #2 + 800182a: 2b00 cmp r3, #0 + 800182c: d0f0 beq.n 8001810 + 800182e: e015 b.n 800185c + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001830: 4b4e ldr r3, [pc, #312] @ (800196c ) + 8001832: 2200 movs r2, #0 + 8001834: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001836: f7ff fb43 bl 8000ec0 + 800183a: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 800183c: e008 b.n 8001850 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800183e: f7ff fb3f bl 8000ec0 + 8001842: 4602 mov r2, r0 + 8001844: 693b ldr r3, [r7, #16] + 8001846: 1ad3 subs r3, r2, r3 + 8001848: 2b02 cmp r3, #2 + 800184a: d901 bls.n 8001850 + { + return HAL_TIMEOUT; + 800184c: 2303 movs r3, #3 + 800184e: e140 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001850: 4b41 ldr r3, [pc, #260] @ (8001958 ) + 8001852: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001854: f003 0302 and.w r3, r3, #2 + 8001858: 2b00 cmp r3, #0 + 800185a: d1f0 bne.n 800183e + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 800185c: 687b ldr r3, [r7, #4] + 800185e: 681b ldr r3, [r3, #0] + 8001860: f003 0304 and.w r3, r3, #4 + 8001864: 2b00 cmp r3, #0 + 8001866: f000 80b5 beq.w 80019d4 + { + FlagStatus pwrclkchanged = RESET; + 800186a: 2300 movs r3, #0 + 800186c: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 800186e: 4b3a ldr r3, [pc, #232] @ (8001958 ) + 8001870: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001872: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001876: 2b00 cmp r3, #0 + 8001878: d10d bne.n 8001896 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 800187a: 4b37 ldr r3, [pc, #220] @ (8001958 ) + 800187c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800187e: 4a36 ldr r2, [pc, #216] @ (8001958 ) + 8001880: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001884: 6253 str r3, [r2, #36] @ 0x24 + 8001886: 4b34 ldr r3, [pc, #208] @ (8001958 ) + 8001888: 6a5b ldr r3, [r3, #36] @ 0x24 + 800188a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800188e: 60bb str r3, [r7, #8] + 8001890: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8001892: 2301 movs r3, #1 + 8001894: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001896: 4b36 ldr r3, [pc, #216] @ (8001970 ) + 8001898: 681b ldr r3, [r3, #0] + 800189a: f403 7380 and.w r3, r3, #256 @ 0x100 + 800189e: 2b00 cmp r3, #0 + 80018a0: d118 bne.n 80018d4 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80018a2: 4b33 ldr r3, [pc, #204] @ (8001970 ) + 80018a4: 681b ldr r3, [r3, #0] + 80018a6: 4a32 ldr r2, [pc, #200] @ (8001970 ) + 80018a8: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80018ac: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80018ae: f7ff fb07 bl 8000ec0 + 80018b2: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80018b4: e008 b.n 80018c8 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80018b6: f7ff fb03 bl 8000ec0 + 80018ba: 4602 mov r2, r0 + 80018bc: 693b ldr r3, [r7, #16] + 80018be: 1ad3 subs r3, r2, r3 + 80018c0: 2b64 cmp r3, #100 @ 0x64 + 80018c2: d901 bls.n 80018c8 + { + return HAL_TIMEOUT; + 80018c4: 2303 movs r3, #3 + 80018c6: e104 b.n 8001ad2 + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80018c8: 4b29 ldr r3, [pc, #164] @ (8001970 ) + 80018ca: 681b ldr r3, [r3, #0] + 80018cc: f403 7380 and.w r3, r3, #256 @ 0x100 + 80018d0: 2b00 cmp r3, #0 + 80018d2: d0f0 beq.n 80018b6 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 80018d4: 687b ldr r3, [r7, #4] + 80018d6: 689b ldr r3, [r3, #8] + 80018d8: 2b01 cmp r3, #1 + 80018da: d106 bne.n 80018ea + 80018dc: 4b1e ldr r3, [pc, #120] @ (8001958 ) + 80018de: 6b5b ldr r3, [r3, #52] @ 0x34 + 80018e0: 4a1d ldr r2, [pc, #116] @ (8001958 ) + 80018e2: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80018e6: 6353 str r3, [r2, #52] @ 0x34 + 80018e8: e02d b.n 8001946 + 80018ea: 687b ldr r3, [r7, #4] + 80018ec: 689b ldr r3, [r3, #8] + 80018ee: 2b00 cmp r3, #0 + 80018f0: d10c bne.n 800190c + 80018f2: 4b19 ldr r3, [pc, #100] @ (8001958 ) + 80018f4: 6b5b ldr r3, [r3, #52] @ 0x34 + 80018f6: 4a18 ldr r2, [pc, #96] @ (8001958 ) + 80018f8: f423 7380 bic.w r3, r3, #256 @ 0x100 + 80018fc: 6353 str r3, [r2, #52] @ 0x34 + 80018fe: 4b16 ldr r3, [pc, #88] @ (8001958 ) + 8001900: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001902: 4a15 ldr r2, [pc, #84] @ (8001958 ) + 8001904: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001908: 6353 str r3, [r2, #52] @ 0x34 + 800190a: e01c b.n 8001946 + 800190c: 687b ldr r3, [r7, #4] + 800190e: 689b ldr r3, [r3, #8] + 8001910: 2b05 cmp r3, #5 + 8001912: d10c bne.n 800192e + 8001914: 4b10 ldr r3, [pc, #64] @ (8001958 ) + 8001916: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001918: 4a0f ldr r2, [pc, #60] @ (8001958 ) + 800191a: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 800191e: 6353 str r3, [r2, #52] @ 0x34 + 8001920: 4b0d ldr r3, [pc, #52] @ (8001958 ) + 8001922: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001924: 4a0c ldr r2, [pc, #48] @ (8001958 ) + 8001926: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800192a: 6353 str r3, [r2, #52] @ 0x34 + 800192c: e00b b.n 8001946 + 800192e: 4b0a ldr r3, [pc, #40] @ (8001958 ) + 8001930: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001932: 4a09 ldr r2, [pc, #36] @ (8001958 ) + 8001934: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001938: 6353 str r3, [r2, #52] @ 0x34 + 800193a: 4b07 ldr r3, [pc, #28] @ (8001958 ) + 800193c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800193e: 4a06 ldr r2, [pc, #24] @ (8001958 ) + 8001940: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001944: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8001946: 687b ldr r3, [r7, #4] + 8001948: 689b ldr r3, [r3, #8] + 800194a: 2b00 cmp r3, #0 + 800194c: d024 beq.n 8001998 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800194e: f7ff fab7 bl 8000ec0 + 8001952: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001954: e019 b.n 800198a + 8001956: bf00 nop + 8001958: 40023800 .word 0x40023800 + 800195c: 08003234 .word 0x08003234 + 8001960: 20000004 .word 0x20000004 + 8001964: 20000008 .word 0x20000008 + 8001968: 42470020 .word 0x42470020 + 800196c: 42470680 .word 0x42470680 + 8001970: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001974: f7ff faa4 bl 8000ec0 + 8001978: 4602 mov r2, r0 + 800197a: 693b ldr r3, [r7, #16] + 800197c: 1ad3 subs r3, r2, r3 + 800197e: f241 3288 movw r2, #5000 @ 0x1388 + 8001982: 4293 cmp r3, r2 + 8001984: d901 bls.n 800198a + { + return HAL_TIMEOUT; + 8001986: 2303 movs r3, #3 + 8001988: e0a3 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 800198a: 4b54 ldr r3, [pc, #336] @ (8001adc ) + 800198c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800198e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001992: 2b00 cmp r3, #0 + 8001994: d0ee beq.n 8001974 + 8001996: e014 b.n 80019c2 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001998: f7ff fa92 bl 8000ec0 + 800199c: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 800199e: e00a b.n 80019b6 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80019a0: f7ff fa8e bl 8000ec0 + 80019a4: 4602 mov r2, r0 + 80019a6: 693b ldr r3, [r7, #16] + 80019a8: 1ad3 subs r3, r2, r3 + 80019aa: f241 3288 movw r2, #5000 @ 0x1388 + 80019ae: 4293 cmp r3, r2 + 80019b0: d901 bls.n 80019b6 + { + return HAL_TIMEOUT; + 80019b2: 2303 movs r3, #3 + 80019b4: e08d b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80019b6: 4b49 ldr r3, [pc, #292] @ (8001adc ) + 80019b8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80019ba: f403 7300 and.w r3, r3, #512 @ 0x200 + 80019be: 2b00 cmp r3, #0 + 80019c0: d1ee bne.n 80019a0 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 80019c2: 7ffb ldrb r3, [r7, #31] + 80019c4: 2b01 cmp r3, #1 + 80019c6: d105 bne.n 80019d4 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80019c8: 4b44 ldr r3, [pc, #272] @ (8001adc ) + 80019ca: 6a5b ldr r3, [r3, #36] @ 0x24 + 80019cc: 4a43 ldr r2, [pc, #268] @ (8001adc ) + 80019ce: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80019d2: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80019d4: 687b ldr r3, [r7, #4] + 80019d6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80019d8: 2b00 cmp r3, #0 + 80019da: d079 beq.n 8001ad0 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80019dc: 69bb ldr r3, [r7, #24] + 80019de: 2b0c cmp r3, #12 + 80019e0: d056 beq.n 8001a90 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 80019e2: 687b ldr r3, [r7, #4] + 80019e4: 6a5b ldr r3, [r3, #36] @ 0x24 + 80019e6: 2b02 cmp r3, #2 + 80019e8: d13b bne.n 8001a62 + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80019ea: 4b3d ldr r3, [pc, #244] @ (8001ae0 ) + 80019ec: 2200 movs r2, #0 + 80019ee: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80019f0: f7ff fa66 bl 8000ec0 + 80019f4: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80019f6: e008 b.n 8001a0a + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80019f8: f7ff fa62 bl 8000ec0 + 80019fc: 4602 mov r2, r0 + 80019fe: 693b ldr r3, [r7, #16] + 8001a00: 1ad3 subs r3, r2, r3 + 8001a02: 2b02 cmp r3, #2 + 8001a04: d901 bls.n 8001a0a + { + return HAL_TIMEOUT; + 8001a06: 2303 movs r3, #3 + 8001a08: e063 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001a0a: 4b34 ldr r3, [pc, #208] @ (8001adc ) + 8001a0c: 681b ldr r3, [r3, #0] + 8001a0e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001a12: 2b00 cmp r3, #0 + 8001a14: d1f0 bne.n 80019f8 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8001a16: 4b31 ldr r3, [pc, #196] @ (8001adc ) + 8001a18: 689b ldr r3, [r3, #8] + 8001a1a: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 8001a1e: 687b ldr r3, [r7, #4] + 8001a20: 6a99 ldr r1, [r3, #40] @ 0x28 + 8001a22: 687b ldr r3, [r7, #4] + 8001a24: 6adb ldr r3, [r3, #44] @ 0x2c + 8001a26: 4319 orrs r1, r3 + 8001a28: 687b ldr r3, [r7, #4] + 8001a2a: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001a2c: 430b orrs r3, r1 + 8001a2e: 492b ldr r1, [pc, #172] @ (8001adc ) + 8001a30: 4313 orrs r3, r2 + 8001a32: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8001a34: 4b2a ldr r3, [pc, #168] @ (8001ae0 ) + 8001a36: 2201 movs r2, #1 + 8001a38: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001a3a: f7ff fa41 bl 8000ec0 + 8001a3e: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001a40: e008 b.n 8001a54 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001a42: f7ff fa3d bl 8000ec0 + 8001a46: 4602 mov r2, r0 + 8001a48: 693b ldr r3, [r7, #16] + 8001a4a: 1ad3 subs r3, r2, r3 + 8001a4c: 2b02 cmp r3, #2 + 8001a4e: d901 bls.n 8001a54 + { + return HAL_TIMEOUT; + 8001a50: 2303 movs r3, #3 + 8001a52: e03e b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001a54: 4b21 ldr r3, [pc, #132] @ (8001adc ) + 8001a56: 681b ldr r3, [r3, #0] + 8001a58: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001a5c: 2b00 cmp r3, #0 + 8001a5e: d0f0 beq.n 8001a42 + 8001a60: e036 b.n 8001ad0 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001a62: 4b1f ldr r3, [pc, #124] @ (8001ae0 ) + 8001a64: 2200 movs r2, #0 + 8001a66: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001a68: f7ff fa2a bl 8000ec0 + 8001a6c: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001a6e: e008 b.n 8001a82 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001a70: f7ff fa26 bl 8000ec0 + 8001a74: 4602 mov r2, r0 + 8001a76: 693b ldr r3, [r7, #16] + 8001a78: 1ad3 subs r3, r2, r3 + 8001a7a: 2b02 cmp r3, #2 + 8001a7c: d901 bls.n 8001a82 + { + return HAL_TIMEOUT; + 8001a7e: 2303 movs r3, #3 + 8001a80: e027 b.n 8001ad2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001a82: 4b16 ldr r3, [pc, #88] @ (8001adc ) + 8001a84: 681b ldr r3, [r3, #0] + 8001a86: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001a8a: 2b00 cmp r3, #0 + 8001a8c: d1f0 bne.n 8001a70 + 8001a8e: e01f b.n 8001ad0 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8001a90: 687b ldr r3, [r7, #4] + 8001a92: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001a94: 2b01 cmp r3, #1 + 8001a96: d101 bne.n 8001a9c + { + return HAL_ERROR; + 8001a98: 2301 movs r3, #1 + 8001a9a: e01a b.n 8001ad2 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8001a9c: 4b0f ldr r3, [pc, #60] @ (8001adc ) + 8001a9e: 689b ldr r3, [r3, #8] + 8001aa0: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8001aa2: 697b ldr r3, [r7, #20] + 8001aa4: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8001aa8: 687b ldr r3, [r7, #4] + 8001aaa: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001aac: 429a cmp r2, r3 + 8001aae: d10d bne.n 8001acc + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001ab0: 697b ldr r3, [r7, #20] + 8001ab2: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8001ab6: 687b ldr r3, [r7, #4] + 8001ab8: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8001aba: 429a cmp r2, r3 + 8001abc: d106 bne.n 8001acc + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 8001abe: 697b ldr r3, [r7, #20] + 8001ac0: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 8001ac4: 687b ldr r3, [r7, #4] + 8001ac6: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001ac8: 429a cmp r2, r3 + 8001aca: d001 beq.n 8001ad0 + { + return HAL_ERROR; + 8001acc: 2301 movs r3, #1 + 8001ace: e000 b.n 8001ad2 + } + } + } + } + + return HAL_OK; + 8001ad0: 2300 movs r3, #0 +} + 8001ad2: 4618 mov r0, r3 + 8001ad4: 3720 adds r7, #32 + 8001ad6: 46bd mov sp, r7 + 8001ad8: bd80 pop {r7, pc} + 8001ada: bf00 nop + 8001adc: 40023800 .word 0x40023800 + 8001ae0: 42470060 .word 0x42470060 + +08001ae4 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 8001ae4: b580 push {r7, lr} + 8001ae6: b084 sub sp, #16 + 8001ae8: af00 add r7, sp, #0 + 8001aea: 6078 str r0, [r7, #4] + 8001aec: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 8001aee: 687b ldr r3, [r7, #4] + 8001af0: 2b00 cmp r3, #0 + 8001af2: d101 bne.n 8001af8 + { + return HAL_ERROR; + 8001af4: 2301 movs r3, #1 + 8001af6: e11a b.n 8001d2e + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001af8: 4b8f ldr r3, [pc, #572] @ (8001d38 ) + 8001afa: 681b ldr r3, [r3, #0] + 8001afc: f003 0301 and.w r3, r3, #1 + 8001b00: 683a ldr r2, [r7, #0] + 8001b02: 429a cmp r2, r3 + 8001b04: d919 bls.n 8001b3a + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001b06: 683b ldr r3, [r7, #0] + 8001b08: 2b01 cmp r3, #1 + 8001b0a: d105 bne.n 8001b18 + 8001b0c: 4b8a ldr r3, [pc, #552] @ (8001d38 ) + 8001b0e: 681b ldr r3, [r3, #0] + 8001b10: 4a89 ldr r2, [pc, #548] @ (8001d38 ) + 8001b12: f043 0304 orr.w r3, r3, #4 + 8001b16: 6013 str r3, [r2, #0] + 8001b18: 4b87 ldr r3, [pc, #540] @ (8001d38 ) + 8001b1a: 681b ldr r3, [r3, #0] + 8001b1c: f023 0201 bic.w r2, r3, #1 + 8001b20: 4985 ldr r1, [pc, #532] @ (8001d38 ) + 8001b22: 683b ldr r3, [r7, #0] + 8001b24: 4313 orrs r3, r2 + 8001b26: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001b28: 4b83 ldr r3, [pc, #524] @ (8001d38 ) + 8001b2a: 681b ldr r3, [r3, #0] + 8001b2c: f003 0301 and.w r3, r3, #1 + 8001b30: 683a ldr r2, [r7, #0] + 8001b32: 429a cmp r2, r3 + 8001b34: d001 beq.n 8001b3a + { + return HAL_ERROR; + 8001b36: 2301 movs r3, #1 + 8001b38: e0f9 b.n 8001d2e + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001b3a: 687b ldr r3, [r7, #4] + 8001b3c: 681b ldr r3, [r3, #0] + 8001b3e: f003 0302 and.w r3, r3, #2 + 8001b42: 2b00 cmp r3, #0 + 8001b44: d008 beq.n 8001b58 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8001b46: 4b7d ldr r3, [pc, #500] @ (8001d3c ) + 8001b48: 689b ldr r3, [r3, #8] + 8001b4a: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001b4e: 687b ldr r3, [r7, #4] + 8001b50: 689b ldr r3, [r3, #8] + 8001b52: 497a ldr r1, [pc, #488] @ (8001d3c ) + 8001b54: 4313 orrs r3, r2 + 8001b56: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001b58: 687b ldr r3, [r7, #4] + 8001b5a: 681b ldr r3, [r3, #0] + 8001b5c: f003 0301 and.w r3, r3, #1 + 8001b60: 2b00 cmp r3, #0 + 8001b62: f000 808e beq.w 8001c82 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001b66: 687b ldr r3, [r7, #4] + 8001b68: 685b ldr r3, [r3, #4] + 8001b6a: 2b02 cmp r3, #2 + 8001b6c: d107 bne.n 8001b7e + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001b6e: 4b73 ldr r3, [pc, #460] @ (8001d3c ) + 8001b70: 681b ldr r3, [r3, #0] + 8001b72: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001b76: 2b00 cmp r3, #0 + 8001b78: d121 bne.n 8001bbe + { + return HAL_ERROR; + 8001b7a: 2301 movs r3, #1 + 8001b7c: e0d7 b.n 8001d2e + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001b7e: 687b ldr r3, [r7, #4] + 8001b80: 685b ldr r3, [r3, #4] + 8001b82: 2b03 cmp r3, #3 + 8001b84: d107 bne.n 8001b96 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001b86: 4b6d ldr r3, [pc, #436] @ (8001d3c ) + 8001b88: 681b ldr r3, [r3, #0] + 8001b8a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001b8e: 2b00 cmp r3, #0 + 8001b90: d115 bne.n 8001bbe + { + return HAL_ERROR; + 8001b92: 2301 movs r3, #1 + 8001b94: e0cb b.n 8001d2e + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001b96: 687b ldr r3, [r7, #4] + 8001b98: 685b ldr r3, [r3, #4] + 8001b9a: 2b01 cmp r3, #1 + 8001b9c: d107 bne.n 8001bae + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001b9e: 4b67 ldr r3, [pc, #412] @ (8001d3c ) + 8001ba0: 681b ldr r3, [r3, #0] + 8001ba2: f003 0302 and.w r3, r3, #2 + 8001ba6: 2b00 cmp r3, #0 + 8001ba8: d109 bne.n 8001bbe + { + return HAL_ERROR; + 8001baa: 2301 movs r3, #1 + 8001bac: e0bf b.n 8001d2e + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001bae: 4b63 ldr r3, [pc, #396] @ (8001d3c ) + 8001bb0: 681b ldr r3, [r3, #0] + 8001bb2: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001bb6: 2b00 cmp r3, #0 + 8001bb8: d101 bne.n 8001bbe + { + return HAL_ERROR; + 8001bba: 2301 movs r3, #1 + 8001bbc: e0b7 b.n 8001d2e + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8001bbe: 4b5f ldr r3, [pc, #380] @ (8001d3c ) + 8001bc0: 689b ldr r3, [r3, #8] + 8001bc2: f023 0203 bic.w r2, r3, #3 + 8001bc6: 687b ldr r3, [r7, #4] + 8001bc8: 685b ldr r3, [r3, #4] + 8001bca: 495c ldr r1, [pc, #368] @ (8001d3c ) + 8001bcc: 4313 orrs r3, r2 + 8001bce: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001bd0: f7ff f976 bl 8000ec0 + 8001bd4: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001bd6: 687b ldr r3, [r7, #4] + 8001bd8: 685b ldr r3, [r3, #4] + 8001bda: 2b02 cmp r3, #2 + 8001bdc: d112 bne.n 8001c04 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001bde: e00a b.n 8001bf6 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001be0: f7ff f96e bl 8000ec0 + 8001be4: 4602 mov r2, r0 + 8001be6: 68fb ldr r3, [r7, #12] + 8001be8: 1ad3 subs r3, r2, r3 + 8001bea: f241 3288 movw r2, #5000 @ 0x1388 + 8001bee: 4293 cmp r3, r2 + 8001bf0: d901 bls.n 8001bf6 + { + return HAL_TIMEOUT; + 8001bf2: 2303 movs r3, #3 + 8001bf4: e09b b.n 8001d2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001bf6: 4b51 ldr r3, [pc, #324] @ (8001d3c ) + 8001bf8: 689b ldr r3, [r3, #8] + 8001bfa: f003 030c and.w r3, r3, #12 + 8001bfe: 2b08 cmp r3, #8 + 8001c00: d1ee bne.n 8001be0 + 8001c02: e03e b.n 8001c82 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001c04: 687b ldr r3, [r7, #4] + 8001c06: 685b ldr r3, [r3, #4] + 8001c08: 2b03 cmp r3, #3 + 8001c0a: d112 bne.n 8001c32 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001c0c: e00a b.n 8001c24 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001c0e: f7ff f957 bl 8000ec0 + 8001c12: 4602 mov r2, r0 + 8001c14: 68fb ldr r3, [r7, #12] + 8001c16: 1ad3 subs r3, r2, r3 + 8001c18: f241 3288 movw r2, #5000 @ 0x1388 + 8001c1c: 4293 cmp r3, r2 + 8001c1e: d901 bls.n 8001c24 + { + return HAL_TIMEOUT; + 8001c20: 2303 movs r3, #3 + 8001c22: e084 b.n 8001d2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001c24: 4b45 ldr r3, [pc, #276] @ (8001d3c ) + 8001c26: 689b ldr r3, [r3, #8] + 8001c28: f003 030c and.w r3, r3, #12 + 8001c2c: 2b0c cmp r3, #12 + 8001c2e: d1ee bne.n 8001c0e + 8001c30: e027 b.n 8001c82 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001c32: 687b ldr r3, [r7, #4] + 8001c34: 685b ldr r3, [r3, #4] + 8001c36: 2b01 cmp r3, #1 + 8001c38: d11d bne.n 8001c76 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001c3a: e00a b.n 8001c52 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001c3c: f7ff f940 bl 8000ec0 + 8001c40: 4602 mov r2, r0 + 8001c42: 68fb ldr r3, [r7, #12] + 8001c44: 1ad3 subs r3, r2, r3 + 8001c46: f241 3288 movw r2, #5000 @ 0x1388 + 8001c4a: 4293 cmp r3, r2 + 8001c4c: d901 bls.n 8001c52 + { + return HAL_TIMEOUT; + 8001c4e: 2303 movs r3, #3 + 8001c50: e06d b.n 8001d2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001c52: 4b3a ldr r3, [pc, #232] @ (8001d3c ) + 8001c54: 689b ldr r3, [r3, #8] + 8001c56: f003 030c and.w r3, r3, #12 + 8001c5a: 2b04 cmp r3, #4 + 8001c5c: d1ee bne.n 8001c3c + 8001c5e: e010 b.n 8001c82 + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001c60: f7ff f92e bl 8000ec0 + 8001c64: 4602 mov r2, r0 + 8001c66: 68fb ldr r3, [r7, #12] + 8001c68: 1ad3 subs r3, r2, r3 + 8001c6a: f241 3288 movw r2, #5000 @ 0x1388 + 8001c6e: 4293 cmp r3, r2 + 8001c70: d901 bls.n 8001c76 + { + return HAL_TIMEOUT; + 8001c72: 2303 movs r3, #3 + 8001c74: e05b b.n 8001d2e + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8001c76: 4b31 ldr r3, [pc, #196] @ (8001d3c ) + 8001c78: 689b ldr r3, [r3, #8] + 8001c7a: f003 030c and.w r3, r3, #12 + 8001c7e: 2b00 cmp r3, #0 + 8001c80: d1ee bne.n 8001c60 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8001c82: 4b2d ldr r3, [pc, #180] @ (8001d38 ) + 8001c84: 681b ldr r3, [r3, #0] + 8001c86: f003 0301 and.w r3, r3, #1 + 8001c8a: 683a ldr r2, [r7, #0] + 8001c8c: 429a cmp r2, r3 + 8001c8e: d219 bcs.n 8001cc4 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001c90: 683b ldr r3, [r7, #0] + 8001c92: 2b01 cmp r3, #1 + 8001c94: d105 bne.n 8001ca2 + 8001c96: 4b28 ldr r3, [pc, #160] @ (8001d38 ) + 8001c98: 681b ldr r3, [r3, #0] + 8001c9a: 4a27 ldr r2, [pc, #156] @ (8001d38 ) + 8001c9c: f043 0304 orr.w r3, r3, #4 + 8001ca0: 6013 str r3, [r2, #0] + 8001ca2: 4b25 ldr r3, [pc, #148] @ (8001d38 ) + 8001ca4: 681b ldr r3, [r3, #0] + 8001ca6: f023 0201 bic.w r2, r3, #1 + 8001caa: 4923 ldr r1, [pc, #140] @ (8001d38 ) + 8001cac: 683b ldr r3, [r7, #0] + 8001cae: 4313 orrs r3, r2 + 8001cb0: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001cb2: 4b21 ldr r3, [pc, #132] @ (8001d38 ) + 8001cb4: 681b ldr r3, [r3, #0] + 8001cb6: f003 0301 and.w r3, r3, #1 + 8001cba: 683a ldr r2, [r7, #0] + 8001cbc: 429a cmp r2, r3 + 8001cbe: d001 beq.n 8001cc4 + { + return HAL_ERROR; + 8001cc0: 2301 movs r3, #1 + 8001cc2: e034 b.n 8001d2e + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001cc4: 687b ldr r3, [r7, #4] + 8001cc6: 681b ldr r3, [r3, #0] + 8001cc8: f003 0304 and.w r3, r3, #4 + 8001ccc: 2b00 cmp r3, #0 + 8001cce: d008 beq.n 8001ce2 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001cd0: 4b1a ldr r3, [pc, #104] @ (8001d3c ) + 8001cd2: 689b ldr r3, [r3, #8] + 8001cd4: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001cd8: 687b ldr r3, [r7, #4] + 8001cda: 68db ldr r3, [r3, #12] + 8001cdc: 4917 ldr r1, [pc, #92] @ (8001d3c ) + 8001cde: 4313 orrs r3, r2 + 8001ce0: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001ce2: 687b ldr r3, [r7, #4] + 8001ce4: 681b ldr r3, [r3, #0] + 8001ce6: f003 0308 and.w r3, r3, #8 + 8001cea: 2b00 cmp r3, #0 + 8001cec: d009 beq.n 8001d02 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001cee: 4b13 ldr r3, [pc, #76] @ (8001d3c ) + 8001cf0: 689b ldr r3, [r3, #8] + 8001cf2: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001cf6: 687b ldr r3, [r7, #4] + 8001cf8: 691b ldr r3, [r3, #16] + 8001cfa: 00db lsls r3, r3, #3 + 8001cfc: 490f ldr r1, [pc, #60] @ (8001d3c ) + 8001cfe: 4313 orrs r3, r2 + 8001d00: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001d02: f000 f823 bl 8001d4c + 8001d06: 4602 mov r2, r0 + 8001d08: 4b0c ldr r3, [pc, #48] @ (8001d3c ) + 8001d0a: 689b ldr r3, [r3, #8] + 8001d0c: 091b lsrs r3, r3, #4 + 8001d0e: f003 030f and.w r3, r3, #15 + 8001d12: 490b ldr r1, [pc, #44] @ (8001d40 ) + 8001d14: 5ccb ldrb r3, [r1, r3] + 8001d16: fa22 f303 lsr.w r3, r2, r3 + 8001d1a: 4a0a ldr r2, [pc, #40] @ (8001d44 ) + 8001d1c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001d1e: 4b0a ldr r3, [pc, #40] @ (8001d48 ) + 8001d20: 681b ldr r3, [r3, #0] + 8001d22: 4618 mov r0, r3 + 8001d24: f7ff f880 bl 8000e28 + 8001d28: 4603 mov r3, r0 + 8001d2a: 72fb strb r3, [r7, #11] + + return status; + 8001d2c: 7afb ldrb r3, [r7, #11] +} + 8001d2e: 4618 mov r0, r3 + 8001d30: 3710 adds r7, #16 + 8001d32: 46bd mov sp, r7 + 8001d34: bd80 pop {r7, pc} + 8001d36: bf00 nop + 8001d38: 40023c00 .word 0x40023c00 + 8001d3c: 40023800 .word 0x40023800 + 8001d40: 08003234 .word 0x08003234 + 8001d44: 20000004 .word 0x20000004 + 8001d48: 20000008 .word 0x20000008 + +08001d4c : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001d4c: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001d50: b08e sub sp, #56 @ 0x38 + 8001d52: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001d54: 4b58 ldr r3, [pc, #352] @ (8001eb8 ) + 8001d56: 689b ldr r3, [r3, #8] + 8001d58: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001d5a: 6afb ldr r3, [r7, #44] @ 0x2c + 8001d5c: f003 030c and.w r3, r3, #12 + 8001d60: 2b0c cmp r3, #12 + 8001d62: d00d beq.n 8001d80 + 8001d64: 2b0c cmp r3, #12 + 8001d66: f200 8092 bhi.w 8001e8e + 8001d6a: 2b04 cmp r3, #4 + 8001d6c: d002 beq.n 8001d74 + 8001d6e: 2b08 cmp r3, #8 + 8001d70: d003 beq.n 8001d7a + 8001d72: e08c b.n 8001e8e + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001d74: 4b51 ldr r3, [pc, #324] @ (8001ebc ) + 8001d76: 633b str r3, [r7, #48] @ 0x30 + break; + 8001d78: e097 b.n 8001eaa + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001d7a: 4b51 ldr r3, [pc, #324] @ (8001ec0 ) + 8001d7c: 633b str r3, [r7, #48] @ 0x30 + break; + 8001d7e: e094 b.n 8001eaa + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001d80: 6afb ldr r3, [r7, #44] @ 0x2c + 8001d82: 0c9b lsrs r3, r3, #18 + 8001d84: f003 020f and.w r2, r3, #15 + 8001d88: 4b4e ldr r3, [pc, #312] @ (8001ec4 ) + 8001d8a: 5c9b ldrb r3, [r3, r2] + 8001d8c: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001d8e: 6afb ldr r3, [r7, #44] @ 0x2c + 8001d90: 0d9b lsrs r3, r3, #22 + 8001d92: f003 0303 and.w r3, r3, #3 + 8001d96: 3301 adds r3, #1 + 8001d98: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001d9a: 4b47 ldr r3, [pc, #284] @ (8001eb8 ) + 8001d9c: 689b ldr r3, [r3, #8] + 8001d9e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001da2: 2b00 cmp r3, #0 + 8001da4: d021 beq.n 8001dea + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001da6: 6abb ldr r3, [r7, #40] @ 0x28 + 8001da8: 2200 movs r2, #0 + 8001daa: 61bb str r3, [r7, #24] + 8001dac: 61fa str r2, [r7, #28] + 8001dae: 4b44 ldr r3, [pc, #272] @ (8001ec0 ) + 8001db0: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001db4: 464a mov r2, r9 + 8001db6: fb03 f202 mul.w r2, r3, r2 + 8001dba: 2300 movs r3, #0 + 8001dbc: 4644 mov r4, r8 + 8001dbe: fb04 f303 mul.w r3, r4, r3 + 8001dc2: 4413 add r3, r2 + 8001dc4: 4a3e ldr r2, [pc, #248] @ (8001ec0 ) + 8001dc6: 4644 mov r4, r8 + 8001dc8: fba4 0102 umull r0, r1, r4, r2 + 8001dcc: 440b add r3, r1 + 8001dce: 4619 mov r1, r3 + 8001dd0: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001dd2: 2200 movs r2, #0 + 8001dd4: 613b str r3, [r7, #16] + 8001dd6: 617a str r2, [r7, #20] + 8001dd8: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001ddc: f7fe f9ce bl 800017c <__aeabi_uldivmod> + 8001de0: 4602 mov r2, r0 + 8001de2: 460b mov r3, r1 + 8001de4: 4613 mov r3, r2 + 8001de6: 637b str r3, [r7, #52] @ 0x34 + 8001de8: e04e b.n 8001e88 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001dea: 6abb ldr r3, [r7, #40] @ 0x28 + 8001dec: 2200 movs r2, #0 + 8001dee: 469a mov sl, r3 + 8001df0: 4693 mov fp, r2 + 8001df2: 4652 mov r2, sl + 8001df4: 465b mov r3, fp + 8001df6: f04f 0000 mov.w r0, #0 + 8001dfa: f04f 0100 mov.w r1, #0 + 8001dfe: 0159 lsls r1, r3, #5 + 8001e00: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001e04: 0150 lsls r0, r2, #5 + 8001e06: 4602 mov r2, r0 + 8001e08: 460b mov r3, r1 + 8001e0a: ebb2 080a subs.w r8, r2, sl + 8001e0e: eb63 090b sbc.w r9, r3, fp + 8001e12: f04f 0200 mov.w r2, #0 + 8001e16: f04f 0300 mov.w r3, #0 + 8001e1a: ea4f 1389 mov.w r3, r9, lsl #6 + 8001e1e: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001e22: ea4f 1288 mov.w r2, r8, lsl #6 + 8001e26: ebb2 0408 subs.w r4, r2, r8 + 8001e2a: eb63 0509 sbc.w r5, r3, r9 + 8001e2e: f04f 0200 mov.w r2, #0 + 8001e32: f04f 0300 mov.w r3, #0 + 8001e36: 00eb lsls r3, r5, #3 + 8001e38: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001e3c: 00e2 lsls r2, r4, #3 + 8001e3e: 4614 mov r4, r2 + 8001e40: 461d mov r5, r3 + 8001e42: eb14 030a adds.w r3, r4, sl + 8001e46: 603b str r3, [r7, #0] + 8001e48: eb45 030b adc.w r3, r5, fp + 8001e4c: 607b str r3, [r7, #4] + 8001e4e: f04f 0200 mov.w r2, #0 + 8001e52: f04f 0300 mov.w r3, #0 + 8001e56: e9d7 4500 ldrd r4, r5, [r7] + 8001e5a: 4629 mov r1, r5 + 8001e5c: 028b lsls r3, r1, #10 + 8001e5e: 4620 mov r0, r4 + 8001e60: 4629 mov r1, r5 + 8001e62: 4604 mov r4, r0 + 8001e64: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001e68: 4601 mov r1, r0 + 8001e6a: 028a lsls r2, r1, #10 + 8001e6c: 4610 mov r0, r2 + 8001e6e: 4619 mov r1, r3 + 8001e70: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001e72: 2200 movs r2, #0 + 8001e74: 60bb str r3, [r7, #8] + 8001e76: 60fa str r2, [r7, #12] + 8001e78: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001e7c: f7fe f97e bl 800017c <__aeabi_uldivmod> + 8001e80: 4602 mov r2, r0 + 8001e82: 460b mov r3, r1 + 8001e84: 4613 mov r3, r2 + 8001e86: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001e88: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001e8a: 633b str r3, [r7, #48] @ 0x30 + break; + 8001e8c: e00d b.n 8001eaa + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001e8e: 4b0a ldr r3, [pc, #40] @ (8001eb8 ) + 8001e90: 685b ldr r3, [r3, #4] + 8001e92: 0b5b lsrs r3, r3, #13 + 8001e94: f003 0307 and.w r3, r3, #7 + 8001e98: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001e9a: 6a3b ldr r3, [r7, #32] + 8001e9c: 3301 adds r3, #1 + 8001e9e: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001ea2: fa02 f303 lsl.w r3, r2, r3 + 8001ea6: 633b str r3, [r7, #48] @ 0x30 + break; + 8001ea8: bf00 nop + } + } + return sysclockfreq; + 8001eaa: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001eac: 4618 mov r0, r3 + 8001eae: 3738 adds r7, #56 @ 0x38 + 8001eb0: 46bd mov sp, r7 + 8001eb2: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001eb6: bf00 nop + 8001eb8: 40023800 .word 0x40023800 + 8001ebc: 00f42400 .word 0x00f42400 + 8001ec0: 016e3600 .word 0x016e3600 + 8001ec4: 08003228 .word 0x08003228 + +08001ec8 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001ec8: b480 push {r7} + 8001eca: b087 sub sp, #28 + 8001ecc: af00 add r7, sp, #0 + 8001ece: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001ed0: 2300 movs r3, #0 + 8001ed2: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001ed4: 4b29 ldr r3, [pc, #164] @ (8001f7c ) + 8001ed6: 689b ldr r3, [r3, #8] + 8001ed8: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001edc: 2b00 cmp r3, #0 + 8001ede: d12c bne.n 8001f3a + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001ee0: 4b26 ldr r3, [pc, #152] @ (8001f7c ) + 8001ee2: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ee4: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001ee8: 2b00 cmp r3, #0 + 8001eea: d005 beq.n 8001ef8 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001eec: 4b24 ldr r3, [pc, #144] @ (8001f80 ) + 8001eee: 681b ldr r3, [r3, #0] + 8001ef0: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001ef4: 617b str r3, [r7, #20] + 8001ef6: e016 b.n 8001f26 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001ef8: 4b20 ldr r3, [pc, #128] @ (8001f7c ) + 8001efa: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001efc: 4a1f ldr r2, [pc, #124] @ (8001f7c ) + 8001efe: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001f02: 6253 str r3, [r2, #36] @ 0x24 + 8001f04: 4b1d ldr r3, [pc, #116] @ (8001f7c ) + 8001f06: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f08: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001f0c: 60fb str r3, [r7, #12] + 8001f0e: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001f10: 4b1b ldr r3, [pc, #108] @ (8001f80 ) + 8001f12: 681b ldr r3, [r3, #0] + 8001f14: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001f18: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001f1a: 4b18 ldr r3, [pc, #96] @ (8001f7c ) + 8001f1c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f1e: 4a17 ldr r2, [pc, #92] @ (8001f7c ) + 8001f20: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001f24: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001f26: 697b ldr r3, [r7, #20] + 8001f28: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001f2c: d105 bne.n 8001f3a + 8001f2e: 687b ldr r3, [r7, #4] + 8001f30: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001f34: d101 bne.n 8001f3a + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001f36: 2301 movs r3, #1 + 8001f38: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001f3a: 693b ldr r3, [r7, #16] + 8001f3c: 2b01 cmp r3, #1 + 8001f3e: d105 bne.n 8001f4c + 8001f40: 4b10 ldr r3, [pc, #64] @ (8001f84 ) + 8001f42: 681b ldr r3, [r3, #0] + 8001f44: 4a0f ldr r2, [pc, #60] @ (8001f84 ) + 8001f46: f043 0304 orr.w r3, r3, #4 + 8001f4a: 6013 str r3, [r2, #0] + 8001f4c: 4b0d ldr r3, [pc, #52] @ (8001f84 ) + 8001f4e: 681b ldr r3, [r3, #0] + 8001f50: f023 0201 bic.w r2, r3, #1 + 8001f54: 490b ldr r1, [pc, #44] @ (8001f84 ) + 8001f56: 693b ldr r3, [r7, #16] + 8001f58: 4313 orrs r3, r2 + 8001f5a: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001f5c: 4b09 ldr r3, [pc, #36] @ (8001f84 ) + 8001f5e: 681b ldr r3, [r3, #0] + 8001f60: f003 0301 and.w r3, r3, #1 + 8001f64: 693a ldr r2, [r7, #16] + 8001f66: 429a cmp r2, r3 + 8001f68: d001 beq.n 8001f6e + { + return HAL_ERROR; + 8001f6a: 2301 movs r3, #1 + 8001f6c: e000 b.n 8001f70 + } + + return HAL_OK; + 8001f6e: 2300 movs r3, #0 +} + 8001f70: 4618 mov r0, r3 + 8001f72: 371c adds r7, #28 + 8001f74: 46bd mov sp, r7 + 8001f76: bc80 pop {r7} + 8001f78: 4770 bx lr + 8001f7a: bf00 nop + 8001f7c: 40023800 .word 0x40023800 + 8001f80: 40007000 .word 0x40007000 + 8001f84: 40023c00 .word 0x40023c00 + +08001f88 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001f88: b580 push {r7, lr} + 8001f8a: b082 sub sp, #8 + 8001f8c: af00 add r7, sp, #0 + 8001f8e: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001f90: 687b ldr r3, [r7, #4] + 8001f92: 2b00 cmp r3, #0 + 8001f94: d101 bne.n 8001f9a + { + return HAL_ERROR; + 8001f96: 2301 movs r3, #1 + 8001f98: e07b b.n 8002092 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001f9a: 687b ldr r3, [r7, #4] + 8001f9c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f9e: 2b00 cmp r3, #0 + 8001fa0: d108 bne.n 8001fb4 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001fa2: 687b ldr r3, [r7, #4] + 8001fa4: 685b ldr r3, [r3, #4] + 8001fa6: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001faa: d009 beq.n 8001fc0 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001fac: 687b ldr r3, [r7, #4] + 8001fae: 2200 movs r2, #0 + 8001fb0: 61da str r2, [r3, #28] + 8001fb2: e005 b.n 8001fc0 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001fb4: 687b ldr r3, [r7, #4] + 8001fb6: 2200 movs r2, #0 + 8001fb8: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001fba: 687b ldr r3, [r7, #4] + 8001fbc: 2200 movs r2, #0 + 8001fbe: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001fc0: 687b ldr r3, [r7, #4] + 8001fc2: 2200 movs r2, #0 + 8001fc4: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001fc6: 687b ldr r3, [r7, #4] + 8001fc8: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001fcc: b2db uxtb r3, r3 + 8001fce: 2b00 cmp r3, #0 + 8001fd0: d106 bne.n 8001fe0 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001fd2: 687b ldr r3, [r7, #4] + 8001fd4: 2200 movs r2, #0 + 8001fd6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001fda: 6878 ldr r0, [r7, #4] + 8001fdc: f7fe fd12 bl 8000a04 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001fe0: 687b ldr r3, [r7, #4] + 8001fe2: 2202 movs r2, #2 + 8001fe4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001fe8: 687b ldr r3, [r7, #4] + 8001fea: 681b ldr r3, [r3, #0] + 8001fec: 681a ldr r2, [r3, #0] + 8001fee: 687b ldr r3, [r7, #4] + 8001ff0: 681b ldr r3, [r3, #0] + 8001ff2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001ff6: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001ff8: 687b ldr r3, [r7, #4] + 8001ffa: 685b ldr r3, [r3, #4] + 8001ffc: f403 7282 and.w r2, r3, #260 @ 0x104 + 8002000: 687b ldr r3, [r7, #4] + 8002002: 689b ldr r3, [r3, #8] + 8002004: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8002008: 431a orrs r2, r3 + 800200a: 687b ldr r3, [r7, #4] + 800200c: 68db ldr r3, [r3, #12] + 800200e: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8002012: 431a orrs r2, r3 + 8002014: 687b ldr r3, [r7, #4] + 8002016: 691b ldr r3, [r3, #16] + 8002018: f003 0302 and.w r3, r3, #2 + 800201c: 431a orrs r2, r3 + 800201e: 687b ldr r3, [r7, #4] + 8002020: 695b ldr r3, [r3, #20] + 8002022: f003 0301 and.w r3, r3, #1 + 8002026: 431a orrs r2, r3 + 8002028: 687b ldr r3, [r7, #4] + 800202a: 699b ldr r3, [r3, #24] + 800202c: f403 7300 and.w r3, r3, #512 @ 0x200 + 8002030: 431a orrs r2, r3 + 8002032: 687b ldr r3, [r7, #4] + 8002034: 69db ldr r3, [r3, #28] + 8002036: f003 0338 and.w r3, r3, #56 @ 0x38 + 800203a: 431a orrs r2, r3 + 800203c: 687b ldr r3, [r7, #4] + 800203e: 6a1b ldr r3, [r3, #32] + 8002040: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002044: ea42 0103 orr.w r1, r2, r3 + 8002048: 687b ldr r3, [r7, #4] + 800204a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800204c: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8002050: 687b ldr r3, [r7, #4] + 8002052: 681b ldr r3, [r3, #0] + 8002054: 430a orrs r2, r1 + 8002056: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8002058: 687b ldr r3, [r7, #4] + 800205a: 699b ldr r3, [r3, #24] + 800205c: 0c1b lsrs r3, r3, #16 + 800205e: f003 0104 and.w r1, r3, #4 + 8002062: 687b ldr r3, [r7, #4] + 8002064: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002066: f003 0210 and.w r2, r3, #16 + 800206a: 687b ldr r3, [r7, #4] + 800206c: 681b ldr r3, [r3, #0] + 800206e: 430a orrs r2, r1 + 8002070: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8002072: 687b ldr r3, [r7, #4] + 8002074: 681b ldr r3, [r3, #0] + 8002076: 69da ldr r2, [r3, #28] + 8002078: 687b ldr r3, [r7, #4] + 800207a: 681b ldr r3, [r3, #0] + 800207c: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8002080: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8002082: 687b ldr r3, [r7, #4] + 8002084: 2200 movs r2, #0 + 8002086: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8002088: 687b ldr r3, [r7, #4] + 800208a: 2201 movs r2, #1 + 800208c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8002090: 2300 movs r3, #0 +} + 8002092: 4618 mov r0, r3 + 8002094: 3708 adds r7, #8 + 8002096: 46bd mov sp, r7 + 8002098: bd80 pop {r7, pc} + +0800209a : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 800209a: b580 push {r7, lr} + 800209c: b088 sub sp, #32 + 800209e: af00 add r7, sp, #0 + 80020a0: 60f8 str r0, [r7, #12] + 80020a2: 60b9 str r1, [r7, #8] + 80020a4: 603b str r3, [r7, #0] + 80020a6: 4613 mov r3, r2 + 80020a8: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 80020aa: f7fe ff09 bl 8000ec0 + 80020ae: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 80020b0: 88fb ldrh r3, [r7, #6] + 80020b2: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 80020b4: 68fb ldr r3, [r7, #12] + 80020b6: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 80020ba: b2db uxtb r3, r3 + 80020bc: 2b01 cmp r3, #1 + 80020be: d001 beq.n 80020c4 + { + return HAL_BUSY; + 80020c0: 2302 movs r3, #2 + 80020c2: e12a b.n 800231a + } + + if ((pData == NULL) || (Size == 0U)) + 80020c4: 68bb ldr r3, [r7, #8] + 80020c6: 2b00 cmp r3, #0 + 80020c8: d002 beq.n 80020d0 + 80020ca: 88fb ldrh r3, [r7, #6] + 80020cc: 2b00 cmp r3, #0 + 80020ce: d101 bne.n 80020d4 + { + return HAL_ERROR; + 80020d0: 2301 movs r3, #1 + 80020d2: e122 b.n 800231a + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 80020d4: 68fb ldr r3, [r7, #12] + 80020d6: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 80020da: 2b01 cmp r3, #1 + 80020dc: d101 bne.n 80020e2 + 80020de: 2302 movs r3, #2 + 80020e0: e11b b.n 800231a + 80020e2: 68fb ldr r3, [r7, #12] + 80020e4: 2201 movs r2, #1 + 80020e6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 80020ea: 68fb ldr r3, [r7, #12] + 80020ec: 2203 movs r2, #3 + 80020ee: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 80020f2: 68fb ldr r3, [r7, #12] + 80020f4: 2200 movs r2, #0 + 80020f6: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 80020f8: 68fb ldr r3, [r7, #12] + 80020fa: 68ba ldr r2, [r7, #8] + 80020fc: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 80020fe: 68fb ldr r3, [r7, #12] + 8002100: 88fa ldrh r2, [r7, #6] + 8002102: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8002104: 68fb ldr r3, [r7, #12] + 8002106: 88fa ldrh r2, [r7, #6] + 8002108: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 800210a: 68fb ldr r3, [r7, #12] + 800210c: 2200 movs r2, #0 + 800210e: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8002110: 68fb ldr r3, [r7, #12] + 8002112: 2200 movs r2, #0 + 8002114: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8002116: 68fb ldr r3, [r7, #12] + 8002118: 2200 movs r2, #0 + 800211a: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 800211c: 68fb ldr r3, [r7, #12] + 800211e: 2200 movs r2, #0 + 8002120: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8002122: 68fb ldr r3, [r7, #12] + 8002124: 2200 movs r2, #0 + 8002126: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002128: 68fb ldr r3, [r7, #12] + 800212a: 689b ldr r3, [r3, #8] + 800212c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002130: d10f bne.n 8002152 + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8002132: 68fb ldr r3, [r7, #12] + 8002134: 681b ldr r3, [r3, #0] + 8002136: 681a ldr r2, [r3, #0] + 8002138: 68fb ldr r3, [r7, #12] + 800213a: 681b ldr r3, [r3, #0] + 800213c: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8002140: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8002142: 68fb ldr r3, [r7, #12] + 8002144: 681b ldr r3, [r3, #0] + 8002146: 681a ldr r2, [r3, #0] + 8002148: 68fb ldr r3, [r7, #12] + 800214a: 681b ldr r3, [r3, #0] + 800214c: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002150: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8002152: 68fb ldr r3, [r7, #12] + 8002154: 681b ldr r3, [r3, #0] + 8002156: 681b ldr r3, [r3, #0] + 8002158: f003 0340 and.w r3, r3, #64 @ 0x40 + 800215c: 2b40 cmp r3, #64 @ 0x40 + 800215e: d007 beq.n 8002170 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8002160: 68fb ldr r3, [r7, #12] + 8002162: 681b ldr r3, [r3, #0] + 8002164: 681a ldr r2, [r3, #0] + 8002166: 68fb ldr r3, [r7, #12] + 8002168: 681b ldr r3, [r3, #0] + 800216a: f042 0240 orr.w r2, r2, #64 @ 0x40 + 800216e: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8002170: 68fb ldr r3, [r7, #12] + 8002172: 68db ldr r3, [r3, #12] + 8002174: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8002178: d152 bne.n 8002220 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 800217a: 68fb ldr r3, [r7, #12] + 800217c: 685b ldr r3, [r3, #4] + 800217e: 2b00 cmp r3, #0 + 8002180: d002 beq.n 8002188 + 8002182: 8b7b ldrh r3, [r7, #26] + 8002184: 2b01 cmp r3, #1 + 8002186: d145 bne.n 8002214 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8002188: 68fb ldr r3, [r7, #12] + 800218a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800218c: 881a ldrh r2, [r3, #0] + 800218e: 68fb ldr r3, [r7, #12] + 8002190: 681b ldr r3, [r3, #0] + 8002192: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8002194: 68fb ldr r3, [r7, #12] + 8002196: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002198: 1c9a adds r2, r3, #2 + 800219a: 68fb ldr r3, [r7, #12] + 800219c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800219e: 68fb ldr r3, [r7, #12] + 80021a0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80021a2: b29b uxth r3, r3 + 80021a4: 3b01 subs r3, #1 + 80021a6: b29a uxth r2, r3 + 80021a8: 68fb ldr r3, [r7, #12] + 80021aa: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 80021ac: e032 b.n 8002214 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 80021ae: 68fb ldr r3, [r7, #12] + 80021b0: 681b ldr r3, [r3, #0] + 80021b2: 689b ldr r3, [r3, #8] + 80021b4: f003 0302 and.w r3, r3, #2 + 80021b8: 2b02 cmp r3, #2 + 80021ba: d112 bne.n 80021e2 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 80021bc: 68fb ldr r3, [r7, #12] + 80021be: 6b1b ldr r3, [r3, #48] @ 0x30 + 80021c0: 881a ldrh r2, [r3, #0] + 80021c2: 68fb ldr r3, [r7, #12] + 80021c4: 681b ldr r3, [r3, #0] + 80021c6: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80021c8: 68fb ldr r3, [r7, #12] + 80021ca: 6b1b ldr r3, [r3, #48] @ 0x30 + 80021cc: 1c9a adds r2, r3, #2 + 80021ce: 68fb ldr r3, [r7, #12] + 80021d0: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 80021d2: 68fb ldr r3, [r7, #12] + 80021d4: 8edb ldrh r3, [r3, #54] @ 0x36 + 80021d6: b29b uxth r3, r3 + 80021d8: 3b01 subs r3, #1 + 80021da: b29a uxth r2, r3 + 80021dc: 68fb ldr r3, [r7, #12] + 80021de: 86da strh r2, [r3, #54] @ 0x36 + 80021e0: e018 b.n 8002214 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 80021e2: f7fe fe6d bl 8000ec0 + 80021e6: 4602 mov r2, r0 + 80021e8: 69fb ldr r3, [r7, #28] + 80021ea: 1ad3 subs r3, r2, r3 + 80021ec: 683a ldr r2, [r7, #0] + 80021ee: 429a cmp r2, r3 + 80021f0: d803 bhi.n 80021fa + 80021f2: 683b ldr r3, [r7, #0] + 80021f4: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80021f8: d102 bne.n 8002200 + 80021fa: 683b ldr r3, [r7, #0] + 80021fc: 2b00 cmp r3, #0 + 80021fe: d109 bne.n 8002214 + { + hspi->State = HAL_SPI_STATE_READY; + 8002200: 68fb ldr r3, [r7, #12] + 8002202: 2201 movs r2, #1 + 8002204: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8002208: 68fb ldr r3, [r7, #12] + 800220a: 2200 movs r2, #0 + 800220c: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8002210: 2303 movs r3, #3 + 8002212: e082 b.n 800231a + while (hspi->TxXferCount > 0U) + 8002214: 68fb ldr r3, [r7, #12] + 8002216: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002218: b29b uxth r3, r3 + 800221a: 2b00 cmp r3, #0 + 800221c: d1c7 bne.n 80021ae + 800221e: e053 b.n 80022c8 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8002220: 68fb ldr r3, [r7, #12] + 8002222: 685b ldr r3, [r3, #4] + 8002224: 2b00 cmp r3, #0 + 8002226: d002 beq.n 800222e + 8002228: 8b7b ldrh r3, [r7, #26] + 800222a: 2b01 cmp r3, #1 + 800222c: d147 bne.n 80022be + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 800222e: 68fb ldr r3, [r7, #12] + 8002230: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002232: 68fb ldr r3, [r7, #12] + 8002234: 681b ldr r3, [r3, #0] + 8002236: 330c adds r3, #12 + 8002238: 7812 ldrb r2, [r2, #0] + 800223a: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800223c: 68fb ldr r3, [r7, #12] + 800223e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002240: 1c5a adds r2, r3, #1 + 8002242: 68fb ldr r3, [r7, #12] + 8002244: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002246: 68fb ldr r3, [r7, #12] + 8002248: 8edb ldrh r3, [r3, #54] @ 0x36 + 800224a: b29b uxth r3, r3 + 800224c: 3b01 subs r3, #1 + 800224e: b29a uxth r2, r3 + 8002250: 68fb ldr r3, [r7, #12] + 8002252: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8002254: e033 b.n 80022be + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8002256: 68fb ldr r3, [r7, #12] + 8002258: 681b ldr r3, [r3, #0] + 800225a: 689b ldr r3, [r3, #8] + 800225c: f003 0302 and.w r3, r3, #2 + 8002260: 2b02 cmp r3, #2 + 8002262: d113 bne.n 800228c + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8002264: 68fb ldr r3, [r7, #12] + 8002266: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002268: 68fb ldr r3, [r7, #12] + 800226a: 681b ldr r3, [r3, #0] + 800226c: 330c adds r3, #12 + 800226e: 7812 ldrb r2, [r2, #0] + 8002270: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8002272: 68fb ldr r3, [r7, #12] + 8002274: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002276: 1c5a adds r2, r3, #1 + 8002278: 68fb ldr r3, [r7, #12] + 800227a: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800227c: 68fb ldr r3, [r7, #12] + 800227e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002280: b29b uxth r3, r3 + 8002282: 3b01 subs r3, #1 + 8002284: b29a uxth r2, r3 + 8002286: 68fb ldr r3, [r7, #12] + 8002288: 86da strh r2, [r3, #54] @ 0x36 + 800228a: e018 b.n 80022be + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 800228c: f7fe fe18 bl 8000ec0 + 8002290: 4602 mov r2, r0 + 8002292: 69fb ldr r3, [r7, #28] + 8002294: 1ad3 subs r3, r2, r3 + 8002296: 683a ldr r2, [r7, #0] + 8002298: 429a cmp r2, r3 + 800229a: d803 bhi.n 80022a4 + 800229c: 683b ldr r3, [r7, #0] + 800229e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80022a2: d102 bne.n 80022aa + 80022a4: 683b ldr r3, [r7, #0] + 80022a6: 2b00 cmp r3, #0 + 80022a8: d109 bne.n 80022be + { + hspi->State = HAL_SPI_STATE_READY; + 80022aa: 68fb ldr r3, [r7, #12] + 80022ac: 2201 movs r2, #1 + 80022ae: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 80022b2: 68fb ldr r3, [r7, #12] + 80022b4: 2200 movs r2, #0 + 80022b6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 80022ba: 2303 movs r3, #3 + 80022bc: e02d b.n 800231a + while (hspi->TxXferCount > 0U) + 80022be: 68fb ldr r3, [r7, #12] + 80022c0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80022c2: b29b uxth r3, r3 + 80022c4: 2b00 cmp r3, #0 + 80022c6: d1c6 bne.n 8002256 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 80022c8: 69fa ldr r2, [r7, #28] + 80022ca: 6839 ldr r1, [r7, #0] + 80022cc: 68f8 ldr r0, [r7, #12] + 80022ce: f000 f8b1 bl 8002434 + 80022d2: 4603 mov r3, r0 + 80022d4: 2b00 cmp r3, #0 + 80022d6: d002 beq.n 80022de + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80022d8: 68fb ldr r3, [r7, #12] + 80022da: 2220 movs r2, #32 + 80022dc: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 80022de: 68fb ldr r3, [r7, #12] + 80022e0: 689b ldr r3, [r3, #8] + 80022e2: 2b00 cmp r3, #0 + 80022e4: d10a bne.n 80022fc + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 80022e6: 2300 movs r3, #0 + 80022e8: 617b str r3, [r7, #20] + 80022ea: 68fb ldr r3, [r7, #12] + 80022ec: 681b ldr r3, [r3, #0] + 80022ee: 68db ldr r3, [r3, #12] + 80022f0: 617b str r3, [r7, #20] + 80022f2: 68fb ldr r3, [r7, #12] + 80022f4: 681b ldr r3, [r3, #0] + 80022f6: 689b ldr r3, [r3, #8] + 80022f8: 617b str r3, [r7, #20] + 80022fa: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 80022fc: 68fb ldr r3, [r7, #12] + 80022fe: 2201 movs r2, #1 + 8002300: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8002304: 68fb ldr r3, [r7, #12] + 8002306: 2200 movs r2, #0 + 8002308: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 800230c: 68fb ldr r3, [r7, #12] + 800230e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002310: 2b00 cmp r3, #0 + 8002312: d001 beq.n 8002318 + { + return HAL_ERROR; + 8002314: 2301 movs r3, #1 + 8002316: e000 b.n 800231a + } + else + { + return HAL_OK; + 8002318: 2300 movs r3, #0 + } +} + 800231a: 4618 mov r0, r3 + 800231c: 3720 adds r7, #32 + 800231e: 46bd mov sp, r7 + 8002320: bd80 pop {r7, pc} + ... + +08002324 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8002324: b580 push {r7, lr} + 8002326: b088 sub sp, #32 + 8002328: af00 add r7, sp, #0 + 800232a: 60f8 str r0, [r7, #12] + 800232c: 60b9 str r1, [r7, #8] + 800232e: 603b str r3, [r7, #0] + 8002330: 4613 mov r3, r2 + 8002332: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8002334: f7fe fdc4 bl 8000ec0 + 8002338: 4602 mov r2, r0 + 800233a: 6abb ldr r3, [r7, #40] @ 0x28 + 800233c: 1a9b subs r3, r3, r2 + 800233e: 683a ldr r2, [r7, #0] + 8002340: 4413 add r3, r2 + 8002342: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8002344: f7fe fdbc bl 8000ec0 + 8002348: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 800234a: 4b39 ldr r3, [pc, #228] @ (8002430 ) + 800234c: 681b ldr r3, [r3, #0] + 800234e: 015b lsls r3, r3, #5 + 8002350: 0d1b lsrs r3, r3, #20 + 8002352: 69fa ldr r2, [r7, #28] + 8002354: fb02 f303 mul.w r3, r2, r3 + 8002358: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 800235a: e054 b.n 8002406 + { + if (Timeout != HAL_MAX_DELAY) + 800235c: 683b ldr r3, [r7, #0] + 800235e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8002362: d050 beq.n 8002406 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8002364: f7fe fdac bl 8000ec0 + 8002368: 4602 mov r2, r0 + 800236a: 69bb ldr r3, [r7, #24] + 800236c: 1ad3 subs r3, r2, r3 + 800236e: 69fa ldr r2, [r7, #28] + 8002370: 429a cmp r2, r3 + 8002372: d902 bls.n 800237a + 8002374: 69fb ldr r3, [r7, #28] + 8002376: 2b00 cmp r3, #0 + 8002378: d13d bne.n 80023f6 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 800237a: 68fb ldr r3, [r7, #12] + 800237c: 681b ldr r3, [r3, #0] + 800237e: 685a ldr r2, [r3, #4] + 8002380: 68fb ldr r3, [r7, #12] + 8002382: 681b ldr r3, [r3, #0] + 8002384: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002388: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 800238a: 68fb ldr r3, [r7, #12] + 800238c: 685b ldr r3, [r3, #4] + 800238e: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002392: d111 bne.n 80023b8 + 8002394: 68fb ldr r3, [r7, #12] + 8002396: 689b ldr r3, [r3, #8] + 8002398: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800239c: d004 beq.n 80023a8 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 800239e: 68fb ldr r3, [r7, #12] + 80023a0: 689b ldr r3, [r3, #8] + 80023a2: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80023a6: d107 bne.n 80023b8 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80023a8: 68fb ldr r3, [r7, #12] + 80023aa: 681b ldr r3, [r3, #0] + 80023ac: 681a ldr r2, [r3, #0] + 80023ae: 68fb ldr r3, [r7, #12] + 80023b0: 681b ldr r3, [r3, #0] + 80023b2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80023b6: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 80023b8: 68fb ldr r3, [r7, #12] + 80023ba: 6a9b ldr r3, [r3, #40] @ 0x28 + 80023bc: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80023c0: d10f bne.n 80023e2 + { + SPI_RESET_CRC(hspi); + 80023c2: 68fb ldr r3, [r7, #12] + 80023c4: 681b ldr r3, [r3, #0] + 80023c6: 681a ldr r2, [r3, #0] + 80023c8: 68fb ldr r3, [r7, #12] + 80023ca: 681b ldr r3, [r3, #0] + 80023cc: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 80023d0: 601a str r2, [r3, #0] + 80023d2: 68fb ldr r3, [r7, #12] + 80023d4: 681b ldr r3, [r3, #0] + 80023d6: 681a ldr r2, [r3, #0] + 80023d8: 68fb ldr r3, [r7, #12] + 80023da: 681b ldr r3, [r3, #0] + 80023dc: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 80023e0: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80023e2: 68fb ldr r3, [r7, #12] + 80023e4: 2201 movs r2, #1 + 80023e6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80023ea: 68fb ldr r3, [r7, #12] + 80023ec: 2200 movs r2, #0 + 80023ee: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 80023f2: 2303 movs r3, #3 + 80023f4: e017 b.n 8002426 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 80023f6: 697b ldr r3, [r7, #20] + 80023f8: 2b00 cmp r3, #0 + 80023fa: d101 bne.n 8002400 + { + tmp_timeout = 0U; + 80023fc: 2300 movs r3, #0 + 80023fe: 61fb str r3, [r7, #28] + } + count--; + 8002400: 697b ldr r3, [r7, #20] + 8002402: 3b01 subs r3, #1 + 8002404: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8002406: 68fb ldr r3, [r7, #12] + 8002408: 681b ldr r3, [r3, #0] + 800240a: 689a ldr r2, [r3, #8] + 800240c: 68bb ldr r3, [r7, #8] + 800240e: 4013 ands r3, r2 + 8002410: 68ba ldr r2, [r7, #8] + 8002412: 429a cmp r2, r3 + 8002414: bf0c ite eq + 8002416: 2301 moveq r3, #1 + 8002418: 2300 movne r3, #0 + 800241a: b2db uxtb r3, r3 + 800241c: 461a mov r2, r3 + 800241e: 79fb ldrb r3, [r7, #7] + 8002420: 429a cmp r2, r3 + 8002422: d19b bne.n 800235c + } + } + + return HAL_OK; + 8002424: 2300 movs r3, #0 +} + 8002426: 4618 mov r0, r3 + 8002428: 3720 adds r7, #32 + 800242a: 46bd mov sp, r7 + 800242c: bd80 pop {r7, pc} + 800242e: bf00 nop + 8002430: 20000004 .word 0x20000004 + +08002434 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8002434: b580 push {r7, lr} + 8002436: b088 sub sp, #32 + 8002438: af02 add r7, sp, #8 + 800243a: 60f8 str r0, [r7, #12] + 800243c: 60b9 str r1, [r7, #8] + 800243e: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8002440: 687b ldr r3, [r7, #4] + 8002442: 9300 str r3, [sp, #0] + 8002444: 68bb ldr r3, [r7, #8] + 8002446: 2201 movs r2, #1 + 8002448: 2102 movs r1, #2 + 800244a: 68f8 ldr r0, [r7, #12] + 800244c: f7ff ff6a bl 8002324 + 8002450: 4603 mov r3, r0 + 8002452: 2b00 cmp r3, #0 + 8002454: d007 beq.n 8002466 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002456: 68fb ldr r3, [r7, #12] + 8002458: 6d5b ldr r3, [r3, #84] @ 0x54 + 800245a: f043 0220 orr.w r2, r3, #32 + 800245e: 68fb ldr r3, [r7, #12] + 8002460: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002462: 2303 movs r3, #3 + 8002464: e032 b.n 80024cc + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8002466: 4b1b ldr r3, [pc, #108] @ (80024d4 ) + 8002468: 681b ldr r3, [r3, #0] + 800246a: 4a1b ldr r2, [pc, #108] @ (80024d8 ) + 800246c: fba2 2303 umull r2, r3, r2, r3 + 8002470: 0d5b lsrs r3, r3, #21 + 8002472: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8002476: fb02 f303 mul.w r3, r2, r3 + 800247a: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 800247c: 68fb ldr r3, [r7, #12] + 800247e: 685b ldr r3, [r3, #4] + 8002480: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002484: d112 bne.n 80024ac + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8002486: 687b ldr r3, [r7, #4] + 8002488: 9300 str r3, [sp, #0] + 800248a: 68bb ldr r3, [r7, #8] + 800248c: 2200 movs r2, #0 + 800248e: 2180 movs r1, #128 @ 0x80 + 8002490: 68f8 ldr r0, [r7, #12] + 8002492: f7ff ff47 bl 8002324 + 8002496: 4603 mov r3, r0 + 8002498: 2b00 cmp r3, #0 + 800249a: d016 beq.n 80024ca + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 800249c: 68fb ldr r3, [r7, #12] + 800249e: 6d5b ldr r3, [r3, #84] @ 0x54 + 80024a0: f043 0220 orr.w r2, r3, #32 + 80024a4: 68fb ldr r3, [r7, #12] + 80024a6: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80024a8: 2303 movs r3, #3 + 80024aa: e00f b.n 80024cc + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 80024ac: 697b ldr r3, [r7, #20] + 80024ae: 2b00 cmp r3, #0 + 80024b0: d00a beq.n 80024c8 + { + break; + } + count--; + 80024b2: 697b ldr r3, [r7, #20] + 80024b4: 3b01 subs r3, #1 + 80024b6: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 80024b8: 68fb ldr r3, [r7, #12] + 80024ba: 681b ldr r3, [r3, #0] + 80024bc: 689b ldr r3, [r3, #8] + 80024be: f003 0380 and.w r3, r3, #128 @ 0x80 + 80024c2: 2b80 cmp r3, #128 @ 0x80 + 80024c4: d0f2 beq.n 80024ac + 80024c6: e000 b.n 80024ca + break; + 80024c8: bf00 nop + } + + return HAL_OK; + 80024ca: 2300 movs r3, #0 +} + 80024cc: 4618 mov r0, r3 + 80024ce: 3718 adds r7, #24 + 80024d0: 46bd mov sp, r7 + 80024d2: bd80 pop {r7, pc} + 80024d4: 20000004 .word 0x20000004 + 80024d8: 165e9f81 .word 0x165e9f81 + +080024dc : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 80024dc: b580 push {r7, lr} + 80024de: b082 sub sp, #8 + 80024e0: af00 add r7, sp, #0 + 80024e2: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80024e4: 687b ldr r3, [r7, #4] + 80024e6: 2b00 cmp r3, #0 + 80024e8: d101 bne.n 80024ee + { + return HAL_ERROR; + 80024ea: 2301 movs r3, #1 + 80024ec: e031 b.n 8002552 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80024ee: 687b ldr r3, [r7, #4] + 80024f0: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 80024f4: b2db uxtb r3, r3 + 80024f6: 2b00 cmp r3, #0 + 80024f8: d106 bne.n 8002508 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 80024fa: 687b ldr r3, [r7, #4] + 80024fc: 2200 movs r2, #0 + 80024fe: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 8002502: 6878 ldr r0, [r7, #4] + 8002504: f7fe fac2 bl 8000a8c +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002508: 687b ldr r3, [r7, #4] + 800250a: 2202 movs r2, #2 + 800250c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002510: 687b ldr r3, [r7, #4] + 8002512: 681a ldr r2, [r3, #0] + 8002514: 687b ldr r3, [r7, #4] + 8002516: 3304 adds r3, #4 + 8002518: 4619 mov r1, r3 + 800251a: 4610 mov r0, r2 + 800251c: f000 fbc8 bl 8002cb0 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002520: 687b ldr r3, [r7, #4] + 8002522: 2201 movs r2, #1 + 8002524: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002528: 687b ldr r3, [r7, #4] + 800252a: 2201 movs r2, #1 + 800252c: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002530: 687b ldr r3, [r7, #4] + 8002532: 2201 movs r2, #1 + 8002534: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002538: 687b ldr r3, [r7, #4] + 800253a: 2201 movs r2, #1 + 800253c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002540: 687b ldr r3, [r7, #4] + 8002542: 2201 movs r2, #1 + 8002544: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002548: 687b ldr r3, [r7, #4] + 800254a: 2201 movs r2, #1 + 800254c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002550: 2300 movs r3, #0 +} + 8002552: 4618 mov r0, r3 + 8002554: 3708 adds r7, #8 + 8002556: 46bd mov sp, r7 + 8002558: bd80 pop {r7, pc} + ... + +0800255c : + * @brief Starts the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) +{ + 800255c: b480 push {r7} + 800255e: b085 sub sp, #20 + 8002560: af00 add r7, sp, #0 + 8002562: 6078 str r0, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + 8002564: 687b ldr r3, [r7, #4] + 8002566: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 800256a: b2db uxtb r3, r3 + 800256c: 2b01 cmp r3, #1 + 800256e: d001 beq.n 8002574 + { + return HAL_ERROR; + 8002570: 2301 movs r3, #1 + 8002572: e03a b.n 80025ea + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002574: 687b ldr r3, [r7, #4] + 8002576: 2202 movs r2, #2 + 8002578: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + 800257c: 687b ldr r3, [r7, #4] + 800257e: 681b ldr r3, [r3, #0] + 8002580: 68da ldr r2, [r3, #12] + 8002582: 687b ldr r3, [r7, #4] + 8002584: 681b ldr r3, [r3, #0] + 8002586: f042 0201 orr.w r2, r2, #1 + 800258a: 60da str r2, [r3, #12] + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 800258c: 687b ldr r3, [r7, #4] + 800258e: 681b ldr r3, [r3, #0] + 8002590: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002594: d00e beq.n 80025b4 + 8002596: 687b ldr r3, [r7, #4] + 8002598: 681b ldr r3, [r3, #0] + 800259a: 4a16 ldr r2, [pc, #88] @ (80025f4 ) + 800259c: 4293 cmp r3, r2 + 800259e: d009 beq.n 80025b4 + 80025a0: 687b ldr r3, [r7, #4] + 80025a2: 681b ldr r3, [r3, #0] + 80025a4: 4a14 ldr r2, [pc, #80] @ (80025f8 ) + 80025a6: 4293 cmp r3, r2 + 80025a8: d004 beq.n 80025b4 + 80025aa: 687b ldr r3, [r7, #4] + 80025ac: 681b ldr r3, [r3, #0] + 80025ae: 4a13 ldr r2, [pc, #76] @ (80025fc ) + 80025b0: 4293 cmp r3, r2 + 80025b2: d111 bne.n 80025d8 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 80025b4: 687b ldr r3, [r7, #4] + 80025b6: 681b ldr r3, [r3, #0] + 80025b8: 689b ldr r3, [r3, #8] + 80025ba: f003 0307 and.w r3, r3, #7 + 80025be: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025c0: 68fb ldr r3, [r7, #12] + 80025c2: 2b06 cmp r3, #6 + 80025c4: d010 beq.n 80025e8 + { + __HAL_TIM_ENABLE(htim); + 80025c6: 687b ldr r3, [r7, #4] + 80025c8: 681b ldr r3, [r3, #0] + 80025ca: 681a ldr r2, [r3, #0] + 80025cc: 687b ldr r3, [r7, #4] + 80025ce: 681b ldr r3, [r3, #0] + 80025d0: f042 0201 orr.w r2, r2, #1 + 80025d4: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025d6: e007 b.n 80025e8 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 80025d8: 687b ldr r3, [r7, #4] + 80025da: 681b ldr r3, [r3, #0] + 80025dc: 681a ldr r2, [r3, #0] + 80025de: 687b ldr r3, [r7, #4] + 80025e0: 681b ldr r3, [r3, #0] + 80025e2: f042 0201 orr.w r2, r2, #1 + 80025e6: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 80025e8: 2300 movs r3, #0 +} + 80025ea: 4618 mov r0, r3 + 80025ec: 3714 adds r7, #20 + 80025ee: 46bd mov sp, r7 + 80025f0: bc80 pop {r7} + 80025f2: 4770 bx lr + 80025f4: 40000400 .word 0x40000400 + 80025f8: 40000800 .word 0x40000800 + 80025fc: 40010800 .word 0x40010800 + +08002600 : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 8002600: b580 push {r7, lr} + 8002602: b082 sub sp, #8 + 8002604: af00 add r7, sp, #0 + 8002606: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8002608: 687b ldr r3, [r7, #4] + 800260a: 2b00 cmp r3, #0 + 800260c: d101 bne.n 8002612 + { + return HAL_ERROR; + 800260e: 2301 movs r3, #1 + 8002610: e031 b.n 8002676 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002612: 687b ldr r3, [r7, #4] + 8002614: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002618: b2db uxtb r3, r3 + 800261a: 2b00 cmp r3, #0 + 800261c: d106 bne.n 800262c + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 800261e: 687b ldr r3, [r7, #4] + 8002620: 2200 movs r2, #0 + 8002622: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 8002626: 6878 ldr r0, [r7, #4] + 8002628: f000 f829 bl 800267e +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 800262c: 687b ldr r3, [r7, #4] + 800262e: 2202 movs r2, #2 + 8002630: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002634: 687b ldr r3, [r7, #4] + 8002636: 681a ldr r2, [r3, #0] + 8002638: 687b ldr r3, [r7, #4] + 800263a: 3304 adds r3, #4 + 800263c: 4619 mov r1, r3 + 800263e: 4610 mov r0, r2 + 8002640: f000 fb36 bl 8002cb0 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002644: 687b ldr r3, [r7, #4] + 8002646: 2201 movs r2, #1 + 8002648: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 800264c: 687b ldr r3, [r7, #4] + 800264e: 2201 movs r2, #1 + 8002650: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002654: 687b ldr r3, [r7, #4] + 8002656: 2201 movs r2, #1 + 8002658: f883 203b strb.w r2, [r3, #59] @ 0x3b + 800265c: 687b ldr r3, [r7, #4] + 800265e: 2201 movs r2, #1 + 8002660: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002664: 687b ldr r3, [r7, #4] + 8002666: 2201 movs r2, #1 + 8002668: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 800266c: 687b ldr r3, [r7, #4] + 800266e: 2201 movs r2, #1 + 8002670: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002674: 2300 movs r3, #0 +} + 8002676: 4618 mov r0, r3 + 8002678: 3708 adds r7, #8 + 800267a: 46bd mov sp, r7 + 800267c: bd80 pop {r7, pc} + +0800267e : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 800267e: b480 push {r7} + 8002680: b083 sub sp, #12 + 8002682: af00 add r7, sp, #0 + 8002684: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 8002686: bf00 nop + 8002688: 370c adds r7, #12 + 800268a: 46bd mov sp, r7 + 800268c: bc80 pop {r7} + 800268e: 4770 bx lr + +08002690 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 8002690: b580 push {r7, lr} + 8002692: b084 sub sp, #16 + 8002694: af00 add r7, sp, #0 + 8002696: 6078 str r0, [r7, #4] + 8002698: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 800269a: 683b ldr r3, [r7, #0] + 800269c: 2b00 cmp r3, #0 + 800269e: d109 bne.n 80026b4 + 80026a0: 687b ldr r3, [r7, #4] + 80026a2: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 80026a6: b2db uxtb r3, r3 + 80026a8: 2b01 cmp r3, #1 + 80026aa: bf14 ite ne + 80026ac: 2301 movne r3, #1 + 80026ae: 2300 moveq r3, #0 + 80026b0: b2db uxtb r3, r3 + 80026b2: e022 b.n 80026fa + 80026b4: 683b ldr r3, [r7, #0] + 80026b6: 2b04 cmp r3, #4 + 80026b8: d109 bne.n 80026ce + 80026ba: 687b ldr r3, [r7, #4] + 80026bc: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 80026c0: b2db uxtb r3, r3 + 80026c2: 2b01 cmp r3, #1 + 80026c4: bf14 ite ne + 80026c6: 2301 movne r3, #1 + 80026c8: 2300 moveq r3, #0 + 80026ca: b2db uxtb r3, r3 + 80026cc: e015 b.n 80026fa + 80026ce: 683b ldr r3, [r7, #0] + 80026d0: 2b08 cmp r3, #8 + 80026d2: d109 bne.n 80026e8 + 80026d4: 687b ldr r3, [r7, #4] + 80026d6: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 80026da: b2db uxtb r3, r3 + 80026dc: 2b01 cmp r3, #1 + 80026de: bf14 ite ne + 80026e0: 2301 movne r3, #1 + 80026e2: 2300 moveq r3, #0 + 80026e4: b2db uxtb r3, r3 + 80026e6: e008 b.n 80026fa + 80026e8: 687b ldr r3, [r7, #4] + 80026ea: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80026ee: b2db uxtb r3, r3 + 80026f0: 2b01 cmp r3, #1 + 80026f2: bf14 ite ne + 80026f4: 2301 movne r3, #1 + 80026f6: 2300 moveq r3, #0 + 80026f8: b2db uxtb r3, r3 + 80026fa: 2b00 cmp r3, #0 + 80026fc: d001 beq.n 8002702 + { + return HAL_ERROR; + 80026fe: 2301 movs r3, #1 + 8002700: e051 b.n 80027a6 + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 8002702: 683b ldr r3, [r7, #0] + 8002704: 2b00 cmp r3, #0 + 8002706: d104 bne.n 8002712 + 8002708: 687b ldr r3, [r7, #4] + 800270a: 2202 movs r2, #2 + 800270c: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002710: e013 b.n 800273a + 8002712: 683b ldr r3, [r7, #0] + 8002714: 2b04 cmp r3, #4 + 8002716: d104 bne.n 8002722 + 8002718: 687b ldr r3, [r7, #4] + 800271a: 2202 movs r2, #2 + 800271c: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002720: e00b b.n 800273a + 8002722: 683b ldr r3, [r7, #0] + 8002724: 2b08 cmp r3, #8 + 8002726: d104 bne.n 8002732 + 8002728: 687b ldr r3, [r7, #4] + 800272a: 2202 movs r2, #2 + 800272c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002730: e003 b.n 800273a + 8002732: 687b ldr r3, [r7, #4] + 8002734: 2202 movs r2, #2 + 8002736: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 800273a: 687b ldr r3, [r7, #4] + 800273c: 681b ldr r3, [r3, #0] + 800273e: 2201 movs r2, #1 + 8002740: 6839 ldr r1, [r7, #0] + 8002742: 4618 mov r0, r3 + 8002744: f000 fcb5 bl 80030b2 + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002748: 687b ldr r3, [r7, #4] + 800274a: 681b ldr r3, [r3, #0] + 800274c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002750: d00e beq.n 8002770 + 8002752: 687b ldr r3, [r7, #4] + 8002754: 681b ldr r3, [r3, #0] + 8002756: 4a16 ldr r2, [pc, #88] @ (80027b0 ) + 8002758: 4293 cmp r3, r2 + 800275a: d009 beq.n 8002770 + 800275c: 687b ldr r3, [r7, #4] + 800275e: 681b ldr r3, [r3, #0] + 8002760: 4a14 ldr r2, [pc, #80] @ (80027b4 ) + 8002762: 4293 cmp r3, r2 + 8002764: d004 beq.n 8002770 + 8002766: 687b ldr r3, [r7, #4] + 8002768: 681b ldr r3, [r3, #0] + 800276a: 4a13 ldr r2, [pc, #76] @ (80027b8 ) + 800276c: 4293 cmp r3, r2 + 800276e: d111 bne.n 8002794 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 8002770: 687b ldr r3, [r7, #4] + 8002772: 681b ldr r3, [r3, #0] + 8002774: 689b ldr r3, [r3, #8] + 8002776: f003 0307 and.w r3, r3, #7 + 800277a: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 800277c: 68fb ldr r3, [r7, #12] + 800277e: 2b06 cmp r3, #6 + 8002780: d010 beq.n 80027a4 + { + __HAL_TIM_ENABLE(htim); + 8002782: 687b ldr r3, [r7, #4] + 8002784: 681b ldr r3, [r3, #0] + 8002786: 681a ldr r2, [r3, #0] + 8002788: 687b ldr r3, [r7, #4] + 800278a: 681b ldr r3, [r3, #0] + 800278c: f042 0201 orr.w r2, r2, #1 + 8002790: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002792: e007 b.n 80027a4 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8002794: 687b ldr r3, [r7, #4] + 8002796: 681b ldr r3, [r3, #0] + 8002798: 681a ldr r2, [r3, #0] + 800279a: 687b ldr r3, [r7, #4] + 800279c: 681b ldr r3, [r3, #0] + 800279e: f042 0201 orr.w r2, r2, #1 + 80027a2: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 80027a4: 2300 movs r3, #0 +} + 80027a6: 4618 mov r0, r3 + 80027a8: 3710 adds r7, #16 + 80027aa: 46bd mov sp, r7 + 80027ac: bd80 pop {r7, pc} + 80027ae: bf00 nop + 80027b0: 40000400 .word 0x40000400 + 80027b4: 40000800 .word 0x40000800 + 80027b8: 40010800 .word 0x40010800 + +080027bc : + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + 80027bc: b580 push {r7, lr} + 80027be: b084 sub sp, #16 + 80027c0: af00 add r7, sp, #0 + 80027c2: 6078 str r0, [r7, #4] + uint32_t itsource = htim->Instance->DIER; + 80027c4: 687b ldr r3, [r7, #4] + 80027c6: 681b ldr r3, [r3, #0] + 80027c8: 68db ldr r3, [r3, #12] + 80027ca: 60fb str r3, [r7, #12] + uint32_t itflag = htim->Instance->SR; + 80027cc: 687b ldr r3, [r7, #4] + 80027ce: 681b ldr r3, [r3, #0] + 80027d0: 691b ldr r3, [r3, #16] + 80027d2: 60bb str r3, [r7, #8] + + /* Capture compare 1 event */ + if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) + 80027d4: 68bb ldr r3, [r7, #8] + 80027d6: f003 0302 and.w r3, r3, #2 + 80027da: 2b00 cmp r3, #0 + 80027dc: d020 beq.n 8002820 + { + if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) + 80027de: 68fb ldr r3, [r7, #12] + 80027e0: f003 0302 and.w r3, r3, #2 + 80027e4: 2b00 cmp r3, #0 + 80027e6: d01b beq.n 8002820 + { + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); + 80027e8: 687b ldr r3, [r7, #4] + 80027ea: 681b ldr r3, [r3, #0] + 80027ec: f06f 0202 mvn.w r2, #2 + 80027f0: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + 80027f2: 687b ldr r3, [r7, #4] + 80027f4: 2201 movs r2, #1 + 80027f6: 761a strb r2, [r3, #24] + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + 80027f8: 687b ldr r3, [r7, #4] + 80027fa: 681b ldr r3, [r3, #0] + 80027fc: 699b ldr r3, [r3, #24] + 80027fe: f003 0303 and.w r3, r3, #3 + 8002802: 2b00 cmp r3, #0 + 8002804: d003 beq.n 800280e + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002806: 6878 ldr r0, [r7, #4] + 8002808: f000 fa36 bl 8002c78 + 800280c: e005 b.n 800281a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 800280e: 6878 ldr r0, [r7, #4] + 8002810: f000 fa29 bl 8002c66 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002814: 6878 ldr r0, [r7, #4] + 8002816: f000 fa38 bl 8002c8a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 800281a: 687b ldr r3, [r7, #4] + 800281c: 2200 movs r2, #0 + 800281e: 761a strb r2, [r3, #24] + } + } + } + /* Capture compare 2 event */ + if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) + 8002820: 68bb ldr r3, [r7, #8] + 8002822: f003 0304 and.w r3, r3, #4 + 8002826: 2b00 cmp r3, #0 + 8002828: d020 beq.n 800286c + { + if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) + 800282a: 68fb ldr r3, [r7, #12] + 800282c: f003 0304 and.w r3, r3, #4 + 8002830: 2b00 cmp r3, #0 + 8002832: d01b beq.n 800286c + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); + 8002834: 687b ldr r3, [r7, #4] + 8002836: 681b ldr r3, [r3, #0] + 8002838: f06f 0204 mvn.w r2, #4 + 800283c: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + 800283e: 687b ldr r3, [r7, #4] + 8002840: 2202 movs r2, #2 + 8002842: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + 8002844: 687b ldr r3, [r7, #4] + 8002846: 681b ldr r3, [r3, #0] + 8002848: 699b ldr r3, [r3, #24] + 800284a: f403 7340 and.w r3, r3, #768 @ 0x300 + 800284e: 2b00 cmp r3, #0 + 8002850: d003 beq.n 800285a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002852: 6878 ldr r0, [r7, #4] + 8002854: f000 fa10 bl 8002c78 + 8002858: e005 b.n 8002866 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 800285a: 6878 ldr r0, [r7, #4] + 800285c: f000 fa03 bl 8002c66 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002860: 6878 ldr r0, [r7, #4] + 8002862: f000 fa12 bl 8002c8a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002866: 687b ldr r3, [r7, #4] + 8002868: 2200 movs r2, #0 + 800286a: 761a strb r2, [r3, #24] + } + } + /* Capture compare 3 event */ + if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) + 800286c: 68bb ldr r3, [r7, #8] + 800286e: f003 0308 and.w r3, r3, #8 + 8002872: 2b00 cmp r3, #0 + 8002874: d020 beq.n 80028b8 + { + if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) + 8002876: 68fb ldr r3, [r7, #12] + 8002878: f003 0308 and.w r3, r3, #8 + 800287c: 2b00 cmp r3, #0 + 800287e: d01b beq.n 80028b8 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + 8002880: 687b ldr r3, [r7, #4] + 8002882: 681b ldr r3, [r3, #0] + 8002884: f06f 0208 mvn.w r2, #8 + 8002888: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + 800288a: 687b ldr r3, [r7, #4] + 800288c: 2204 movs r2, #4 + 800288e: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + 8002890: 687b ldr r3, [r7, #4] + 8002892: 681b ldr r3, [r3, #0] + 8002894: 69db ldr r3, [r3, #28] + 8002896: f003 0303 and.w r3, r3, #3 + 800289a: 2b00 cmp r3, #0 + 800289c: d003 beq.n 80028a6 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 800289e: 6878 ldr r0, [r7, #4] + 80028a0: f000 f9ea bl 8002c78 + 80028a4: e005 b.n 80028b2 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 80028a6: 6878 ldr r0, [r7, #4] + 80028a8: f000 f9dd bl 8002c66 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 80028ac: 6878 ldr r0, [r7, #4] + 80028ae: f000 f9ec bl 8002c8a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 80028b2: 687b ldr r3, [r7, #4] + 80028b4: 2200 movs r2, #0 + 80028b6: 761a strb r2, [r3, #24] + } + } + /* Capture compare 4 event */ + if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) + 80028b8: 68bb ldr r3, [r7, #8] + 80028ba: f003 0310 and.w r3, r3, #16 + 80028be: 2b00 cmp r3, #0 + 80028c0: d020 beq.n 8002904 + { + if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) + 80028c2: 68fb ldr r3, [r7, #12] + 80028c4: f003 0310 and.w r3, r3, #16 + 80028c8: 2b00 cmp r3, #0 + 80028ca: d01b beq.n 8002904 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); + 80028cc: 687b ldr r3, [r7, #4] + 80028ce: 681b ldr r3, [r3, #0] + 80028d0: f06f 0210 mvn.w r2, #16 + 80028d4: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + 80028d6: 687b ldr r3, [r7, #4] + 80028d8: 2208 movs r2, #8 + 80028da: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + 80028dc: 687b ldr r3, [r7, #4] + 80028de: 681b ldr r3, [r3, #0] + 80028e0: 69db ldr r3, [r3, #28] + 80028e2: f403 7340 and.w r3, r3, #768 @ 0x300 + 80028e6: 2b00 cmp r3, #0 + 80028e8: d003 beq.n 80028f2 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 80028ea: 6878 ldr r0, [r7, #4] + 80028ec: f000 f9c4 bl 8002c78 + 80028f0: e005 b.n 80028fe + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 80028f2: 6878 ldr r0, [r7, #4] + 80028f4: f000 f9b7 bl 8002c66 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 80028f8: 6878 ldr r0, [r7, #4] + 80028fa: f000 f9c6 bl 8002c8a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 80028fe: 687b ldr r3, [r7, #4] + 8002900: 2200 movs r2, #0 + 8002902: 761a strb r2, [r3, #24] + } + } + /* TIM Update event */ + if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) + 8002904: 68bb ldr r3, [r7, #8] + 8002906: f003 0301 and.w r3, r3, #1 + 800290a: 2b00 cmp r3, #0 + 800290c: d00c beq.n 8002928 + { + if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) + 800290e: 68fb ldr r3, [r7, #12] + 8002910: f003 0301 and.w r3, r3, #1 + 8002914: 2b00 cmp r3, #0 + 8002916: d007 beq.n 8002928 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); + 8002918: 687b ldr r3, [r7, #4] + 800291a: 681b ldr r3, [r3, #0] + 800291c: f06f 0201 mvn.w r2, #1 + 8002920: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); + 8002922: 6878 ldr r0, [r7, #4] + 8002924: f7fd ffec bl 8000900 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) + 8002928: 68bb ldr r3, [r7, #8] + 800292a: f003 0340 and.w r3, r3, #64 @ 0x40 + 800292e: 2b00 cmp r3, #0 + 8002930: d00c beq.n 800294c + { + if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) + 8002932: 68fb ldr r3, [r7, #12] + 8002934: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002938: 2b00 cmp r3, #0 + 800293a: d007 beq.n 800294c + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); + 800293c: 687b ldr r3, [r7, #4] + 800293e: 681b ldr r3, [r3, #0] + 8002940: f06f 0240 mvn.w r2, #64 @ 0x40 + 8002944: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); + 8002946: 6878 ldr r0, [r7, #4] + 8002948: f000 f9a8 bl 8002c9c +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + 800294c: bf00 nop + 800294e: 3710 adds r7, #16 + 8002950: 46bd mov sp, r7 + 8002952: bd80 pop {r7, pc} + +08002954 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8002954: b580 push {r7, lr} + 8002956: b086 sub sp, #24 + 8002958: af00 add r7, sp, #0 + 800295a: 60f8 str r0, [r7, #12] + 800295c: 60b9 str r1, [r7, #8] + 800295e: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8002960: 2300 movs r3, #0 + 8002962: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8002964: 68fb ldr r3, [r7, #12] + 8002966: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 800296a: 2b01 cmp r3, #1 + 800296c: d101 bne.n 8002972 + 800296e: 2302 movs r3, #2 + 8002970: e0ae b.n 8002ad0 + 8002972: 68fb ldr r3, [r7, #12] + 8002974: 2201 movs r2, #1 + 8002976: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + switch (Channel) + 800297a: 687b ldr r3, [r7, #4] + 800297c: 2b0c cmp r3, #12 + 800297e: f200 809f bhi.w 8002ac0 + 8002982: a201 add r2, pc, #4 @ (adr r2, 8002988 ) + 8002984: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8002988: 080029bd .word 0x080029bd + 800298c: 08002ac1 .word 0x08002ac1 + 8002990: 08002ac1 .word 0x08002ac1 + 8002994: 08002ac1 .word 0x08002ac1 + 8002998: 080029fd .word 0x080029fd + 800299c: 08002ac1 .word 0x08002ac1 + 80029a0: 08002ac1 .word 0x08002ac1 + 80029a4: 08002ac1 .word 0x08002ac1 + 80029a8: 08002a3f .word 0x08002a3f + 80029ac: 08002ac1 .word 0x08002ac1 + 80029b0: 08002ac1 .word 0x08002ac1 + 80029b4: 08002ac1 .word 0x08002ac1 + 80029b8: 08002a7f .word 0x08002a7f + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 80029bc: 68fb ldr r3, [r7, #12] + 80029be: 681b ldr r3, [r3, #0] + 80029c0: 68b9 ldr r1, [r7, #8] + 80029c2: 4618 mov r0, r3 + 80029c4: f000 f9ea bl 8002d9c + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 80029c8: 68fb ldr r3, [r7, #12] + 80029ca: 681b ldr r3, [r3, #0] + 80029cc: 699a ldr r2, [r3, #24] + 80029ce: 68fb ldr r3, [r7, #12] + 80029d0: 681b ldr r3, [r3, #0] + 80029d2: f042 0208 orr.w r2, r2, #8 + 80029d6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 80029d8: 68fb ldr r3, [r7, #12] + 80029da: 681b ldr r3, [r3, #0] + 80029dc: 699a ldr r2, [r3, #24] + 80029de: 68fb ldr r3, [r7, #12] + 80029e0: 681b ldr r3, [r3, #0] + 80029e2: f022 0204 bic.w r2, r2, #4 + 80029e6: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 80029e8: 68fb ldr r3, [r7, #12] + 80029ea: 681b ldr r3, [r3, #0] + 80029ec: 6999 ldr r1, [r3, #24] + 80029ee: 68bb ldr r3, [r7, #8] + 80029f0: 68da ldr r2, [r3, #12] + 80029f2: 68fb ldr r3, [r7, #12] + 80029f4: 681b ldr r3, [r3, #0] + 80029f6: 430a orrs r2, r1 + 80029f8: 619a str r2, [r3, #24] + break; + 80029fa: e064 b.n 8002ac6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 80029fc: 68fb ldr r3, [r7, #12] + 80029fe: 681b ldr r3, [r3, #0] + 8002a00: 68b9 ldr r1, [r7, #8] + 8002a02: 4618 mov r0, r3 + 8002a04: f000 fa06 bl 8002e14 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8002a08: 68fb ldr r3, [r7, #12] + 8002a0a: 681b ldr r3, [r3, #0] + 8002a0c: 699a ldr r2, [r3, #24] + 8002a0e: 68fb ldr r3, [r7, #12] + 8002a10: 681b ldr r3, [r3, #0] + 8002a12: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8002a16: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 8002a18: 68fb ldr r3, [r7, #12] + 8002a1a: 681b ldr r3, [r3, #0] + 8002a1c: 699a ldr r2, [r3, #24] + 8002a1e: 68fb ldr r3, [r7, #12] + 8002a20: 681b ldr r3, [r3, #0] + 8002a22: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8002a26: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 8002a28: 68fb ldr r3, [r7, #12] + 8002a2a: 681b ldr r3, [r3, #0] + 8002a2c: 6999 ldr r1, [r3, #24] + 8002a2e: 68bb ldr r3, [r7, #8] + 8002a30: 68db ldr r3, [r3, #12] + 8002a32: 021a lsls r2, r3, #8 + 8002a34: 68fb ldr r3, [r7, #12] + 8002a36: 681b ldr r3, [r3, #0] + 8002a38: 430a orrs r2, r1 + 8002a3a: 619a str r2, [r3, #24] + break; + 8002a3c: e043 b.n 8002ac6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 8002a3e: 68fb ldr r3, [r7, #12] + 8002a40: 681b ldr r3, [r3, #0] + 8002a42: 68b9 ldr r1, [r7, #8] + 8002a44: 4618 mov r0, r3 + 8002a46: f000 fa23 bl 8002e90 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 8002a4a: 68fb ldr r3, [r7, #12] + 8002a4c: 681b ldr r3, [r3, #0] + 8002a4e: 69da ldr r2, [r3, #28] + 8002a50: 68fb ldr r3, [r7, #12] + 8002a52: 681b ldr r3, [r3, #0] + 8002a54: f042 0208 orr.w r2, r2, #8 + 8002a58: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 8002a5a: 68fb ldr r3, [r7, #12] + 8002a5c: 681b ldr r3, [r3, #0] + 8002a5e: 69da ldr r2, [r3, #28] + 8002a60: 68fb ldr r3, [r7, #12] + 8002a62: 681b ldr r3, [r3, #0] + 8002a64: f022 0204 bic.w r2, r2, #4 + 8002a68: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 8002a6a: 68fb ldr r3, [r7, #12] + 8002a6c: 681b ldr r3, [r3, #0] + 8002a6e: 69d9 ldr r1, [r3, #28] + 8002a70: 68bb ldr r3, [r7, #8] + 8002a72: 68da ldr r2, [r3, #12] + 8002a74: 68fb ldr r3, [r7, #12] + 8002a76: 681b ldr r3, [r3, #0] + 8002a78: 430a orrs r2, r1 + 8002a7a: 61da str r2, [r3, #28] + break; + 8002a7c: e023 b.n 8002ac6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 8002a7e: 68fb ldr r3, [r7, #12] + 8002a80: 681b ldr r3, [r3, #0] + 8002a82: 68b9 ldr r1, [r7, #8] + 8002a84: 4618 mov r0, r3 + 8002a86: f000 fa40 bl 8002f0a + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 8002a8a: 68fb ldr r3, [r7, #12] + 8002a8c: 681b ldr r3, [r3, #0] + 8002a8e: 69da ldr r2, [r3, #28] + 8002a90: 68fb ldr r3, [r7, #12] + 8002a92: 681b ldr r3, [r3, #0] + 8002a94: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8002a98: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 8002a9a: 68fb ldr r3, [r7, #12] + 8002a9c: 681b ldr r3, [r3, #0] + 8002a9e: 69da ldr r2, [r3, #28] + 8002aa0: 68fb ldr r3, [r7, #12] + 8002aa2: 681b ldr r3, [r3, #0] + 8002aa4: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8002aa8: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 8002aaa: 68fb ldr r3, [r7, #12] + 8002aac: 681b ldr r3, [r3, #0] + 8002aae: 69d9 ldr r1, [r3, #28] + 8002ab0: 68bb ldr r3, [r7, #8] + 8002ab2: 68db ldr r3, [r3, #12] + 8002ab4: 021a lsls r2, r3, #8 + 8002ab6: 68fb ldr r3, [r7, #12] + 8002ab8: 681b ldr r3, [r3, #0] + 8002aba: 430a orrs r2, r1 + 8002abc: 61da str r2, [r3, #28] + break; + 8002abe: e002 b.n 8002ac6 + } + + default: + status = HAL_ERROR; + 8002ac0: 2301 movs r3, #1 + 8002ac2: 75fb strb r3, [r7, #23] + break; + 8002ac4: bf00 nop + } + + __HAL_UNLOCK(htim); + 8002ac6: 68fb ldr r3, [r7, #12] + 8002ac8: 2200 movs r2, #0 + 8002aca: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002ace: 7dfb ldrb r3, [r7, #23] +} + 8002ad0: 4618 mov r0, r3 + 8002ad2: 3718 adds r7, #24 + 8002ad4: 46bd mov sp, r7 + 8002ad6: bd80 pop {r7, pc} + +08002ad8 : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 8002ad8: b580 push {r7, lr} + 8002ada: b084 sub sp, #16 + 8002adc: af00 add r7, sp, #0 + 8002ade: 6078 str r0, [r7, #4] + 8002ae0: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 8002ae2: 2300 movs r3, #0 + 8002ae4: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 8002ae6: 687b ldr r3, [r7, #4] + 8002ae8: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002aec: 2b01 cmp r3, #1 + 8002aee: d101 bne.n 8002af4 + 8002af0: 2302 movs r3, #2 + 8002af2: e0b4 b.n 8002c5e + 8002af4: 687b ldr r3, [r7, #4] + 8002af6: 2201 movs r2, #1 + 8002af8: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 8002afc: 687b ldr r3, [r7, #4] + 8002afe: 2202 movs r2, #2 + 8002b00: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 8002b04: 687b ldr r3, [r7, #4] + 8002b06: 681b ldr r3, [r3, #0] + 8002b08: 689b ldr r3, [r3, #8] + 8002b0a: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8002b0c: 68bb ldr r3, [r7, #8] + 8002b0e: f023 0377 bic.w r3, r3, #119 @ 0x77 + 8002b12: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8002b14: 68bb ldr r3, [r7, #8] + 8002b16: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8002b1a: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 8002b1c: 687b ldr r3, [r7, #4] + 8002b1e: 681b ldr r3, [r3, #0] + 8002b20: 68ba ldr r2, [r7, #8] + 8002b22: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 8002b24: 683b ldr r3, [r7, #0] + 8002b26: 681b ldr r3, [r3, #0] + 8002b28: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002b2c: d03e beq.n 8002bac + 8002b2e: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002b32: f200 8087 bhi.w 8002c44 + 8002b36: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002b3a: f000 8086 beq.w 8002c4a + 8002b3e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002b42: d87f bhi.n 8002c44 + 8002b44: 2b70 cmp r3, #112 @ 0x70 + 8002b46: d01a beq.n 8002b7e + 8002b48: 2b70 cmp r3, #112 @ 0x70 + 8002b4a: d87b bhi.n 8002c44 + 8002b4c: 2b60 cmp r3, #96 @ 0x60 + 8002b4e: d050 beq.n 8002bf2 + 8002b50: 2b60 cmp r3, #96 @ 0x60 + 8002b52: d877 bhi.n 8002c44 + 8002b54: 2b50 cmp r3, #80 @ 0x50 + 8002b56: d03c beq.n 8002bd2 + 8002b58: 2b50 cmp r3, #80 @ 0x50 + 8002b5a: d873 bhi.n 8002c44 + 8002b5c: 2b40 cmp r3, #64 @ 0x40 + 8002b5e: d058 beq.n 8002c12 + 8002b60: 2b40 cmp r3, #64 @ 0x40 + 8002b62: d86f bhi.n 8002c44 + 8002b64: 2b30 cmp r3, #48 @ 0x30 + 8002b66: d064 beq.n 8002c32 + 8002b68: 2b30 cmp r3, #48 @ 0x30 + 8002b6a: d86b bhi.n 8002c44 + 8002b6c: 2b20 cmp r3, #32 + 8002b6e: d060 beq.n 8002c32 + 8002b70: 2b20 cmp r3, #32 + 8002b72: d867 bhi.n 8002c44 + 8002b74: 2b00 cmp r3, #0 + 8002b76: d05c beq.n 8002c32 + 8002b78: 2b10 cmp r3, #16 + 8002b7a: d05a beq.n 8002c32 + 8002b7c: e062 b.n 8002c44 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 8002b7e: 687b ldr r3, [r7, #4] + 8002b80: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002b82: 683b ldr r3, [r7, #0] + 8002b84: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8002b86: 683b ldr r3, [r7, #0] + 8002b88: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002b8a: 683b ldr r3, [r7, #0] + 8002b8c: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8002b8e: f000 fa71 bl 8003074 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 8002b92: 687b ldr r3, [r7, #4] + 8002b94: 681b ldr r3, [r3, #0] + 8002b96: 689b ldr r3, [r3, #8] + 8002b98: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 8002b9a: 68bb ldr r3, [r7, #8] + 8002b9c: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8002ba0: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002ba2: 687b ldr r3, [r7, #4] + 8002ba4: 681b ldr r3, [r3, #0] + 8002ba6: 68ba ldr r2, [r7, #8] + 8002ba8: 609a str r2, [r3, #8] + break; + 8002baa: e04f b.n 8002c4c + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 8002bac: 687b ldr r3, [r7, #4] + 8002bae: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002bb0: 683b ldr r3, [r7, #0] + 8002bb2: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8002bb4: 683b ldr r3, [r7, #0] + 8002bb6: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002bb8: 683b ldr r3, [r7, #0] + 8002bba: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8002bbc: f000 fa5a bl 8003074 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 8002bc0: 687b ldr r3, [r7, #4] + 8002bc2: 681b ldr r3, [r3, #0] + 8002bc4: 689a ldr r2, [r3, #8] + 8002bc6: 687b ldr r3, [r7, #4] + 8002bc8: 681b ldr r3, [r3, #0] + 8002bca: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002bce: 609a str r2, [r3, #8] + break; + 8002bd0: e03c b.n 8002c4c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 8002bd2: 687b ldr r3, [r7, #4] + 8002bd4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 8002bd6: 683b ldr r3, [r7, #0] + 8002bd8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002bda: 683b ldr r3, [r7, #0] + 8002bdc: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8002bde: 461a mov r2, r3 + 8002be0: f000 f9d1 bl 8002f86 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 8002be4: 687b ldr r3, [r7, #4] + 8002be6: 681b ldr r3, [r3, #0] + 8002be8: 2150 movs r1, #80 @ 0x50 + 8002bea: 4618 mov r0, r3 + 8002bec: f000 fa28 bl 8003040 + break; + 8002bf0: e02c b.n 8002c4c + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 8002bf2: 687b ldr r3, [r7, #4] + 8002bf4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 8002bf6: 683b ldr r3, [r7, #0] + 8002bf8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002bfa: 683b ldr r3, [r7, #0] + 8002bfc: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 8002bfe: 461a mov r2, r3 + 8002c00: f000 f9ef bl 8002fe2 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 8002c04: 687b ldr r3, [r7, #4] + 8002c06: 681b ldr r3, [r3, #0] + 8002c08: 2160 movs r1, #96 @ 0x60 + 8002c0a: 4618 mov r0, r3 + 8002c0c: f000 fa18 bl 8003040 + break; + 8002c10: e01c b.n 8002c4c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 8002c12: 687b ldr r3, [r7, #4] + 8002c14: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 8002c16: 683b ldr r3, [r7, #0] + 8002c18: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002c1a: 683b ldr r3, [r7, #0] + 8002c1c: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8002c1e: 461a mov r2, r3 + 8002c20: f000 f9b1 bl 8002f86 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 8002c24: 687b ldr r3, [r7, #4] + 8002c26: 681b ldr r3, [r3, #0] + 8002c28: 2140 movs r1, #64 @ 0x40 + 8002c2a: 4618 mov r0, r3 + 8002c2c: f000 fa08 bl 8003040 + break; + 8002c30: e00c b.n 8002c4c + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 8002c32: 687b ldr r3, [r7, #4] + 8002c34: 681a ldr r2, [r3, #0] + 8002c36: 683b ldr r3, [r7, #0] + 8002c38: 681b ldr r3, [r3, #0] + 8002c3a: 4619 mov r1, r3 + 8002c3c: 4610 mov r0, r2 + 8002c3e: f000 f9ff bl 8003040 + break; + 8002c42: e003 b.n 8002c4c + } + + default: + status = HAL_ERROR; + 8002c44: 2301 movs r3, #1 + 8002c46: 73fb strb r3, [r7, #15] + break; + 8002c48: e000 b.n 8002c4c + break; + 8002c4a: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 8002c4c: 687b ldr r3, [r7, #4] + 8002c4e: 2201 movs r2, #1 + 8002c50: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002c54: 687b ldr r3, [r7, #4] + 8002c56: 2200 movs r2, #0 + 8002c58: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002c5c: 7bfb ldrb r3, [r7, #15] +} + 8002c5e: 4618 mov r0, r3 + 8002c60: 3710 adds r7, #16 + 8002c62: 46bd mov sp, r7 + 8002c64: bd80 pop {r7, pc} + +08002c66 : + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + 8002c66: b480 push {r7} + 8002c68: b083 sub sp, #12 + 8002c6a: af00 add r7, sp, #0 + 8002c6c: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + 8002c6e: bf00 nop + 8002c70: 370c adds r7, #12 + 8002c72: 46bd mov sp, r7 + 8002c74: bc80 pop {r7} + 8002c76: 4770 bx lr + +08002c78 : + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + 8002c78: b480 push {r7} + 8002c7a: b083 sub sp, #12 + 8002c7c: af00 add r7, sp, #0 + 8002c7e: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + 8002c80: bf00 nop + 8002c82: 370c adds r7, #12 + 8002c84: 46bd mov sp, r7 + 8002c86: bc80 pop {r7} + 8002c88: 4770 bx lr + +08002c8a : + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + 8002c8a: b480 push {r7} + 8002c8c: b083 sub sp, #12 + 8002c8e: af00 add r7, sp, #0 + 8002c90: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file + */ +} + 8002c92: bf00 nop + 8002c94: 370c adds r7, #12 + 8002c96: 46bd mov sp, r7 + 8002c98: bc80 pop {r7} + 8002c9a: 4770 bx lr + +08002c9c : + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + 8002c9c: b480 push {r7} + 8002c9e: b083 sub sp, #12 + 8002ca0: af00 add r7, sp, #0 + 8002ca2: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerCallback could be implemented in the user file + */ +} + 8002ca4: bf00 nop + 8002ca6: 370c adds r7, #12 + 8002ca8: 46bd mov sp, r7 + 8002caa: bc80 pop {r7} + 8002cac: 4770 bx lr + ... + +08002cb0 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 8002cb0: b480 push {r7} + 8002cb2: b085 sub sp, #20 + 8002cb4: af00 add r7, sp, #0 + 8002cb6: 6078 str r0, [r7, #4] + 8002cb8: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 8002cba: 687b ldr r3, [r7, #4] + 8002cbc: 681b ldr r3, [r3, #0] + 8002cbe: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 8002cc0: 687b ldr r3, [r7, #4] + 8002cc2: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002cc6: d00f beq.n 8002ce8 + 8002cc8: 687b ldr r3, [r7, #4] + 8002cca: 4a2e ldr r2, [pc, #184] @ (8002d84 ) + 8002ccc: 4293 cmp r3, r2 + 8002cce: d00b beq.n 8002ce8 + 8002cd0: 687b ldr r3, [r7, #4] + 8002cd2: 4a2d ldr r2, [pc, #180] @ (8002d88 ) + 8002cd4: 4293 cmp r3, r2 + 8002cd6: d007 beq.n 8002ce8 + 8002cd8: 687b ldr r3, [r7, #4] + 8002cda: 4a2c ldr r2, [pc, #176] @ (8002d8c ) + 8002cdc: 4293 cmp r3, r2 + 8002cde: d003 beq.n 8002ce8 + 8002ce0: 687b ldr r3, [r7, #4] + 8002ce2: 4a2b ldr r2, [pc, #172] @ (8002d90 ) + 8002ce4: 4293 cmp r3, r2 + 8002ce6: d108 bne.n 8002cfa + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 8002ce8: 68fb ldr r3, [r7, #12] + 8002cea: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002cee: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 8002cf0: 683b ldr r3, [r7, #0] + 8002cf2: 685b ldr r3, [r3, #4] + 8002cf4: 68fa ldr r2, [r7, #12] + 8002cf6: 4313 orrs r3, r2 + 8002cf8: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8002cfa: 687b ldr r3, [r7, #4] + 8002cfc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002d00: d017 beq.n 8002d32 + 8002d02: 687b ldr r3, [r7, #4] + 8002d04: 4a1f ldr r2, [pc, #124] @ (8002d84 ) + 8002d06: 4293 cmp r3, r2 + 8002d08: d013 beq.n 8002d32 + 8002d0a: 687b ldr r3, [r7, #4] + 8002d0c: 4a1e ldr r2, [pc, #120] @ (8002d88 ) + 8002d0e: 4293 cmp r3, r2 + 8002d10: d00f beq.n 8002d32 + 8002d12: 687b ldr r3, [r7, #4] + 8002d14: 4a1d ldr r2, [pc, #116] @ (8002d8c ) + 8002d16: 4293 cmp r3, r2 + 8002d18: d00b beq.n 8002d32 + 8002d1a: 687b ldr r3, [r7, #4] + 8002d1c: 4a1c ldr r2, [pc, #112] @ (8002d90 ) + 8002d1e: 4293 cmp r3, r2 + 8002d20: d007 beq.n 8002d32 + 8002d22: 687b ldr r3, [r7, #4] + 8002d24: 4a1b ldr r2, [pc, #108] @ (8002d94 ) + 8002d26: 4293 cmp r3, r2 + 8002d28: d003 beq.n 8002d32 + 8002d2a: 687b ldr r3, [r7, #4] + 8002d2c: 4a1a ldr r2, [pc, #104] @ (8002d98 ) + 8002d2e: 4293 cmp r3, r2 + 8002d30: d108 bne.n 8002d44 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 8002d32: 68fb ldr r3, [r7, #12] + 8002d34: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002d38: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 8002d3a: 683b ldr r3, [r7, #0] + 8002d3c: 68db ldr r3, [r3, #12] + 8002d3e: 68fa ldr r2, [r7, #12] + 8002d40: 4313 orrs r3, r2 + 8002d42: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 8002d44: 68fb ldr r3, [r7, #12] + 8002d46: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8002d4a: 683b ldr r3, [r7, #0] + 8002d4c: 691b ldr r3, [r3, #16] + 8002d4e: 4313 orrs r3, r2 + 8002d50: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 8002d52: 683b ldr r3, [r7, #0] + 8002d54: 689a ldr r2, [r3, #8] + 8002d56: 687b ldr r3, [r7, #4] + 8002d58: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 8002d5a: 683b ldr r3, [r7, #0] + 8002d5c: 681a ldr r2, [r3, #0] + 8002d5e: 687b ldr r3, [r7, #4] + 8002d60: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 8002d62: 687b ldr r3, [r7, #4] + 8002d64: 681b ldr r3, [r3, #0] + 8002d66: f043 0204 orr.w r2, r3, #4 + 8002d6a: 687b ldr r3, [r7, #4] + 8002d6c: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 8002d6e: 687b ldr r3, [r7, #4] + 8002d70: 2201 movs r2, #1 + 8002d72: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 8002d74: 687b ldr r3, [r7, #4] + 8002d76: 68fa ldr r2, [r7, #12] + 8002d78: 601a str r2, [r3, #0] +} + 8002d7a: bf00 nop + 8002d7c: 3714 adds r7, #20 + 8002d7e: 46bd mov sp, r7 + 8002d80: bc80 pop {r7} + 8002d82: 4770 bx lr + 8002d84: 40000400 .word 0x40000400 + 8002d88: 40000800 .word 0x40000800 + 8002d8c: 40000c00 .word 0x40000c00 + 8002d90: 40010800 .word 0x40010800 + 8002d94: 40010c00 .word 0x40010c00 + 8002d98: 40011000 .word 0x40011000 + +08002d9c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002d9c: b480 push {r7} + 8002d9e: b087 sub sp, #28 + 8002da0: af00 add r7, sp, #0 + 8002da2: 6078 str r0, [r7, #4] + 8002da4: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002da6: 687b ldr r3, [r7, #4] + 8002da8: 6a1b ldr r3, [r3, #32] + 8002daa: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002dac: 687b ldr r3, [r7, #4] + 8002dae: 6a1b ldr r3, [r3, #32] + 8002db0: f023 0201 bic.w r2, r3, #1 + 8002db4: 687b ldr r3, [r7, #4] + 8002db6: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002db8: 687b ldr r3, [r7, #4] + 8002dba: 685b ldr r3, [r3, #4] + 8002dbc: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002dbe: 687b ldr r3, [r7, #4] + 8002dc0: 699b ldr r3, [r3, #24] + 8002dc2: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 8002dc4: 68fb ldr r3, [r7, #12] + 8002dc6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002dca: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8002dcc: 68fb ldr r3, [r7, #12] + 8002dce: f023 0303 bic.w r3, r3, #3 + 8002dd2: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002dd4: 683b ldr r3, [r7, #0] + 8002dd6: 681b ldr r3, [r3, #0] + 8002dd8: 68fa ldr r2, [r7, #12] + 8002dda: 4313 orrs r3, r2 + 8002ddc: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8002dde: 697b ldr r3, [r7, #20] + 8002de0: f023 0302 bic.w r3, r3, #2 + 8002de4: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8002de6: 683b ldr r3, [r7, #0] + 8002de8: 689b ldr r3, [r3, #8] + 8002dea: 697a ldr r2, [r7, #20] + 8002dec: 4313 orrs r3, r2 + 8002dee: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002df0: 687b ldr r3, [r7, #4] + 8002df2: 693a ldr r2, [r7, #16] + 8002df4: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002df6: 687b ldr r3, [r7, #4] + 8002df8: 68fa ldr r2, [r7, #12] + 8002dfa: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 8002dfc: 683b ldr r3, [r7, #0] + 8002dfe: 685a ldr r2, [r3, #4] + 8002e00: 687b ldr r3, [r7, #4] + 8002e02: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002e04: 687b ldr r3, [r7, #4] + 8002e06: 697a ldr r2, [r7, #20] + 8002e08: 621a str r2, [r3, #32] +} + 8002e0a: bf00 nop + 8002e0c: 371c adds r7, #28 + 8002e0e: 46bd mov sp, r7 + 8002e10: bc80 pop {r7} + 8002e12: 4770 bx lr + +08002e14 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002e14: b480 push {r7} + 8002e16: b087 sub sp, #28 + 8002e18: af00 add r7, sp, #0 + 8002e1a: 6078 str r0, [r7, #4] + 8002e1c: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002e1e: 687b ldr r3, [r7, #4] + 8002e20: 6a1b ldr r3, [r3, #32] + 8002e22: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002e24: 687b ldr r3, [r7, #4] + 8002e26: 6a1b ldr r3, [r3, #32] + 8002e28: f023 0210 bic.w r2, r3, #16 + 8002e2c: 687b ldr r3, [r7, #4] + 8002e2e: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002e30: 687b ldr r3, [r7, #4] + 8002e32: 685b ldr r3, [r3, #4] + 8002e34: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002e36: 687b ldr r3, [r7, #4] + 8002e38: 699b ldr r3, [r3, #24] + 8002e3a: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 8002e3c: 68fb ldr r3, [r7, #12] + 8002e3e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002e42: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8002e44: 68fb ldr r3, [r7, #12] + 8002e46: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002e4a: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002e4c: 683b ldr r3, [r7, #0] + 8002e4e: 681b ldr r3, [r3, #0] + 8002e50: 021b lsls r3, r3, #8 + 8002e52: 68fa ldr r2, [r7, #12] + 8002e54: 4313 orrs r3, r2 + 8002e56: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8002e58: 697b ldr r3, [r7, #20] + 8002e5a: f023 0320 bic.w r3, r3, #32 + 8002e5e: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8002e60: 683b ldr r3, [r7, #0] + 8002e62: 689b ldr r3, [r3, #8] + 8002e64: 011b lsls r3, r3, #4 + 8002e66: 697a ldr r2, [r7, #20] + 8002e68: 4313 orrs r3, r2 + 8002e6a: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002e6c: 687b ldr r3, [r7, #4] + 8002e6e: 693a ldr r2, [r7, #16] + 8002e70: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002e72: 687b ldr r3, [r7, #4] + 8002e74: 68fa ldr r2, [r7, #12] + 8002e76: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8002e78: 683b ldr r3, [r7, #0] + 8002e7a: 685a ldr r2, [r3, #4] + 8002e7c: 687b ldr r3, [r7, #4] + 8002e7e: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002e80: 687b ldr r3, [r7, #4] + 8002e82: 697a ldr r2, [r7, #20] + 8002e84: 621a str r2, [r3, #32] +} + 8002e86: bf00 nop + 8002e88: 371c adds r7, #28 + 8002e8a: 46bd mov sp, r7 + 8002e8c: bc80 pop {r7} + 8002e8e: 4770 bx lr + +08002e90 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002e90: b480 push {r7} + 8002e92: b087 sub sp, #28 + 8002e94: af00 add r7, sp, #0 + 8002e96: 6078 str r0, [r7, #4] + 8002e98: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002e9a: 687b ldr r3, [r7, #4] + 8002e9c: 6a1b ldr r3, [r3, #32] + 8002e9e: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8002ea0: 687b ldr r3, [r7, #4] + 8002ea2: 6a1b ldr r3, [r3, #32] + 8002ea4: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8002ea8: 687b ldr r3, [r7, #4] + 8002eaa: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002eac: 687b ldr r3, [r7, #4] + 8002eae: 685b ldr r3, [r3, #4] + 8002eb0: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002eb2: 687b ldr r3, [r7, #4] + 8002eb4: 69db ldr r3, [r3, #28] + 8002eb6: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8002eb8: 68fb ldr r3, [r7, #12] + 8002eba: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002ebe: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 8002ec0: 68fb ldr r3, [r7, #12] + 8002ec2: f023 0303 bic.w r3, r3, #3 + 8002ec6: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002ec8: 683b ldr r3, [r7, #0] + 8002eca: 681b ldr r3, [r3, #0] + 8002ecc: 68fa ldr r2, [r7, #12] + 8002ece: 4313 orrs r3, r2 + 8002ed0: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8002ed2: 697b ldr r3, [r7, #20] + 8002ed4: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8002ed8: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 8002eda: 683b ldr r3, [r7, #0] + 8002edc: 689b ldr r3, [r3, #8] + 8002ede: 021b lsls r3, r3, #8 + 8002ee0: 697a ldr r2, [r7, #20] + 8002ee2: 4313 orrs r3, r2 + 8002ee4: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002ee6: 687b ldr r3, [r7, #4] + 8002ee8: 693a ldr r2, [r7, #16] + 8002eea: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002eec: 687b ldr r3, [r7, #4] + 8002eee: 68fa ldr r2, [r7, #12] + 8002ef0: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8002ef2: 683b ldr r3, [r7, #0] + 8002ef4: 685a ldr r2, [r3, #4] + 8002ef6: 687b ldr r3, [r7, #4] + 8002ef8: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002efa: 687b ldr r3, [r7, #4] + 8002efc: 697a ldr r2, [r7, #20] + 8002efe: 621a str r2, [r3, #32] +} + 8002f00: bf00 nop + 8002f02: 371c adds r7, #28 + 8002f04: 46bd mov sp, r7 + 8002f06: bc80 pop {r7} + 8002f08: 4770 bx lr + +08002f0a : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002f0a: b480 push {r7} + 8002f0c: b087 sub sp, #28 + 8002f0e: af00 add r7, sp, #0 + 8002f10: 6078 str r0, [r7, #4] + 8002f12: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002f14: 687b ldr r3, [r7, #4] + 8002f16: 6a1b ldr r3, [r3, #32] + 8002f18: 617b str r3, [r7, #20] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8002f1a: 687b ldr r3, [r7, #4] + 8002f1c: 6a1b ldr r3, [r3, #32] + 8002f1e: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8002f22: 687b ldr r3, [r7, #4] + 8002f24: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002f26: 687b ldr r3, [r7, #4] + 8002f28: 685b ldr r3, [r3, #4] + 8002f2a: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002f2c: 687b ldr r3, [r7, #4] + 8002f2e: 69db ldr r3, [r3, #28] + 8002f30: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8002f32: 68fb ldr r3, [r7, #12] + 8002f34: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002f38: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8002f3a: 68fb ldr r3, [r7, #12] + 8002f3c: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002f40: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002f42: 683b ldr r3, [r7, #0] + 8002f44: 681b ldr r3, [r3, #0] + 8002f46: 021b lsls r3, r3, #8 + 8002f48: 68fa ldr r2, [r7, #12] + 8002f4a: 4313 orrs r3, r2 + 8002f4c: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8002f4e: 697b ldr r3, [r7, #20] + 8002f50: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8002f54: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8002f56: 683b ldr r3, [r7, #0] + 8002f58: 689b ldr r3, [r3, #8] + 8002f5a: 031b lsls r3, r3, #12 + 8002f5c: 697a ldr r2, [r7, #20] + 8002f5e: 4313 orrs r3, r2 + 8002f60: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002f62: 687b ldr r3, [r7, #4] + 8002f64: 693a ldr r2, [r7, #16] + 8002f66: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002f68: 687b ldr r3, [r7, #4] + 8002f6a: 68fa ldr r2, [r7, #12] + 8002f6c: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 8002f6e: 683b ldr r3, [r7, #0] + 8002f70: 685a ldr r2, [r3, #4] + 8002f72: 687b ldr r3, [r7, #4] + 8002f74: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002f76: 687b ldr r3, [r7, #4] + 8002f78: 697a ldr r2, [r7, #20] + 8002f7a: 621a str r2, [r3, #32] +} + 8002f7c: bf00 nop + 8002f7e: 371c adds r7, #28 + 8002f80: 46bd mov sp, r7 + 8002f82: bc80 pop {r7} + 8002f84: 4770 bx lr + +08002f86 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002f86: b480 push {r7} + 8002f88: b087 sub sp, #28 + 8002f8a: af00 add r7, sp, #0 + 8002f8c: 60f8 str r0, [r7, #12] + 8002f8e: 60b9 str r1, [r7, #8] + 8002f90: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8002f92: 68fb ldr r3, [r7, #12] + 8002f94: 6a1b ldr r3, [r3, #32] + 8002f96: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002f98: 68fb ldr r3, [r7, #12] + 8002f9a: 6a1b ldr r3, [r3, #32] + 8002f9c: f023 0201 bic.w r2, r3, #1 + 8002fa0: 68fb ldr r3, [r7, #12] + 8002fa2: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002fa4: 68fb ldr r3, [r7, #12] + 8002fa6: 699b ldr r3, [r3, #24] + 8002fa8: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8002faa: 693b ldr r3, [r7, #16] + 8002fac: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8002fb0: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8002fb2: 687b ldr r3, [r7, #4] + 8002fb4: 011b lsls r3, r3, #4 + 8002fb6: 693a ldr r2, [r7, #16] + 8002fb8: 4313 orrs r3, r2 + 8002fba: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8002fbc: 697b ldr r3, [r7, #20] + 8002fbe: f023 030a bic.w r3, r3, #10 + 8002fc2: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8002fc4: 697a ldr r2, [r7, #20] + 8002fc6: 68bb ldr r3, [r7, #8] + 8002fc8: 4313 orrs r3, r2 + 8002fca: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8002fcc: 68fb ldr r3, [r7, #12] + 8002fce: 693a ldr r2, [r7, #16] + 8002fd0: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002fd2: 68fb ldr r3, [r7, #12] + 8002fd4: 697a ldr r2, [r7, #20] + 8002fd6: 621a str r2, [r3, #32] +} + 8002fd8: bf00 nop + 8002fda: 371c adds r7, #28 + 8002fdc: 46bd mov sp, r7 + 8002fde: bc80 pop {r7} + 8002fe0: 4770 bx lr + +08002fe2 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002fe2: b480 push {r7} + 8002fe4: b087 sub sp, #28 + 8002fe6: af00 add r7, sp, #0 + 8002fe8: 60f8 str r0, [r7, #12] + 8002fea: 60b9 str r1, [r7, #8] + 8002fec: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 8002fee: 68fb ldr r3, [r7, #12] + 8002ff0: 6a1b ldr r3, [r3, #32] + 8002ff2: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002ff4: 68fb ldr r3, [r7, #12] + 8002ff6: 6a1b ldr r3, [r3, #32] + 8002ff8: f023 0210 bic.w r2, r3, #16 + 8002ffc: 68fb ldr r3, [r7, #12] + 8002ffe: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8003000: 68fb ldr r3, [r7, #12] + 8003002: 699b ldr r3, [r3, #24] + 8003004: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8003006: 693b ldr r3, [r7, #16] + 8003008: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 800300c: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 800300e: 687b ldr r3, [r7, #4] + 8003010: 031b lsls r3, r3, #12 + 8003012: 693a ldr r2, [r7, #16] + 8003014: 4313 orrs r3, r2 + 8003016: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8003018: 697b ldr r3, [r7, #20] + 800301a: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 800301e: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8003020: 68bb ldr r3, [r7, #8] + 8003022: 011b lsls r3, r3, #4 + 8003024: 697a ldr r2, [r7, #20] + 8003026: 4313 orrs r3, r2 + 8003028: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 800302a: 68fb ldr r3, [r7, #12] + 800302c: 693a ldr r2, [r7, #16] + 800302e: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8003030: 68fb ldr r3, [r7, #12] + 8003032: 697a ldr r2, [r7, #20] + 8003034: 621a str r2, [r3, #32] +} + 8003036: bf00 nop + 8003038: 371c adds r7, #28 + 800303a: 46bd mov sp, r7 + 800303c: bc80 pop {r7} + 800303e: 4770 bx lr + +08003040 : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 8003040: b480 push {r7} + 8003042: b085 sub sp, #20 + 8003044: af00 add r7, sp, #0 + 8003046: 6078 str r0, [r7, #4] + 8003048: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 800304a: 687b ldr r3, [r7, #4] + 800304c: 689b ldr r3, [r3, #8] + 800304e: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8003050: 68fb ldr r3, [r7, #12] + 8003052: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003056: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8003058: 683a ldr r2, [r7, #0] + 800305a: 68fb ldr r3, [r7, #12] + 800305c: 4313 orrs r3, r2 + 800305e: f043 0307 orr.w r3, r3, #7 + 8003062: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8003064: 687b ldr r3, [r7, #4] + 8003066: 68fa ldr r2, [r7, #12] + 8003068: 609a str r2, [r3, #8] +} + 800306a: bf00 nop + 800306c: 3714 adds r7, #20 + 800306e: 46bd mov sp, r7 + 8003070: bc80 pop {r7} + 8003072: 4770 bx lr + +08003074 : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8003074: b480 push {r7} + 8003076: b087 sub sp, #28 + 8003078: af00 add r7, sp, #0 + 800307a: 60f8 str r0, [r7, #12] + 800307c: 60b9 str r1, [r7, #8] + 800307e: 607a str r2, [r7, #4] + 8003080: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8003082: 68fb ldr r3, [r7, #12] + 8003084: 689b ldr r3, [r3, #8] + 8003086: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8003088: 697b ldr r3, [r7, #20] + 800308a: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800308e: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8003090: 683b ldr r3, [r7, #0] + 8003092: 021a lsls r2, r3, #8 + 8003094: 687b ldr r3, [r7, #4] + 8003096: 431a orrs r2, r3 + 8003098: 68bb ldr r3, [r7, #8] + 800309a: 4313 orrs r3, r2 + 800309c: 697a ldr r2, [r7, #20] + 800309e: 4313 orrs r3, r2 + 80030a0: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 80030a2: 68fb ldr r3, [r7, #12] + 80030a4: 697a ldr r2, [r7, #20] + 80030a6: 609a str r2, [r3, #8] +} + 80030a8: bf00 nop + 80030aa: 371c adds r7, #28 + 80030ac: 46bd mov sp, r7 + 80030ae: bc80 pop {r7} + 80030b0: 4770 bx lr + +080030b2 : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 80030b2: b480 push {r7} + 80030b4: b087 sub sp, #28 + 80030b6: af00 add r7, sp, #0 + 80030b8: 60f8 str r0, [r7, #12] + 80030ba: 60b9 str r1, [r7, #8] + 80030bc: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 80030be: 68bb ldr r3, [r7, #8] + 80030c0: f003 031f and.w r3, r3, #31 + 80030c4: 2201 movs r2, #1 + 80030c6: fa02 f303 lsl.w r3, r2, r3 + 80030ca: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 80030cc: 68fb ldr r3, [r7, #12] + 80030ce: 6a1a ldr r2, [r3, #32] + 80030d0: 697b ldr r3, [r7, #20] + 80030d2: 43db mvns r3, r3 + 80030d4: 401a ands r2, r3 + 80030d6: 68fb ldr r3, [r7, #12] + 80030d8: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 80030da: 68fb ldr r3, [r7, #12] + 80030dc: 6a1a ldr r2, [r3, #32] + 80030de: 68bb ldr r3, [r7, #8] + 80030e0: f003 031f and.w r3, r3, #31 + 80030e4: 6879 ldr r1, [r7, #4] + 80030e6: fa01 f303 lsl.w r3, r1, r3 + 80030ea: 431a orrs r2, r3 + 80030ec: 68fb ldr r3, [r7, #12] + 80030ee: 621a str r2, [r3, #32] +} + 80030f0: bf00 nop + 80030f2: 371c adds r7, #28 + 80030f4: 46bd mov sp, r7 + 80030f6: bc80 pop {r7} + 80030f8: 4770 bx lr + ... + +080030fc : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 80030fc: b480 push {r7} + 80030fe: b085 sub sp, #20 + 8003100: af00 add r7, sp, #0 + 8003102: 6078 str r0, [r7, #4] + 8003104: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 8003106: 687b ldr r3, [r7, #4] + 8003108: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 800310c: 2b01 cmp r3, #1 + 800310e: d101 bne.n 8003114 + 8003110: 2302 movs r3, #2 + 8003112: e046 b.n 80031a2 + 8003114: 687b ldr r3, [r7, #4] + 8003116: 2201 movs r2, #1 + 8003118: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 800311c: 687b ldr r3, [r7, #4] + 800311e: 2202 movs r2, #2 + 8003120: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8003124: 687b ldr r3, [r7, #4] + 8003126: 681b ldr r3, [r3, #0] + 8003128: 685b ldr r3, [r3, #4] + 800312a: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 800312c: 687b ldr r3, [r7, #4] + 800312e: 681b ldr r3, [r3, #0] + 8003130: 689b ldr r3, [r3, #8] + 8003132: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8003134: 68fb ldr r3, [r7, #12] + 8003136: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800313a: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 800313c: 683b ldr r3, [r7, #0] + 800313e: 681b ldr r3, [r3, #0] + 8003140: 68fa ldr r2, [r7, #12] + 8003142: 4313 orrs r3, r2 + 8003144: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8003146: 687b ldr r3, [r7, #4] + 8003148: 681b ldr r3, [r3, #0] + 800314a: 68fa ldr r2, [r7, #12] + 800314c: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 800314e: 687b ldr r3, [r7, #4] + 8003150: 681b ldr r3, [r3, #0] + 8003152: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8003156: d00e beq.n 8003176 + 8003158: 687b ldr r3, [r7, #4] + 800315a: 681b ldr r3, [r3, #0] + 800315c: 4a13 ldr r2, [pc, #76] @ (80031ac ) + 800315e: 4293 cmp r3, r2 + 8003160: d009 beq.n 8003176 + 8003162: 687b ldr r3, [r7, #4] + 8003164: 681b ldr r3, [r3, #0] + 8003166: 4a12 ldr r2, [pc, #72] @ (80031b0 ) + 8003168: 4293 cmp r3, r2 + 800316a: d004 beq.n 8003176 + 800316c: 687b ldr r3, [r7, #4] + 800316e: 681b ldr r3, [r3, #0] + 8003170: 4a10 ldr r2, [pc, #64] @ (80031b4 ) + 8003172: 4293 cmp r3, r2 + 8003174: d10c bne.n 8003190 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8003176: 68bb ldr r3, [r7, #8] + 8003178: f023 0380 bic.w r3, r3, #128 @ 0x80 + 800317c: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 800317e: 683b ldr r3, [r7, #0] + 8003180: 685b ldr r3, [r3, #4] + 8003182: 68ba ldr r2, [r7, #8] + 8003184: 4313 orrs r3, r2 + 8003186: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8003188: 687b ldr r3, [r7, #4] + 800318a: 681b ldr r3, [r3, #0] + 800318c: 68ba ldr r2, [r7, #8] + 800318e: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8003190: 687b ldr r3, [r7, #4] + 8003192: 2201 movs r2, #1 + 8003194: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8003198: 687b ldr r3, [r7, #4] + 800319a: 2200 movs r2, #0 + 800319c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 80031a0: 2300 movs r3, #0 +} + 80031a2: 4618 mov r0, r3 + 80031a4: 3714 adds r7, #20 + 80031a6: 46bd mov sp, r7 + 80031a8: bc80 pop {r7} + 80031aa: 4770 bx lr + 80031ac: 40000400 .word 0x40000400 + 80031b0: 40000800 .word 0x40000800 + 80031b4: 40010800 .word 0x40010800 + +080031b8 : + 80031b8: 4603 mov r3, r0 + 80031ba: 4402 add r2, r0 + 80031bc: 4293 cmp r3, r2 + 80031be: d100 bne.n 80031c2 + 80031c0: 4770 bx lr + 80031c2: f803 1b01 strb.w r1, [r3], #1 + 80031c6: e7f9 b.n 80031bc + +080031c8 <__libc_init_array>: + 80031c8: b570 push {r4, r5, r6, lr} + 80031ca: 2600 movs r6, #0 + 80031cc: 4d0c ldr r5, [pc, #48] @ (8003200 <__libc_init_array+0x38>) + 80031ce: 4c0d ldr r4, [pc, #52] @ (8003204 <__libc_init_array+0x3c>) + 80031d0: 1b64 subs r4, r4, r5 + 80031d2: 10a4 asrs r4, r4, #2 + 80031d4: 42a6 cmp r6, r4 + 80031d6: d109 bne.n 80031ec <__libc_init_array+0x24> + 80031d8: f000 f81a bl 8003210 <_init> + 80031dc: 2600 movs r6, #0 + 80031de: 4d0a ldr r5, [pc, #40] @ (8003208 <__libc_init_array+0x40>) + 80031e0: 4c0a ldr r4, [pc, #40] @ (800320c <__libc_init_array+0x44>) + 80031e2: 1b64 subs r4, r4, r5 + 80031e4: 10a4 asrs r4, r4, #2 + 80031e6: 42a6 cmp r6, r4 + 80031e8: d105 bne.n 80031f6 <__libc_init_array+0x2e> + 80031ea: bd70 pop {r4, r5, r6, pc} + 80031ec: f855 3b04 ldr.w r3, [r5], #4 + 80031f0: 4798 blx r3 + 80031f2: 3601 adds r6, #1 + 80031f4: e7ee b.n 80031d4 <__libc_init_array+0xc> + 80031f6: f855 3b04 ldr.w r3, [r5], #4 + 80031fa: 4798 blx r3 + 80031fc: 3601 adds r6, #1 + 80031fe: e7f2 b.n 80031e6 <__libc_init_array+0x1e> + 8003200: 0800324c .word 0x0800324c + 8003204: 0800324c .word 0x0800324c + 8003208: 0800324c .word 0x0800324c + 800320c: 08003250 .word 0x08003250 + +08003210 <_init>: + 8003210: b5f8 push {r3, r4, r5, r6, r7, lr} + 8003212: bf00 nop + 8003214: bcf8 pop {r3, r4, r5, r6, r7} + 8003216: bc08 pop {r3} + 8003218: 469e mov lr, r3 + 800321a: 4770 bx lr + +0800321c <_fini>: + 800321c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800321e: bf00 nop + 8003220: bcf8 pop {r3, r4, r5, r6, r7} + 8003222: bc08 pop {r3} + 8003224: 469e mov lr, r3 + 8003226: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_LED.map b/TP4_INIT_TFT/Debug/TP3_PWM_LED.map new file mode 100644 index 0000000..b025b51 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_LED.map @@ -0,0 +1,3436 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .text.affiche 0x00000000 0x88 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x74 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .rodata.conv_7seg + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayChar + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_Delay + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c87 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85b01 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f5d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b8a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b96 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x85975 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aa5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x30ec + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.main 0x080004b0 0x50 ./Core/Src/main.o + 0x080004b0 main + .text.SystemClock_Config + 0x08000500 0x8c ./Core/Src/main.o + 0x08000500 SystemClock_Config + .text.MX_SPI1_Init + 0x0800058c 0x6c ./Core/Src/main.o + .text.MX_TIM2_Init + 0x080005f8 0x9c ./Core/Src/main.o + .text.MX_TIM4_Init + 0x08000694 0xe8 ./Core/Src/main.o + .text.MX_TIM11_Init + 0x0800077c 0xc0 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x0800083c 0xc4 ./Core/Src/main.o + .text.HAL_TIM_PeriodElapsedCallback + 0x08000900 0x9c ./Core/Src/main.o + 0x08000900 HAL_TIM_PeriodElapsedCallback + .text.Error_Handler + 0x0800099c 0xc ./Core/Src/main.o + 0x0800099c Error_Handler + .text.HAL_MspInit + 0x080009a8 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x080009a8 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000a04 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a04 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000a8c 0xb8 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a8c HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000b44 0xb8 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000b44 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x08000bfc 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000bfc NMI_Handler + .text.HardFault_Handler + 0x08000c04 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000c04 HardFault_Handler + .text.MemManage_Handler + 0x08000c0c 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000c0c MemManage_Handler + .text.BusFault_Handler + 0x08000c14 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000c14 BusFault_Handler + .text.UsageFault_Handler + 0x08000c1c 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000c1c UsageFault_Handler + .text.SVC_Handler + 0x08000c24 0xc ./Core/Src/stm32l1xx_it.o + 0x08000c24 SVC_Handler + .text.DebugMon_Handler + 0x08000c30 0xc ./Core/Src/stm32l1xx_it.o + 0x08000c30 DebugMon_Handler + .text.PendSV_Handler + 0x08000c3c 0xc ./Core/Src/stm32l1xx_it.o + 0x08000c3c PendSV_Handler + .text.SysTick_Handler + 0x08000c48 0xc ./Core/Src/stm32l1xx_it.o + 0x08000c48 SysTick_Handler + .text.TIM11_IRQHandler + 0x08000c54 0x14 ./Core/Src/stm32l1xx_it.o + 0x08000c54 TIM11_IRQHandler + .text.TIM2_IRQHandler + 0x08000c68 0x14 ./Core/Src/stm32l1xx_it.o + 0x08000c68 TIM2_IRQHandler + .text.TIM4_IRQHandler + 0x08000c7c 0x14 ./Core/Src/stm32l1xx_it.o + 0x08000c7c TIM4_IRQHandler + .text.EXTI15_10_IRQHandler + 0x08000c90 0x18 ./Core/Src/stm32l1xx_it.o + 0x08000c90 EXTI15_10_IRQHandler + .text.SystemInit + 0x08000ca8 0xc ./Core/Src/system_stm32l1xx.o + 0x08000ca8 SystemInit + .text.Reset_Handler + 0x08000cb4 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08000cb4 Reset_Handler + .text.Default_Handler + 0x08000cfc 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000cfc DMA2_Channel3_IRQHandler + 0x08000cfc EXTI2_IRQHandler + 0x08000cfc COMP_ACQ_IRQHandler + 0x08000cfc TIM10_IRQHandler + 0x08000cfc USB_HP_IRQHandler + 0x08000cfc TIM6_IRQHandler + 0x08000cfc PVD_IRQHandler + 0x08000cfc EXTI3_IRQHandler + 0x08000cfc EXTI0_IRQHandler + 0x08000cfc I2C2_EV_IRQHandler + 0x08000cfc SPI1_IRQHandler + 0x08000cfc USB_FS_WKUP_IRQHandler + 0x08000cfc DMA2_Channel2_IRQHandler + 0x08000cfc DMA1_Channel4_IRQHandler + 0x08000cfc ADC1_IRQHandler + 0x08000cfc USART3_IRQHandler + 0x08000cfc DMA1_Channel7_IRQHandler + 0x08000cfc LCD_IRQHandler + 0x08000cfc UART5_IRQHandler + 0x08000cfc DMA2_Channel1_IRQHandler + 0x08000cfc I2C1_EV_IRQHandler + 0x08000cfc DMA1_Channel6_IRQHandler + 0x08000cfc UART4_IRQHandler + 0x08000cfc DMA2_Channel4_IRQHandler + 0x08000cfc TIM3_IRQHandler + 0x08000cfc RCC_IRQHandler + 0x08000cfc DMA1_Channel1_IRQHandler + 0x08000cfc Default_Handler + 0x08000cfc TIM7_IRQHandler + 0x08000cfc TIM5_IRQHandler + 0x08000cfc EXTI9_5_IRQHandler + 0x08000cfc TIM9_IRQHandler + 0x08000cfc TAMPER_STAMP_IRQHandler + 0x08000cfc RTC_WKUP_IRQHandler + 0x08000cfc SPI2_IRQHandler + 0x08000cfc DMA2_Channel5_IRQHandler + 0x08000cfc DMA1_Channel5_IRQHandler + 0x08000cfc USB_LP_IRQHandler + 0x08000cfc EXTI4_IRQHandler + 0x08000cfc DMA1_Channel3_IRQHandler + 0x08000cfc COMP_IRQHandler + 0x08000cfc WWDG_IRQHandler + 0x08000cfc DAC_IRQHandler + 0x08000cfc EXTI1_IRQHandler + 0x08000cfc USART2_IRQHandler + 0x08000cfc I2C2_ER_IRQHandler + 0x08000cfc DMA1_Channel2_IRQHandler + 0x08000cfc FLASH_IRQHandler + 0x08000cfc USART1_IRQHandler + 0x08000cfc SPI3_IRQHandler + 0x08000cfc I2C1_ER_IRQHandler + 0x08000cfc RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000cfe 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000cfe MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000d28 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000d28 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000d38 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000d38 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000d48 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000d48 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000d6c 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000d6c MAX7219_Clear + .text.MAX7219_Write + 0x08000d98 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000d98 MAX7219_Write + .text.MAX7219_SendByte + 0x08000dd4 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000df8 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000df8 HAL_Init + .text.HAL_InitTick + 0x08000e28 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000e28 HAL_InitTick + .text.HAL_IncTick + 0x08000e9c 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000e9c HAL_IncTick + .text.HAL_GetTick + 0x08000ec0 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000ec0 HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x08000ed4 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000f1c 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000f38 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000f70 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000fc4 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08001028 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x0800106c 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x0800106c HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08001082 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08001082 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x080010ba 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x080010ba HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x080010d6 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x080010d6 HAL_SYSTICK_Config + *fill* 0x080010ee 0x2 + .text.HAL_GPIO_Init + 0x080010f0 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x080010f0 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x08001410 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001410 HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x08001440 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001440 HAL_GPIO_EXTI_IRQHandler + .text.HAL_GPIO_EXTI_Callback + 0x08001470 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001470 HAL_GPIO_EXTI_Callback + .text.HAL_RCC_OscConfig + 0x08001484 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001484 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x08001ae4 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001ae4 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001d4c 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001d4c HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001ec8 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001f88 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001f88 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x0800209a 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x0800209a HAL_SPI_Transmit + *fill* 0x08002322 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08002324 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08002434 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x080024dc 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024dc HAL_TIM_Base_Init + *fill* 0x0800255a 0x2 + .text.HAL_TIM_Base_Start_IT + 0x0800255c 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800255c HAL_TIM_Base_Start_IT + .text.HAL_TIM_PWM_Init + 0x08002600 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002600 HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x0800267e 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800267e HAL_TIM_PWM_MspInit + .text.HAL_TIM_PWM_Start + 0x08002690 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002690 HAL_TIM_PWM_Start + .text.HAL_TIM_IRQHandler + 0x080027bc 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080027bc HAL_TIM_IRQHandler + .text.HAL_TIM_PWM_ConfigChannel + 0x08002954 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002954 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x08002ad8 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002ad8 HAL_TIM_ConfigClockSource + .text.HAL_TIM_OC_DelayElapsedCallback + 0x08002c66 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c66 HAL_TIM_OC_DelayElapsedCallback + .text.HAL_TIM_IC_CaptureCallback + 0x08002c78 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c78 HAL_TIM_IC_CaptureCallback + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x08002c8a 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c8a HAL_TIM_PWM_PulseFinishedCallback + .text.HAL_TIM_TriggerCallback + 0x08002c9c 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c9c HAL_TIM_TriggerCallback + *fill* 0x08002cae 0x2 + .text.TIM_Base_SetConfig + 0x08002cb0 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x08002d9c 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x08002e14 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x08002e90 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08002f0a 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08002f86 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08002fe2 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08003040 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08003074 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x080030b2 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + *fill* 0x080030fa 0x2 + .text.HAL_TIMEx_MasterConfigSynchronization + 0x080030fc 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x080030fc HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x080031b8 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x080031b8 memset + .text.__libc_init_array + 0x080031c8 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x080031c8 __libc_init_array + *(.glue_7) + .glue_7 0x08003210 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08003210 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08003210 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08003210 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08003210 _init + .init 0x08003214 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x0800321c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x0800321c _fini + .fini 0x08003220 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08003228 . = ALIGN (0x4) + 0x08003228 _etext = . + +.vfp11_veneer 0x08003228 0x0 + .vfp11_veneer 0x08003228 0x0 linker stubs + +.v4_bx 0x08003228 0x0 + .v4_bx 0x08003228 0x0 linker stubs + +.iplt 0x08003228 0x0 + .iplt 0x08003228 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08003228 0x1c + 0x08003228 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x08003228 0x9 ./Core/Src/system_stm32l1xx.o + 0x08003228 PLLMulTable + *fill* 0x08003231 0x3 + .rodata.AHBPrescTable + 0x08003234 0x10 ./Core/Src/system_stm32l1xx.o + 0x08003234 AHBPrescTable + 0x08003244 . = ALIGN (0x4) + +.ARM.extab 0x08003244 0x0 + 0x08003244 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08003244 . = ALIGN (0x4) + +.ARM 0x08003244 0x8 + 0x08003244 . = ALIGN (0x4) + 0x08003244 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08003244 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x0800324c __exidx_end = . + 0x0800324c . = ALIGN (0x4) + +.preinit_array 0x0800324c 0x0 + 0x0800324c . = ALIGN (0x4) + 0x0800324c PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x0800324c PROVIDE (__preinit_array_end = .) + 0x0800324c . = ALIGN (0x4) + +.init_array 0x0800324c 0x4 + 0x0800324c . = ALIGN (0x4) + 0x0800324c PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x0800324c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08003250 PROVIDE (__init_array_end = .) + 0x08003250 . = ALIGN (0x4) + +.fini_array 0x08003250 0x4 + 0x08003250 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08003250 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08003254 . = ALIGN (0x4) + 0x08003254 _sidata = LOADADDR (.data) + +.rel.dyn 0x08003254 0x0 + .rel.iplt 0x08003254 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0x10 load address 0x08003254 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.sens 0x20000000 0x1 ./Core/Src/main.o + 0x20000000 sens + *fill* 0x20000001 0x3 + .data.SystemCoreClock + 0x20000004 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000004 SystemCoreClock + .data.uwTickPrio + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickPrio + .data.uwTickFreq + 0x2000000c 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x2000000c uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x20000010 . = ALIGN (0x4) + 0x20000010 _edata = . + +.igot.plt 0x20000010 0x0 load address 0x08003264 + .igot.plt 0x20000010 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x20000010 . = ALIGN (0x4) + +.bss 0x20000010 0x13c load address 0x08003264 + 0x20000010 _sbss = . + 0x20000010 __bss_start__ = _sbss + *(.bss) + .bss 0x20000010 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x2000002c 0x58 ./Core/Src/main.o + 0x2000002c hspi1 + .bss.htim2 0x20000084 0x40 ./Core/Src/main.o + 0x20000084 htim2 + .bss.htim4 0x200000c4 0x40 ./Core/Src/main.o + 0x200000c4 htim4 + .bss.htim11 0x20000104 0x40 ./Core/Src/main.o + 0x20000104 htim11 + .bss.angle 0x20000144 0x1 ./Core/Src/main.o + 0x20000144 angle + *fill* 0x20000145 0x3 + .bss.uwTick 0x20000148 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000148 uwTick + *(COMMON) + 0x2000014c . = ALIGN (0x4) + 0x2000014c _ebss = . + 0x2000014c __bss_end__ = _ebss + +._user_heap_stack + 0x2000014c 0x604 load address 0x08003264 + 0x20000150 . = ALIGN (0x8) + *fill* 0x2000014c 0x4 + [!provide] PROVIDE (end = .) + 0x20000150 PROVIDE (_end = .) + 0x20000350 . = (. + _Min_Heap_Size) + *fill* 0x20000150 0x200 + 0x20000750 . = (. + _Min_Stack_Size) + *fill* 0x20000350 0x400 + 0x20000750 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002fe 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000032b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000348 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP3_PWM_LED.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x998e + .debug_info 0x00000000 0x1324 ./Core/Src/main.o + .debug_info 0x00001324 0xe51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00002175 0x6f0 ./Core/Src/stm32l1xx_it.o + .debug_info 0x00002865 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x00002ae1 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x00002b11 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x0000331f 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x00003a0e 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x000046f3 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00004ca5 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x00005640 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x00006b19 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x000092e6 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x19f6 + .debug_abbrev 0x00000000 0x2f2 ./Core/Src/main.o + .debug_abbrev 0x000002f2 0x1ee ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x000004e0 0x190 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x00000670 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x0000078c 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x000007b0 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000999 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000c0e 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000f2a 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x000010fe 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x000013b6 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x00001630 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x0000188e 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xab0 + .debug_aranges + 0x00000000 0x68 ./Core/Src/main.o + .debug_aranges + 0x00000068 0x48 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x000000b0 0x80 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000130 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000158 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000180 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001f8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002d8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x00000400 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000458 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004e8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x000006b8 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a88 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x81f + .debug_rnglists + 0x00000000 0x50 ./Core/Src/main.o + .debug_rnglists + 0x00000050 0x34 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000084 0x5b ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000df 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000f9 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x00000112 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x00000167 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x0000020a 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002e3 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x00000322 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x0000038f 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004fe 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x00000805 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xab8c + .debug_line 0x00000000 0x999 ./Core/Src/main.o + .debug_line 0x00000999 0x7df ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00001178 0x7d0 ./Core/Src/stm32l1xx_it.o + .debug_line 0x00001948 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x000020a9 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00002122 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002931 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x000032bd 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003f18 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x000048e8 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x00005837 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x00007482 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a433 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x886ff + .debug_str 0x00000000 0x886ff ./Core/Src/main.o + 0x86838 (size before relaxing) + .debug_str 0x000886ff 0x863dd ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x000886ff 0x85e03 ./Core/Src/stm32l1xx_it.o + .debug_str 0x000886ff 0x85902 ./Core/Src/system_stm32l1xx.o + .debug_str 0x000886ff 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x000886ff 0x85e5e ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x000886ff 0x8602a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x000886ff 0x86136 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x000886ff 0x85a95 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x000886ff 0x85dbe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x000886ff 0x86224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x000886ff 0x86c05 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x000886ff 0x85daa ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2c2c + .debug_frame 0x00000000 0x160 ./Core/Src/main.o + .debug_frame 0x00000160 0xec ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x0000024c 0x174 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x000003c0 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x00000418 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x000005b0 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x000008ec 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000dd4 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000f20 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x00001144 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x0000196c 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002b20 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002b80 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002ba0 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002bcc 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002bf8 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.list b/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.list new file mode 100644 index 0000000..c42f0b6 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.list @@ -0,0 +1,9179 @@ + +TP3_PWM_MOTOR.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 000036c8 08000140 08000140 00001140 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000002c 08003808 08003808 00004808 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08003834 08003834 00005010 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08003834 08003834 00004834 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 0800383c 0800383c 00005010 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 0800383c 0800383c 0000483c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08003840 08003840 00004840 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 00000010 20000000 08003844 00005000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000000fc 20000010 08003854 00005010 2**2 + ALLOC + 10 ._user_heap_stack 00000604 2000010c 08003854 0000510c 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 00005010 2**0 + CONTENTS, READONLY + 12 .debug_info 00009912 00000000 00000000 00005039 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000019e3 00000000 00000000 0000e94b 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000aa0 00000000 00000000 00010330 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000812 00000000 00000000 00010dd0 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 000115e2 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000aade 00000000 00000000 00026bdb 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 000886db 00000000 00000000 000316b9 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b9d94 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002cec 00000000 00000000 000b9dd8 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000bcac4 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +08000140 <__do_global_dtors_aux>: + 8000140: b510 push {r4, lr} + 8000142: 4c05 ldr r4, [pc, #20] @ (8000158 <__do_global_dtors_aux+0x18>) + 8000144: 7823 ldrb r3, [r4, #0] + 8000146: b933 cbnz r3, 8000156 <__do_global_dtors_aux+0x16> + 8000148: 4b04 ldr r3, [pc, #16] @ (800015c <__do_global_dtors_aux+0x1c>) + 800014a: b113 cbz r3, 8000152 <__do_global_dtors_aux+0x12> + 800014c: 4804 ldr r0, [pc, #16] @ (8000160 <__do_global_dtors_aux+0x20>) + 800014e: f3af 8000 nop.w + 8000152: 2301 movs r3, #1 + 8000154: 7023 strb r3, [r4, #0] + 8000156: bd10 pop {r4, pc} + 8000158: 20000010 .word 0x20000010 + 800015c: 00000000 .word 0x00000000 + 8000160: 080037f0 .word 0x080037f0 + +08000164 : + 8000164: b508 push {r3, lr} + 8000166: 4b03 ldr r3, [pc, #12] @ (8000174 ) + 8000168: b11b cbz r3, 8000172 + 800016a: 4903 ldr r1, [pc, #12] @ (8000178 ) + 800016c: 4803 ldr r0, [pc, #12] @ (800017c ) + 800016e: f3af 8000 nop.w + 8000172: bd08 pop {r3, pc} + 8000174: 00000000 .word 0x00000000 + 8000178: 20000014 .word 0x20000014 + 800017c: 080037f0 .word 0x080037f0 + +08000180 <__aeabi_dmul>: + 8000180: b570 push {r4, r5, r6, lr} + 8000182: f04f 0cff mov.w ip, #255 @ 0xff + 8000186: f44c 6ce0 orr.w ip, ip, #1792 @ 0x700 + 800018a: ea1c 5411 ands.w r4, ip, r1, lsr #20 + 800018e: bf1d ittte ne + 8000190: ea1c 5513 andsne.w r5, ip, r3, lsr #20 + 8000194: ea94 0f0c teqne r4, ip + 8000198: ea95 0f0c teqne r5, ip + 800019c: f000 f8de bleq 800035c <__aeabi_dmul+0x1dc> + 80001a0: 442c add r4, r5 + 80001a2: ea81 0603 eor.w r6, r1, r3 + 80001a6: ea21 514c bic.w r1, r1, ip, lsl #21 + 80001aa: ea23 534c bic.w r3, r3, ip, lsl #21 + 80001ae: ea50 3501 orrs.w r5, r0, r1, lsl #12 + 80001b2: bf18 it ne + 80001b4: ea52 3503 orrsne.w r5, r2, r3, lsl #12 + 80001b8: f441 1180 orr.w r1, r1, #1048576 @ 0x100000 + 80001bc: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 + 80001c0: d038 beq.n 8000234 <__aeabi_dmul+0xb4> + 80001c2: fba0 ce02 umull ip, lr, r0, r2 + 80001c6: f04f 0500 mov.w r5, #0 + 80001ca: fbe1 e502 umlal lr, r5, r1, r2 + 80001ce: f006 4200 and.w r2, r6, #2147483648 @ 0x80000000 + 80001d2: fbe0 e503 umlal lr, r5, r0, r3 + 80001d6: f04f 0600 mov.w r6, #0 + 80001da: fbe1 5603 umlal r5, r6, r1, r3 + 80001de: f09c 0f00 teq ip, #0 + 80001e2: bf18 it ne + 80001e4: f04e 0e01 orrne.w lr, lr, #1 + 80001e8: f1a4 04ff sub.w r4, r4, #255 @ 0xff + 80001ec: f5b6 7f00 cmp.w r6, #512 @ 0x200 + 80001f0: f564 7440 sbc.w r4, r4, #768 @ 0x300 + 80001f4: d204 bcs.n 8000200 <__aeabi_dmul+0x80> + 80001f6: ea5f 0e4e movs.w lr, lr, lsl #1 + 80001fa: 416d adcs r5, r5 + 80001fc: eb46 0606 adc.w r6, r6, r6 + 8000200: ea42 21c6 orr.w r1, r2, r6, lsl #11 + 8000204: ea41 5155 orr.w r1, r1, r5, lsr #21 + 8000208: ea4f 20c5 mov.w r0, r5, lsl #11 + 800020c: ea40 505e orr.w r0, r0, lr, lsr #21 + 8000210: ea4f 2ece mov.w lr, lr, lsl #11 + 8000214: f1b4 0cfd subs.w ip, r4, #253 @ 0xfd + 8000218: bf88 it hi + 800021a: f5bc 6fe0 cmphi.w ip, #1792 @ 0x700 + 800021e: d81e bhi.n 800025e <__aeabi_dmul+0xde> + 8000220: f1be 4f00 cmp.w lr, #2147483648 @ 0x80000000 + 8000224: bf08 it eq + 8000226: ea5f 0e50 movseq.w lr, r0, lsr #1 + 800022a: f150 0000 adcs.w r0, r0, #0 + 800022e: eb41 5104 adc.w r1, r1, r4, lsl #20 + 8000232: bd70 pop {r4, r5, r6, pc} + 8000234: f006 4600 and.w r6, r6, #2147483648 @ 0x80000000 + 8000238: ea46 0101 orr.w r1, r6, r1 + 800023c: ea40 0002 orr.w r0, r0, r2 + 8000240: ea81 0103 eor.w r1, r1, r3 + 8000244: ebb4 045c subs.w r4, r4, ip, lsr #1 + 8000248: bfc2 ittt gt + 800024a: ebd4 050c rsbsgt r5, r4, ip + 800024e: ea41 5104 orrgt.w r1, r1, r4, lsl #20 + 8000252: bd70 popgt {r4, r5, r6, pc} + 8000254: f441 1180 orr.w r1, r1, #1048576 @ 0x100000 + 8000258: f04f 0e00 mov.w lr, #0 + 800025c: 3c01 subs r4, #1 + 800025e: f300 80ab bgt.w 80003b8 <__aeabi_dmul+0x238> + 8000262: f114 0f36 cmn.w r4, #54 @ 0x36 + 8000266: bfde ittt le + 8000268: 2000 movle r0, #0 + 800026a: f001 4100 andle.w r1, r1, #2147483648 @ 0x80000000 + 800026e: bd70 pople {r4, r5, r6, pc} + 8000270: f1c4 0400 rsb r4, r4, #0 + 8000274: 3c20 subs r4, #32 + 8000276: da35 bge.n 80002e4 <__aeabi_dmul+0x164> + 8000278: 340c adds r4, #12 + 800027a: dc1b bgt.n 80002b4 <__aeabi_dmul+0x134> + 800027c: f104 0414 add.w r4, r4, #20 + 8000280: f1c4 0520 rsb r5, r4, #32 + 8000284: fa00 f305 lsl.w r3, r0, r5 + 8000288: fa20 f004 lsr.w r0, r0, r4 + 800028c: fa01 f205 lsl.w r2, r1, r5 + 8000290: ea40 0002 orr.w r0, r0, r2 + 8000294: f001 4200 and.w r2, r1, #2147483648 @ 0x80000000 + 8000298: f021 4100 bic.w r1, r1, #2147483648 @ 0x80000000 + 800029c: eb10 70d3 adds.w r0, r0, r3, lsr #31 + 80002a0: fa21 f604 lsr.w r6, r1, r4 + 80002a4: eb42 0106 adc.w r1, r2, r6 + 80002a8: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 + 80002ac: bf08 it eq + 80002ae: ea20 70d3 biceq.w r0, r0, r3, lsr #31 + 80002b2: bd70 pop {r4, r5, r6, pc} + 80002b4: f1c4 040c rsb r4, r4, #12 + 80002b8: f1c4 0520 rsb r5, r4, #32 + 80002bc: fa00 f304 lsl.w r3, r0, r4 + 80002c0: fa20 f005 lsr.w r0, r0, r5 + 80002c4: fa01 f204 lsl.w r2, r1, r4 + 80002c8: ea40 0002 orr.w r0, r0, r2 + 80002cc: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 + 80002d0: eb10 70d3 adds.w r0, r0, r3, lsr #31 + 80002d4: f141 0100 adc.w r1, r1, #0 + 80002d8: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 + 80002dc: bf08 it eq + 80002de: ea20 70d3 biceq.w r0, r0, r3, lsr #31 + 80002e2: bd70 pop {r4, r5, r6, pc} + 80002e4: f1c4 0520 rsb r5, r4, #32 + 80002e8: fa00 f205 lsl.w r2, r0, r5 + 80002ec: ea4e 0e02 orr.w lr, lr, r2 + 80002f0: fa20 f304 lsr.w r3, r0, r4 + 80002f4: fa01 f205 lsl.w r2, r1, r5 + 80002f8: ea43 0302 orr.w r3, r3, r2 + 80002fc: fa21 f004 lsr.w r0, r1, r4 + 8000300: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 + 8000304: fa21 f204 lsr.w r2, r1, r4 + 8000308: ea20 0002 bic.w r0, r0, r2 + 800030c: eb00 70d3 add.w r0, r0, r3, lsr #31 + 8000310: ea5e 0e43 orrs.w lr, lr, r3, lsl #1 + 8000314: bf08 it eq + 8000316: ea20 70d3 biceq.w r0, r0, r3, lsr #31 + 800031a: bd70 pop {r4, r5, r6, pc} + 800031c: f094 0f00 teq r4, #0 + 8000320: d10f bne.n 8000342 <__aeabi_dmul+0x1c2> + 8000322: f001 4600 and.w r6, r1, #2147483648 @ 0x80000000 + 8000326: 0040 lsls r0, r0, #1 + 8000328: eb41 0101 adc.w r1, r1, r1 + 800032c: f411 1f80 tst.w r1, #1048576 @ 0x100000 + 8000330: bf08 it eq + 8000332: 3c01 subeq r4, #1 + 8000334: d0f7 beq.n 8000326 <__aeabi_dmul+0x1a6> + 8000336: ea41 0106 orr.w r1, r1, r6 + 800033a: f095 0f00 teq r5, #0 + 800033e: bf18 it ne + 8000340: 4770 bxne lr + 8000342: f003 4600 and.w r6, r3, #2147483648 @ 0x80000000 + 8000346: 0052 lsls r2, r2, #1 + 8000348: eb43 0303 adc.w r3, r3, r3 + 800034c: f413 1f80 tst.w r3, #1048576 @ 0x100000 + 8000350: bf08 it eq + 8000352: 3d01 subeq r5, #1 + 8000354: d0f7 beq.n 8000346 <__aeabi_dmul+0x1c6> + 8000356: ea43 0306 orr.w r3, r3, r6 + 800035a: 4770 bx lr + 800035c: ea94 0f0c teq r4, ip + 8000360: ea0c 5513 and.w r5, ip, r3, lsr #20 + 8000364: bf18 it ne + 8000366: ea95 0f0c teqne r5, ip + 800036a: d00c beq.n 8000386 <__aeabi_dmul+0x206> + 800036c: ea50 0641 orrs.w r6, r0, r1, lsl #1 + 8000370: bf18 it ne + 8000372: ea52 0643 orrsne.w r6, r2, r3, lsl #1 + 8000376: d1d1 bne.n 800031c <__aeabi_dmul+0x19c> + 8000378: ea81 0103 eor.w r1, r1, r3 + 800037c: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 + 8000380: f04f 0000 mov.w r0, #0 + 8000384: bd70 pop {r4, r5, r6, pc} + 8000386: ea50 0641 orrs.w r6, r0, r1, lsl #1 + 800038a: bf06 itte eq + 800038c: 4610 moveq r0, r2 + 800038e: 4619 moveq r1, r3 + 8000390: ea52 0643 orrsne.w r6, r2, r3, lsl #1 + 8000394: d019 beq.n 80003ca <__aeabi_dmul+0x24a> + 8000396: ea94 0f0c teq r4, ip + 800039a: d102 bne.n 80003a2 <__aeabi_dmul+0x222> + 800039c: ea50 3601 orrs.w r6, r0, r1, lsl #12 + 80003a0: d113 bne.n 80003ca <__aeabi_dmul+0x24a> + 80003a2: ea95 0f0c teq r5, ip + 80003a6: d105 bne.n 80003b4 <__aeabi_dmul+0x234> + 80003a8: ea52 3603 orrs.w r6, r2, r3, lsl #12 + 80003ac: bf1c itt ne + 80003ae: 4610 movne r0, r2 + 80003b0: 4619 movne r1, r3 + 80003b2: d10a bne.n 80003ca <__aeabi_dmul+0x24a> + 80003b4: ea81 0103 eor.w r1, r1, r3 + 80003b8: f001 4100 and.w r1, r1, #2147483648 @ 0x80000000 + 80003bc: f041 41fe orr.w r1, r1, #2130706432 @ 0x7f000000 + 80003c0: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 + 80003c4: f04f 0000 mov.w r0, #0 + 80003c8: bd70 pop {r4, r5, r6, pc} + 80003ca: f041 41fe orr.w r1, r1, #2130706432 @ 0x7f000000 + 80003ce: f441 0178 orr.w r1, r1, #16252928 @ 0xf80000 + 80003d2: bd70 pop {r4, r5, r6, pc} + +080003d4 <__aeabi_drsub>: + 80003d4: f081 4100 eor.w r1, r1, #2147483648 @ 0x80000000 + 80003d8: e002 b.n 80003e0 <__adddf3> + 80003da: bf00 nop + +080003dc <__aeabi_dsub>: + 80003dc: f083 4300 eor.w r3, r3, #2147483648 @ 0x80000000 + +080003e0 <__adddf3>: + 80003e0: b530 push {r4, r5, lr} + 80003e2: ea4f 0441 mov.w r4, r1, lsl #1 + 80003e6: ea4f 0543 mov.w r5, r3, lsl #1 + 80003ea: ea94 0f05 teq r4, r5 + 80003ee: bf08 it eq + 80003f0: ea90 0f02 teqeq r0, r2 + 80003f4: bf1f itttt ne + 80003f6: ea54 0c00 orrsne.w ip, r4, r0 + 80003fa: ea55 0c02 orrsne.w ip, r5, r2 + 80003fe: ea7f 5c64 mvnsne.w ip, r4, asr #21 + 8000402: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 8000406: f000 80e2 beq.w 80005ce <__adddf3+0x1ee> + 800040a: ea4f 5454 mov.w r4, r4, lsr #21 + 800040e: ebd4 5555 rsbs r5, r4, r5, lsr #21 + 8000412: bfb8 it lt + 8000414: 426d neglt r5, r5 + 8000416: dd0c ble.n 8000432 <__adddf3+0x52> + 8000418: 442c add r4, r5 + 800041a: ea80 0202 eor.w r2, r0, r2 + 800041e: ea81 0303 eor.w r3, r1, r3 + 8000422: ea82 0000 eor.w r0, r2, r0 + 8000426: ea83 0101 eor.w r1, r3, r1 + 800042a: ea80 0202 eor.w r2, r0, r2 + 800042e: ea81 0303 eor.w r3, r1, r3 + 8000432: 2d36 cmp r5, #54 @ 0x36 + 8000434: bf88 it hi + 8000436: bd30 pophi {r4, r5, pc} + 8000438: f011 4f00 tst.w r1, #2147483648 @ 0x80000000 + 800043c: ea4f 3101 mov.w r1, r1, lsl #12 + 8000440: f44f 1c80 mov.w ip, #1048576 @ 0x100000 + 8000444: ea4c 3111 orr.w r1, ip, r1, lsr #12 + 8000448: d002 beq.n 8000450 <__adddf3+0x70> + 800044a: 4240 negs r0, r0 + 800044c: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8000450: f013 4f00 tst.w r3, #2147483648 @ 0x80000000 + 8000454: ea4f 3303 mov.w r3, r3, lsl #12 + 8000458: ea4c 3313 orr.w r3, ip, r3, lsr #12 + 800045c: d002 beq.n 8000464 <__adddf3+0x84> + 800045e: 4252 negs r2, r2 + 8000460: eb63 0343 sbc.w r3, r3, r3, lsl #1 + 8000464: ea94 0f05 teq r4, r5 + 8000468: f000 80a7 beq.w 80005ba <__adddf3+0x1da> + 800046c: f1a4 0401 sub.w r4, r4, #1 + 8000470: f1d5 0e20 rsbs lr, r5, #32 + 8000474: db0d blt.n 8000492 <__adddf3+0xb2> + 8000476: fa02 fc0e lsl.w ip, r2, lr + 800047a: fa22 f205 lsr.w r2, r2, r5 + 800047e: 1880 adds r0, r0, r2 + 8000480: f141 0100 adc.w r1, r1, #0 + 8000484: fa03 f20e lsl.w r2, r3, lr + 8000488: 1880 adds r0, r0, r2 + 800048a: fa43 f305 asr.w r3, r3, r5 + 800048e: 4159 adcs r1, r3 + 8000490: e00e b.n 80004b0 <__adddf3+0xd0> + 8000492: f1a5 0520 sub.w r5, r5, #32 + 8000496: f10e 0e20 add.w lr, lr, #32 + 800049a: 2a01 cmp r2, #1 + 800049c: fa03 fc0e lsl.w ip, r3, lr + 80004a0: bf28 it cs + 80004a2: f04c 0c02 orrcs.w ip, ip, #2 + 80004a6: fa43 f305 asr.w r3, r3, r5 + 80004aa: 18c0 adds r0, r0, r3 + 80004ac: eb51 71e3 adcs.w r1, r1, r3, asr #31 + 80004b0: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 + 80004b4: d507 bpl.n 80004c6 <__adddf3+0xe6> + 80004b6: f04f 0e00 mov.w lr, #0 + 80004ba: f1dc 0c00 rsbs ip, ip, #0 + 80004be: eb7e 0000 sbcs.w r0, lr, r0 + 80004c2: eb6e 0101 sbc.w r1, lr, r1 + 80004c6: f5b1 1f80 cmp.w r1, #1048576 @ 0x100000 + 80004ca: d31b bcc.n 8000504 <__adddf3+0x124> + 80004cc: f5b1 1f00 cmp.w r1, #2097152 @ 0x200000 + 80004d0: d30c bcc.n 80004ec <__adddf3+0x10c> + 80004d2: 0849 lsrs r1, r1, #1 + 80004d4: ea5f 0030 movs.w r0, r0, rrx + 80004d8: ea4f 0c3c mov.w ip, ip, rrx + 80004dc: f104 0401 add.w r4, r4, #1 + 80004e0: ea4f 5244 mov.w r2, r4, lsl #21 + 80004e4: f512 0f80 cmn.w r2, #4194304 @ 0x400000 + 80004e8: f080 809a bcs.w 8000620 <__adddf3+0x240> + 80004ec: f1bc 4f00 cmp.w ip, #2147483648 @ 0x80000000 + 80004f0: bf08 it eq + 80004f2: ea5f 0c50 movseq.w ip, r0, lsr #1 + 80004f6: f150 0000 adcs.w r0, r0, #0 + 80004fa: eb41 5104 adc.w r1, r1, r4, lsl #20 + 80004fe: ea41 0105 orr.w r1, r1, r5 + 8000502: bd30 pop {r4, r5, pc} + 8000504: ea5f 0c4c movs.w ip, ip, lsl #1 + 8000508: 4140 adcs r0, r0 + 800050a: eb41 0101 adc.w r1, r1, r1 + 800050e: 3c01 subs r4, #1 + 8000510: bf28 it cs + 8000512: f5b1 1f80 cmpcs.w r1, #1048576 @ 0x100000 + 8000516: d2e9 bcs.n 80004ec <__adddf3+0x10c> + 8000518: f091 0f00 teq r1, #0 + 800051c: bf04 itt eq + 800051e: 4601 moveq r1, r0 + 8000520: 2000 moveq r0, #0 + 8000522: fab1 f381 clz r3, r1 + 8000526: bf08 it eq + 8000528: 3320 addeq r3, #32 + 800052a: f1a3 030b sub.w r3, r3, #11 + 800052e: f1b3 0220 subs.w r2, r3, #32 + 8000532: da0c bge.n 800054e <__adddf3+0x16e> + 8000534: 320c adds r2, #12 + 8000536: dd08 ble.n 800054a <__adddf3+0x16a> + 8000538: f102 0c14 add.w ip, r2, #20 + 800053c: f1c2 020c rsb r2, r2, #12 + 8000540: fa01 f00c lsl.w r0, r1, ip + 8000544: fa21 f102 lsr.w r1, r1, r2 + 8000548: e00c b.n 8000564 <__adddf3+0x184> + 800054a: f102 0214 add.w r2, r2, #20 + 800054e: bfd8 it le + 8000550: f1c2 0c20 rsble ip, r2, #32 + 8000554: fa01 f102 lsl.w r1, r1, r2 + 8000558: fa20 fc0c lsr.w ip, r0, ip + 800055c: bfdc itt le + 800055e: ea41 010c orrle.w r1, r1, ip + 8000562: 4090 lslle r0, r2 + 8000564: 1ae4 subs r4, r4, r3 + 8000566: bfa2 ittt ge + 8000568: eb01 5104 addge.w r1, r1, r4, lsl #20 + 800056c: 4329 orrge r1, r5 + 800056e: bd30 popge {r4, r5, pc} + 8000570: ea6f 0404 mvn.w r4, r4 + 8000574: 3c1f subs r4, #31 + 8000576: da1c bge.n 80005b2 <__adddf3+0x1d2> + 8000578: 340c adds r4, #12 + 800057a: dc0e bgt.n 800059a <__adddf3+0x1ba> + 800057c: f104 0414 add.w r4, r4, #20 + 8000580: f1c4 0220 rsb r2, r4, #32 + 8000584: fa20 f004 lsr.w r0, r0, r4 + 8000588: fa01 f302 lsl.w r3, r1, r2 + 800058c: ea40 0003 orr.w r0, r0, r3 + 8000590: fa21 f304 lsr.w r3, r1, r4 + 8000594: ea45 0103 orr.w r1, r5, r3 + 8000598: bd30 pop {r4, r5, pc} + 800059a: f1c4 040c rsb r4, r4, #12 + 800059e: f1c4 0220 rsb r2, r4, #32 + 80005a2: fa20 f002 lsr.w r0, r0, r2 + 80005a6: fa01 f304 lsl.w r3, r1, r4 + 80005aa: ea40 0003 orr.w r0, r0, r3 + 80005ae: 4629 mov r1, r5 + 80005b0: bd30 pop {r4, r5, pc} + 80005b2: fa21 f004 lsr.w r0, r1, r4 + 80005b6: 4629 mov r1, r5 + 80005b8: bd30 pop {r4, r5, pc} + 80005ba: f094 0f00 teq r4, #0 + 80005be: f483 1380 eor.w r3, r3, #1048576 @ 0x100000 + 80005c2: bf06 itte eq + 80005c4: f481 1180 eoreq.w r1, r1, #1048576 @ 0x100000 + 80005c8: 3401 addeq r4, #1 + 80005ca: 3d01 subne r5, #1 + 80005cc: e74e b.n 800046c <__adddf3+0x8c> + 80005ce: ea7f 5c64 mvns.w ip, r4, asr #21 + 80005d2: bf18 it ne + 80005d4: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 80005d8: d029 beq.n 800062e <__adddf3+0x24e> + 80005da: ea94 0f05 teq r4, r5 + 80005de: bf08 it eq + 80005e0: ea90 0f02 teqeq r0, r2 + 80005e4: d005 beq.n 80005f2 <__adddf3+0x212> + 80005e6: ea54 0c00 orrs.w ip, r4, r0 + 80005ea: bf04 itt eq + 80005ec: 4619 moveq r1, r3 + 80005ee: 4610 moveq r0, r2 + 80005f0: bd30 pop {r4, r5, pc} + 80005f2: ea91 0f03 teq r1, r3 + 80005f6: bf1e ittt ne + 80005f8: 2100 movne r1, #0 + 80005fa: 2000 movne r0, #0 + 80005fc: bd30 popne {r4, r5, pc} + 80005fe: ea5f 5c54 movs.w ip, r4, lsr #21 + 8000602: d105 bne.n 8000610 <__adddf3+0x230> + 8000604: 0040 lsls r0, r0, #1 + 8000606: 4149 adcs r1, r1 + 8000608: bf28 it cs + 800060a: f041 4100 orrcs.w r1, r1, #2147483648 @ 0x80000000 + 800060e: bd30 pop {r4, r5, pc} + 8000610: f514 0480 adds.w r4, r4, #4194304 @ 0x400000 + 8000614: bf3c itt cc + 8000616: f501 1180 addcc.w r1, r1, #1048576 @ 0x100000 + 800061a: bd30 popcc {r4, r5, pc} + 800061c: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 + 8000620: f045 41fe orr.w r1, r5, #2130706432 @ 0x7f000000 + 8000624: f441 0170 orr.w r1, r1, #15728640 @ 0xf00000 + 8000628: f04f 0000 mov.w r0, #0 + 800062c: bd30 pop {r4, r5, pc} + 800062e: ea7f 5c64 mvns.w ip, r4, asr #21 + 8000632: bf1a itte ne + 8000634: 4619 movne r1, r3 + 8000636: 4610 movne r0, r2 + 8000638: ea7f 5c65 mvnseq.w ip, r5, asr #21 + 800063c: bf1c itt ne + 800063e: 460b movne r3, r1 + 8000640: 4602 movne r2, r0 + 8000642: ea50 3401 orrs.w r4, r0, r1, lsl #12 + 8000646: bf06 itte eq + 8000648: ea52 3503 orrseq.w r5, r2, r3, lsl #12 + 800064c: ea91 0f03 teqeq r1, r3 + 8000650: f441 2100 orrne.w r1, r1, #524288 @ 0x80000 + 8000654: bd30 pop {r4, r5, pc} + 8000656: bf00 nop + +08000658 <__aeabi_ui2d>: + 8000658: f090 0f00 teq r0, #0 + 800065c: bf04 itt eq + 800065e: 2100 moveq r1, #0 + 8000660: 4770 bxeq lr + 8000662: b530 push {r4, r5, lr} + 8000664: f44f 6480 mov.w r4, #1024 @ 0x400 + 8000668: f104 0432 add.w r4, r4, #50 @ 0x32 + 800066c: f04f 0500 mov.w r5, #0 + 8000670: f04f 0100 mov.w r1, #0 + 8000674: e750 b.n 8000518 <__adddf3+0x138> + 8000676: bf00 nop + +08000678 <__aeabi_i2d>: + 8000678: f090 0f00 teq r0, #0 + 800067c: bf04 itt eq + 800067e: 2100 moveq r1, #0 + 8000680: 4770 bxeq lr + 8000682: b530 push {r4, r5, lr} + 8000684: f44f 6480 mov.w r4, #1024 @ 0x400 + 8000688: f104 0432 add.w r4, r4, #50 @ 0x32 + 800068c: f010 4500 ands.w r5, r0, #2147483648 @ 0x80000000 + 8000690: bf48 it mi + 8000692: 4240 negmi r0, r0 + 8000694: f04f 0100 mov.w r1, #0 + 8000698: e73e b.n 8000518 <__adddf3+0x138> + 800069a: bf00 nop + +0800069c <__aeabi_f2d>: + 800069c: 0042 lsls r2, r0, #1 + 800069e: ea4f 01e2 mov.w r1, r2, asr #3 + 80006a2: ea4f 0131 mov.w r1, r1, rrx + 80006a6: ea4f 7002 mov.w r0, r2, lsl #28 + 80006aa: bf1f itttt ne + 80006ac: f012 437f andsne.w r3, r2, #4278190080 @ 0xff000000 + 80006b0: f093 4f7f teqne r3, #4278190080 @ 0xff000000 + 80006b4: f081 5160 eorne.w r1, r1, #939524096 @ 0x38000000 + 80006b8: 4770 bxne lr + 80006ba: f032 427f bics.w r2, r2, #4278190080 @ 0xff000000 + 80006be: bf08 it eq + 80006c0: 4770 bxeq lr + 80006c2: f093 4f7f teq r3, #4278190080 @ 0xff000000 + 80006c6: bf04 itt eq + 80006c8: f441 2100 orreq.w r1, r1, #524288 @ 0x80000 + 80006cc: 4770 bxeq lr + 80006ce: b530 push {r4, r5, lr} + 80006d0: f44f 7460 mov.w r4, #896 @ 0x380 + 80006d4: f001 4500 and.w r5, r1, #2147483648 @ 0x80000000 + 80006d8: f021 4100 bic.w r1, r1, #2147483648 @ 0x80000000 + 80006dc: e71c b.n 8000518 <__adddf3+0x138> + 80006de: bf00 nop + +080006e0 <__aeabi_ul2d>: + 80006e0: ea50 0201 orrs.w r2, r0, r1 + 80006e4: bf08 it eq + 80006e6: 4770 bxeq lr + 80006e8: b530 push {r4, r5, lr} + 80006ea: f04f 0500 mov.w r5, #0 + 80006ee: e00a b.n 8000706 <__aeabi_l2d+0x16> + +080006f0 <__aeabi_l2d>: + 80006f0: ea50 0201 orrs.w r2, r0, r1 + 80006f4: bf08 it eq + 80006f6: 4770 bxeq lr + 80006f8: b530 push {r4, r5, lr} + 80006fa: f011 4500 ands.w r5, r1, #2147483648 @ 0x80000000 + 80006fe: d502 bpl.n 8000706 <__aeabi_l2d+0x16> + 8000700: 4240 negs r0, r0 + 8000702: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8000706: f44f 6480 mov.w r4, #1024 @ 0x400 + 800070a: f104 0432 add.w r4, r4, #50 @ 0x32 + 800070e: ea5f 5c91 movs.w ip, r1, lsr #22 + 8000712: f43f aed8 beq.w 80004c6 <__adddf3+0xe6> + 8000716: f04f 0203 mov.w r2, #3 + 800071a: ea5f 0cdc movs.w ip, ip, lsr #3 + 800071e: bf18 it ne + 8000720: 3203 addne r2, #3 + 8000722: ea5f 0cdc movs.w ip, ip, lsr #3 + 8000726: bf18 it ne + 8000728: 3203 addne r2, #3 + 800072a: eb02 02dc add.w r2, r2, ip, lsr #3 + 800072e: f1c2 0320 rsb r3, r2, #32 + 8000732: fa00 fc03 lsl.w ip, r0, r3 + 8000736: fa20 f002 lsr.w r0, r0, r2 + 800073a: fa01 fe03 lsl.w lr, r1, r3 + 800073e: ea40 000e orr.w r0, r0, lr + 8000742: fa21 f102 lsr.w r1, r1, r2 + 8000746: 4414 add r4, r2 + 8000748: e6bd b.n 80004c6 <__adddf3+0xe6> + 800074a: bf00 nop + +0800074c <__aeabi_d2uiz>: + 800074c: 004a lsls r2, r1, #1 + 800074e: d211 bcs.n 8000774 <__aeabi_d2uiz+0x28> + 8000750: f512 1200 adds.w r2, r2, #2097152 @ 0x200000 + 8000754: d211 bcs.n 800077a <__aeabi_d2uiz+0x2e> + 8000756: d50d bpl.n 8000774 <__aeabi_d2uiz+0x28> + 8000758: f46f 7378 mvn.w r3, #992 @ 0x3e0 + 800075c: ebb3 5262 subs.w r2, r3, r2, asr #21 + 8000760: d40e bmi.n 8000780 <__aeabi_d2uiz+0x34> + 8000762: ea4f 23c1 mov.w r3, r1, lsl #11 + 8000766: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 800076a: ea43 5350 orr.w r3, r3, r0, lsr #21 + 800076e: fa23 f002 lsr.w r0, r3, r2 + 8000772: 4770 bx lr + 8000774: f04f 0000 mov.w r0, #0 + 8000778: 4770 bx lr + 800077a: ea50 3001 orrs.w r0, r0, r1, lsl #12 + 800077e: d102 bne.n 8000786 <__aeabi_d2uiz+0x3a> + 8000780: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000784: 4770 bx lr + 8000786: f04f 0000 mov.w r0, #0 + 800078a: 4770 bx lr + +0800078c <__aeabi_uldivmod>: + 800078c: b953 cbnz r3, 80007a4 <__aeabi_uldivmod+0x18> + 800078e: b94a cbnz r2, 80007a4 <__aeabi_uldivmod+0x18> + 8000790: 2900 cmp r1, #0 + 8000792: bf08 it eq + 8000794: 2800 cmpeq r0, #0 + 8000796: bf1c itt ne + 8000798: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800079c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 80007a0: f000 b98c b.w 8000abc <__aeabi_idiv0> + 80007a4: f1ad 0c08 sub.w ip, sp, #8 + 80007a8: e96d ce04 strd ip, lr, [sp, #-16]! + 80007ac: f000 f806 bl 80007bc <__udivmoddi4> + 80007b0: f8dd e004 ldr.w lr, [sp, #4] + 80007b4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80007b8: b004 add sp, #16 + 80007ba: 4770 bx lr + +080007bc <__udivmoddi4>: + 80007bc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80007c0: 9d08 ldr r5, [sp, #32] + 80007c2: 468e mov lr, r1 + 80007c4: 4604 mov r4, r0 + 80007c6: 4688 mov r8, r1 + 80007c8: 2b00 cmp r3, #0 + 80007ca: d14a bne.n 8000862 <__udivmoddi4+0xa6> + 80007cc: 428a cmp r2, r1 + 80007ce: 4617 mov r7, r2 + 80007d0: d962 bls.n 8000898 <__udivmoddi4+0xdc> + 80007d2: fab2 f682 clz r6, r2 + 80007d6: b14e cbz r6, 80007ec <__udivmoddi4+0x30> + 80007d8: f1c6 0320 rsb r3, r6, #32 + 80007dc: fa01 f806 lsl.w r8, r1, r6 + 80007e0: fa20 f303 lsr.w r3, r0, r3 + 80007e4: 40b7 lsls r7, r6 + 80007e6: ea43 0808 orr.w r8, r3, r8 + 80007ea: 40b4 lsls r4, r6 + 80007ec: ea4f 4e17 mov.w lr, r7, lsr #16 + 80007f0: fbb8 f1fe udiv r1, r8, lr + 80007f4: fa1f fc87 uxth.w ip, r7 + 80007f8: fb0e 8811 mls r8, lr, r1, r8 + 80007fc: fb01 f20c mul.w r2, r1, ip + 8000800: 0c23 lsrs r3, r4, #16 + 8000802: ea43 4308 orr.w r3, r3, r8, lsl #16 + 8000806: 429a cmp r2, r3 + 8000808: d909 bls.n 800081e <__udivmoddi4+0x62> + 800080a: 18fb adds r3, r7, r3 + 800080c: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000810: f080 80eb bcs.w 80009ea <__udivmoddi4+0x22e> + 8000814: 429a cmp r2, r3 + 8000816: f240 80e8 bls.w 80009ea <__udivmoddi4+0x22e> + 800081a: 3902 subs r1, #2 + 800081c: 443b add r3, r7 + 800081e: 1a9a subs r2, r3, r2 + 8000820: fbb2 f0fe udiv r0, r2, lr + 8000824: fb0e 2210 mls r2, lr, r0, r2 + 8000828: fb00 fc0c mul.w ip, r0, ip + 800082c: b2a3 uxth r3, r4 + 800082e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000832: 459c cmp ip, r3 + 8000834: d909 bls.n 800084a <__udivmoddi4+0x8e> + 8000836: 18fb adds r3, r7, r3 + 8000838: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800083c: f080 80d7 bcs.w 80009ee <__udivmoddi4+0x232> + 8000840: 459c cmp ip, r3 + 8000842: f240 80d4 bls.w 80009ee <__udivmoddi4+0x232> + 8000846: 443b add r3, r7 + 8000848: 3802 subs r0, #2 + 800084a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800084e: 2100 movs r1, #0 + 8000850: eba3 030c sub.w r3, r3, ip + 8000854: b11d cbz r5, 800085e <__udivmoddi4+0xa2> + 8000856: 2200 movs r2, #0 + 8000858: 40f3 lsrs r3, r6 + 800085a: e9c5 3200 strd r3, r2, [r5] + 800085e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000862: 428b cmp r3, r1 + 8000864: d905 bls.n 8000872 <__udivmoddi4+0xb6> + 8000866: b10d cbz r5, 800086c <__udivmoddi4+0xb0> + 8000868: e9c5 0100 strd r0, r1, [r5] + 800086c: 2100 movs r1, #0 + 800086e: 4608 mov r0, r1 + 8000870: e7f5 b.n 800085e <__udivmoddi4+0xa2> + 8000872: fab3 f183 clz r1, r3 + 8000876: 2900 cmp r1, #0 + 8000878: d146 bne.n 8000908 <__udivmoddi4+0x14c> + 800087a: 4573 cmp r3, lr + 800087c: d302 bcc.n 8000884 <__udivmoddi4+0xc8> + 800087e: 4282 cmp r2, r0 + 8000880: f200 8108 bhi.w 8000a94 <__udivmoddi4+0x2d8> + 8000884: 1a84 subs r4, r0, r2 + 8000886: eb6e 0203 sbc.w r2, lr, r3 + 800088a: 2001 movs r0, #1 + 800088c: 4690 mov r8, r2 + 800088e: 2d00 cmp r5, #0 + 8000890: d0e5 beq.n 800085e <__udivmoddi4+0xa2> + 8000892: e9c5 4800 strd r4, r8, [r5] + 8000896: e7e2 b.n 800085e <__udivmoddi4+0xa2> + 8000898: 2a00 cmp r2, #0 + 800089a: f000 8091 beq.w 80009c0 <__udivmoddi4+0x204> + 800089e: fab2 f682 clz r6, r2 + 80008a2: 2e00 cmp r6, #0 + 80008a4: f040 80a5 bne.w 80009f2 <__udivmoddi4+0x236> + 80008a8: 1a8a subs r2, r1, r2 + 80008aa: 2101 movs r1, #1 + 80008ac: 0c03 lsrs r3, r0, #16 + 80008ae: ea4f 4e17 mov.w lr, r7, lsr #16 + 80008b2: b280 uxth r0, r0 + 80008b4: b2bc uxth r4, r7 + 80008b6: fbb2 fcfe udiv ip, r2, lr + 80008ba: fb0e 221c mls r2, lr, ip, r2 + 80008be: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80008c2: fb04 f20c mul.w r2, r4, ip + 80008c6: 429a cmp r2, r3 + 80008c8: d907 bls.n 80008da <__udivmoddi4+0x11e> + 80008ca: 18fb adds r3, r7, r3 + 80008cc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80008d0: d202 bcs.n 80008d8 <__udivmoddi4+0x11c> + 80008d2: 429a cmp r2, r3 + 80008d4: f200 80e3 bhi.w 8000a9e <__udivmoddi4+0x2e2> + 80008d8: 46c4 mov ip, r8 + 80008da: 1a9b subs r3, r3, r2 + 80008dc: fbb3 f2fe udiv r2, r3, lr + 80008e0: fb0e 3312 mls r3, lr, r2, r3 + 80008e4: fb02 f404 mul.w r4, r2, r4 + 80008e8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80008ec: 429c cmp r4, r3 + 80008ee: d907 bls.n 8000900 <__udivmoddi4+0x144> + 80008f0: 18fb adds r3, r7, r3 + 80008f2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80008f6: d202 bcs.n 80008fe <__udivmoddi4+0x142> + 80008f8: 429c cmp r4, r3 + 80008fa: f200 80cd bhi.w 8000a98 <__udivmoddi4+0x2dc> + 80008fe: 4602 mov r2, r0 + 8000900: 1b1b subs r3, r3, r4 + 8000902: ea42 400c orr.w r0, r2, ip, lsl #16 + 8000906: e7a5 b.n 8000854 <__udivmoddi4+0x98> + 8000908: f1c1 0620 rsb r6, r1, #32 + 800090c: 408b lsls r3, r1 + 800090e: fa22 f706 lsr.w r7, r2, r6 + 8000912: 431f orrs r7, r3 + 8000914: fa2e fa06 lsr.w sl, lr, r6 + 8000918: ea4f 4917 mov.w r9, r7, lsr #16 + 800091c: fbba f8f9 udiv r8, sl, r9 + 8000920: fa0e fe01 lsl.w lr, lr, r1 + 8000924: fa20 f306 lsr.w r3, r0, r6 + 8000928: fb09 aa18 mls sl, r9, r8, sl + 800092c: fa1f fc87 uxth.w ip, r7 + 8000930: ea43 030e orr.w r3, r3, lr + 8000934: fa00 fe01 lsl.w lr, r0, r1 + 8000938: fb08 f00c mul.w r0, r8, ip + 800093c: 0c1c lsrs r4, r3, #16 + 800093e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000942: 42a0 cmp r0, r4 + 8000944: fa02 f201 lsl.w r2, r2, r1 + 8000948: d90a bls.n 8000960 <__udivmoddi4+0x1a4> + 800094a: 193c adds r4, r7, r4 + 800094c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000950: f080 809e bcs.w 8000a90 <__udivmoddi4+0x2d4> + 8000954: 42a0 cmp r0, r4 + 8000956: f240 809b bls.w 8000a90 <__udivmoddi4+0x2d4> + 800095a: f1a8 0802 sub.w r8, r8, #2 + 800095e: 443c add r4, r7 + 8000960: 1a24 subs r4, r4, r0 + 8000962: b298 uxth r0, r3 + 8000964: fbb4 f3f9 udiv r3, r4, r9 + 8000968: fb09 4413 mls r4, r9, r3, r4 + 800096c: fb03 fc0c mul.w ip, r3, ip + 8000970: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000974: 45a4 cmp ip, r4 + 8000976: d909 bls.n 800098c <__udivmoddi4+0x1d0> + 8000978: 193c adds r4, r7, r4 + 800097a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800097e: f080 8085 bcs.w 8000a8c <__udivmoddi4+0x2d0> + 8000982: 45a4 cmp ip, r4 + 8000984: f240 8082 bls.w 8000a8c <__udivmoddi4+0x2d0> + 8000988: 3b02 subs r3, #2 + 800098a: 443c add r4, r7 + 800098c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000990: eba4 040c sub.w r4, r4, ip + 8000994: fba0 8c02 umull r8, ip, r0, r2 + 8000998: 4564 cmp r4, ip + 800099a: 4643 mov r3, r8 + 800099c: 46e1 mov r9, ip + 800099e: d364 bcc.n 8000a6a <__udivmoddi4+0x2ae> + 80009a0: d061 beq.n 8000a66 <__udivmoddi4+0x2aa> + 80009a2: b15d cbz r5, 80009bc <__udivmoddi4+0x200> + 80009a4: ebbe 0203 subs.w r2, lr, r3 + 80009a8: eb64 0409 sbc.w r4, r4, r9 + 80009ac: fa04 f606 lsl.w r6, r4, r6 + 80009b0: fa22 f301 lsr.w r3, r2, r1 + 80009b4: 431e orrs r6, r3 + 80009b6: 40cc lsrs r4, r1 + 80009b8: e9c5 6400 strd r6, r4, [r5] + 80009bc: 2100 movs r1, #0 + 80009be: e74e b.n 800085e <__udivmoddi4+0xa2> + 80009c0: fbb1 fcf2 udiv ip, r1, r2 + 80009c4: 0c01 lsrs r1, r0, #16 + 80009c6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80009ca: b280 uxth r0, r0 + 80009cc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80009d0: 463b mov r3, r7 + 80009d2: fbb1 f1f7 udiv r1, r1, r7 + 80009d6: 4638 mov r0, r7 + 80009d8: 463c mov r4, r7 + 80009da: 46b8 mov r8, r7 + 80009dc: 46be mov lr, r7 + 80009de: 2620 movs r6, #32 + 80009e0: eba2 0208 sub.w r2, r2, r8 + 80009e4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80009e8: e765 b.n 80008b6 <__udivmoddi4+0xfa> + 80009ea: 4601 mov r1, r0 + 80009ec: e717 b.n 800081e <__udivmoddi4+0x62> + 80009ee: 4610 mov r0, r2 + 80009f0: e72b b.n 800084a <__udivmoddi4+0x8e> + 80009f2: f1c6 0120 rsb r1, r6, #32 + 80009f6: fa2e fc01 lsr.w ip, lr, r1 + 80009fa: 40b7 lsls r7, r6 + 80009fc: fa0e fe06 lsl.w lr, lr, r6 + 8000a00: fa20 f101 lsr.w r1, r0, r1 + 8000a04: ea41 010e orr.w r1, r1, lr + 8000a08: ea4f 4e17 mov.w lr, r7, lsr #16 + 8000a0c: fbbc f8fe udiv r8, ip, lr + 8000a10: b2bc uxth r4, r7 + 8000a12: fb0e cc18 mls ip, lr, r8, ip + 8000a16: fb08 f904 mul.w r9, r8, r4 + 8000a1a: 0c0a lsrs r2, r1, #16 + 8000a1c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000a20: 40b0 lsls r0, r6 + 8000a22: 4591 cmp r9, r2 + 8000a24: ea4f 4310 mov.w r3, r0, lsr #16 + 8000a28: b280 uxth r0, r0 + 8000a2a: d93e bls.n 8000aaa <__udivmoddi4+0x2ee> + 8000a2c: 18ba adds r2, r7, r2 + 8000a2e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000a32: d201 bcs.n 8000a38 <__udivmoddi4+0x27c> + 8000a34: 4591 cmp r9, r2 + 8000a36: d81f bhi.n 8000a78 <__udivmoddi4+0x2bc> + 8000a38: eba2 0209 sub.w r2, r2, r9 + 8000a3c: fbb2 f9fe udiv r9, r2, lr + 8000a40: fb09 f804 mul.w r8, r9, r4 + 8000a44: fb0e 2a19 mls sl, lr, r9, r2 + 8000a48: b28a uxth r2, r1 + 8000a4a: ea42 420a orr.w r2, r2, sl, lsl #16 + 8000a4e: 4542 cmp r2, r8 + 8000a50: d229 bcs.n 8000aa6 <__udivmoddi4+0x2ea> + 8000a52: 18ba adds r2, r7, r2 + 8000a54: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000a58: d2c2 bcs.n 80009e0 <__udivmoddi4+0x224> + 8000a5a: 4542 cmp r2, r8 + 8000a5c: d2c0 bcs.n 80009e0 <__udivmoddi4+0x224> + 8000a5e: f1a9 0102 sub.w r1, r9, #2 + 8000a62: 443a add r2, r7 + 8000a64: e7bc b.n 80009e0 <__udivmoddi4+0x224> + 8000a66: 45c6 cmp lr, r8 + 8000a68: d29b bcs.n 80009a2 <__udivmoddi4+0x1e6> + 8000a6a: ebb8 0302 subs.w r3, r8, r2 + 8000a6e: eb6c 0c07 sbc.w ip, ip, r7 + 8000a72: 3801 subs r0, #1 + 8000a74: 46e1 mov r9, ip + 8000a76: e794 b.n 80009a2 <__udivmoddi4+0x1e6> + 8000a78: eba7 0909 sub.w r9, r7, r9 + 8000a7c: 444a add r2, r9 + 8000a7e: fbb2 f9fe udiv r9, r2, lr + 8000a82: f1a8 0c02 sub.w ip, r8, #2 + 8000a86: fb09 f804 mul.w r8, r9, r4 + 8000a8a: e7db b.n 8000a44 <__udivmoddi4+0x288> + 8000a8c: 4603 mov r3, r0 + 8000a8e: e77d b.n 800098c <__udivmoddi4+0x1d0> + 8000a90: 46d0 mov r8, sl + 8000a92: e765 b.n 8000960 <__udivmoddi4+0x1a4> + 8000a94: 4608 mov r0, r1 + 8000a96: e6fa b.n 800088e <__udivmoddi4+0xd2> + 8000a98: 443b add r3, r7 + 8000a9a: 3a02 subs r2, #2 + 8000a9c: e730 b.n 8000900 <__udivmoddi4+0x144> + 8000a9e: f1ac 0c02 sub.w ip, ip, #2 + 8000aa2: 443b add r3, r7 + 8000aa4: e719 b.n 80008da <__udivmoddi4+0x11e> + 8000aa6: 4649 mov r1, r9 + 8000aa8: e79a b.n 80009e0 <__udivmoddi4+0x224> + 8000aaa: eba2 0209 sub.w r2, r2, r9 + 8000aae: fbb2 f9fe udiv r9, r2, lr + 8000ab2: 46c4 mov ip, r8 + 8000ab4: fb09 f804 mul.w r8, r9, r4 + 8000ab8: e7c4 b.n 8000a44 <__udivmoddi4+0x288> + 8000aba: bf00 nop + +08000abc <__aeabi_idiv0>: + 8000abc: 4770 bx lr + 8000abe: bf00 nop + +08000ac0 : +/* USER CODE BEGIN 0 */ +volatile uint8_t angle = 0; +volatile uint8_t sens = 1; + + +void affiche(uint8_t nombre_entier, uint8_t nombre_decimal) { + 8000ac0: b580 push {r7, lr} + 8000ac2: b084 sub sp, #16 + 8000ac4: af00 add r7, sp, #0 + 8000ac6: 4603 mov r3, r0 + 8000ac8: 460a mov r2, r1 + 8000aca: 71fb strb r3, [r7, #7] + 8000acc: 4613 mov r3, r2 + 8000ace: 71bb strb r3, [r7, #6] + uint8_t compt_uni_ent; + uint8_t compt_diz_ent; + uint8_t compt_uni_deci; + uint8_t compt_diz_deci; + + compt_uni_ent = nombre_entier % 10; + 8000ad0: 79fa ldrb r2, [r7, #7] + 8000ad2: 4b1c ldr r3, [pc, #112] @ (8000b44 ) + 8000ad4: fba3 1302 umull r1, r3, r3, r2 + 8000ad8: 08d9 lsrs r1, r3, #3 + 8000ada: 460b mov r3, r1 + 8000adc: 009b lsls r3, r3, #2 + 8000ade: 440b add r3, r1 + 8000ae0: 005b lsls r3, r3, #1 + 8000ae2: 1ad3 subs r3, r2, r3 + 8000ae4: 73fb strb r3, [r7, #15] + compt_diz_ent = nombre_entier / 10; + 8000ae6: 79fb ldrb r3, [r7, #7] + 8000ae8: 4a16 ldr r2, [pc, #88] @ (8000b44 ) + 8000aea: fba2 2303 umull r2, r3, r2, r3 + 8000aee: 08db lsrs r3, r3, #3 + 8000af0: 73bb strb r3, [r7, #14] + + compt_uni_deci = nombre_decimal % 10; + 8000af2: 79ba ldrb r2, [r7, #6] + 8000af4: 4b13 ldr r3, [pc, #76] @ (8000b44 ) + 8000af6: fba3 1302 umull r1, r3, r3, r2 + 8000afa: 08d9 lsrs r1, r3, #3 + 8000afc: 460b mov r3, r1 + 8000afe: 009b lsls r3, r3, #2 + 8000b00: 440b add r3, r1 + 8000b02: 005b lsls r3, r3, #1 + 8000b04: 1ad3 subs r3, r2, r3 + 8000b06: 737b strb r3, [r7, #13] + compt_diz_deci = nombre_decimal / 10; + 8000b08: 79bb ldrb r3, [r7, #6] + 8000b0a: 4a0e ldr r2, [pc, #56] @ (8000b44 ) + 8000b0c: fba2 2303 umull r2, r3, r2, r3 + 8000b10: 08db lsrs r3, r3, #3 + 8000b12: 733b strb r3, [r7, #12] + + MAX7219_DisplayChar(1, compt_diz_ent); + 8000b14: 7bbb ldrb r3, [r7, #14] + 8000b16: 4619 mov r1, r3 + 8000b18: 2001 movs r0, #1 + 8000b1a: f000 fc17 bl 800134c + MAX7219_DisplayChar(2, compt_uni_ent); + 8000b1e: 7bfb ldrb r3, [r7, #15] + 8000b20: 4619 mov r1, r3 + 8000b22: 2002 movs r0, #2 + 8000b24: f000 fc12 bl 800134c + MAX7219_DisplayChar(3, compt_diz_deci); + 8000b28: 7b3b ldrb r3, [r7, #12] + 8000b2a: 4619 mov r1, r3 + 8000b2c: 2003 movs r0, #3 + 8000b2e: f000 fc0d bl 800134c + MAX7219_DisplayChar(4, compt_uni_deci); + 8000b32: 7b7b ldrb r3, [r7, #13] + 8000b34: 4619 mov r1, r3 + 8000b36: 2004 movs r0, #4 + 8000b38: f000 fc08 bl 800134c +} + 8000b3c: bf00 nop + 8000b3e: 3710 adds r7, #16 + 8000b40: 46bd mov sp, r7 + 8000b42: bd80 pop {r7, pc} + 8000b44: cccccccd .word 0xcccccccd + +08000b48
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 8000b48: b580 push {r7, lr} + 8000b4a: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 8000b4c: f000 fc44 bl 80013d8 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 8000b50: f000 f81a bl 8000b88 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 8000b54: f000 f960 bl 8000e18 + MX_SPI1_Init(); + 8000b58: f000 f85c bl 8000c14 + MX_TIM2_Init(); + 8000b5c: f000 f890 bl 8000c80 + MX_TIM3_Init(); + 8000b60: f000 f8da bl 8000d18 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 8000b64: f000 fba5 bl 80012b2 + HAL_TIM_Base_Start_IT(&htim2); + 8000b68: 4805 ldr r0, [pc, #20] @ (8000b80 ) + 8000b6a: f001 ffe7 bl 8002b3c + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); + 8000b6e: 2104 movs r1, #4 + 8000b70: 4804 ldr r0, [pc, #16] @ (8000b84 ) + 8000b72: f002 f87d bl 8002c70 + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 8000b76: f000 fbd3 bl 8001320 + while (1) + 8000b7a: bf00 nop + 8000b7c: e7fd b.n 8000b7a + 8000b7e: bf00 nop + 8000b80: 20000084 .word 0x20000084 + 8000b84: 200000c4 .word 0x200000c4 + +08000b88 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000b88: b580 push {r7, lr} + 8000b8a: b092 sub sp, #72 @ 0x48 + 8000b8c: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000b8e: f107 0314 add.w r3, r7, #20 + 8000b92: 2234 movs r2, #52 @ 0x34 + 8000b94: 2100 movs r1, #0 + 8000b96: 4618 mov r0, r3 + 8000b98: f002 fdfe bl 8003798 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000b9c: 463b mov r3, r7 + 8000b9e: 2200 movs r2, #0 + 8000ba0: 601a str r2, [r3, #0] + 8000ba2: 605a str r2, [r3, #4] + 8000ba4: 609a str r2, [r3, #8] + 8000ba6: 60da str r2, [r3, #12] + 8000ba8: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000baa: 4b19 ldr r3, [pc, #100] @ (8000c10 ) + 8000bac: 681b ldr r3, [r3, #0] + 8000bae: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 8000bb2: 4a17 ldr r2, [pc, #92] @ (8000c10 ) + 8000bb4: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000bb8: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000bba: 2302 movs r3, #2 + 8000bbc: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000bbe: 2301 movs r3, #1 + 8000bc0: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 8000bc2: 2310 movs r3, #16 + 8000bc4: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 8000bc6: 2300 movs r3, #0 + 8000bc8: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000bca: f107 0314 add.w r3, r7, #20 + 8000bce: 4618 mov r0, r3 + 8000bd0: f000 ff48 bl 8001a64 + 8000bd4: 4603 mov r3, r0 + 8000bd6: 2b00 cmp r3, #0 + 8000bd8: d001 beq.n 8000bde + { + Error_Handler(); + 8000bda: f000 f9e5 bl 8000fa8 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000bde: 230f movs r3, #15 + 8000be0: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 8000be2: 2301 movs r3, #1 + 8000be4: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 8000be6: 2300 movs r3, #0 + 8000be8: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 8000bea: 2300 movs r3, #0 + 8000bec: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8000bee: 2300 movs r3, #0 + 8000bf0: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 8000bf2: 463b mov r3, r7 + 8000bf4: 2100 movs r1, #0 + 8000bf6: 4618 mov r0, r3 + 8000bf8: f001 fa64 bl 80020c4 + 8000bfc: 4603 mov r3, r0 + 8000bfe: 2b00 cmp r3, #0 + 8000c00: d001 beq.n 8000c06 + { + Error_Handler(); + 8000c02: f000 f9d1 bl 8000fa8 + } +} + 8000c06: bf00 nop + 8000c08: 3748 adds r7, #72 @ 0x48 + 8000c0a: 46bd mov sp, r7 + 8000c0c: bd80 pop {r7, pc} + 8000c0e: bf00 nop + 8000c10: 40007000 .word 0x40007000 + +08000c14 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 8000c14: b580 push {r7, lr} + 8000c16: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 8000c18: 4b17 ldr r3, [pc, #92] @ (8000c78 ) + 8000c1a: 4a18 ldr r2, [pc, #96] @ (8000c7c ) + 8000c1c: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 8000c1e: 4b16 ldr r3, [pc, #88] @ (8000c78 ) + 8000c20: f44f 7282 mov.w r2, #260 @ 0x104 + 8000c24: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 8000c26: 4b14 ldr r3, [pc, #80] @ (8000c78 ) + 8000c28: 2200 movs r2, #0 + 8000c2a: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 8000c2c: 4b12 ldr r3, [pc, #72] @ (8000c78 ) + 8000c2e: 2200 movs r2, #0 + 8000c30: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 8000c32: 4b11 ldr r3, [pc, #68] @ (8000c78 ) + 8000c34: 2200 movs r2, #0 + 8000c36: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 8000c38: 4b0f ldr r3, [pc, #60] @ (8000c78 ) + 8000c3a: 2200 movs r2, #0 + 8000c3c: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 8000c3e: 4b0e ldr r3, [pc, #56] @ (8000c78 ) + 8000c40: f44f 7200 mov.w r2, #512 @ 0x200 + 8000c44: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8000c46: 4b0c ldr r3, [pc, #48] @ (8000c78 ) + 8000c48: 2200 movs r2, #0 + 8000c4a: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 8000c4c: 4b0a ldr r3, [pc, #40] @ (8000c78 ) + 8000c4e: 2200 movs r2, #0 + 8000c50: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 8000c52: 4b09 ldr r3, [pc, #36] @ (8000c78 ) + 8000c54: 2200 movs r2, #0 + 8000c56: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8000c58: 4b07 ldr r3, [pc, #28] @ (8000c78 ) + 8000c5a: 2200 movs r2, #0 + 8000c5c: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 8000c5e: 4b06 ldr r3, [pc, #24] @ (8000c78 ) + 8000c60: 220a movs r2, #10 + 8000c62: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 8000c64: 4804 ldr r0, [pc, #16] @ (8000c78 ) + 8000c66: f001 fc7f bl 8002568 + 8000c6a: 4603 mov r3, r0 + 8000c6c: 2b00 cmp r3, #0 + 8000c6e: d001 beq.n 8000c74 + { + Error_Handler(); + 8000c70: f000 f99a bl 8000fa8 + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 8000c74: bf00 nop + 8000c76: bd80 pop {r7, pc} + 8000c78: 2000002c .word 0x2000002c + 8000c7c: 40013000 .word 0x40013000 + +08000c80 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 8000c80: b580 push {r7, lr} + 8000c82: b086 sub sp, #24 + 8000c84: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 8000c86: f107 0308 add.w r3, r7, #8 + 8000c8a: 2200 movs r2, #0 + 8000c8c: 601a str r2, [r3, #0] + 8000c8e: 605a str r2, [r3, #4] + 8000c90: 609a str r2, [r3, #8] + 8000c92: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000c94: 463b mov r3, r7 + 8000c96: 2200 movs r2, #0 + 8000c98: 601a str r2, [r3, #0] + 8000c9a: 605a str r2, [r3, #4] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 8000c9c: 4b1d ldr r3, [pc, #116] @ (8000d14 ) + 8000c9e: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 8000ca2: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 167-1; + 8000ca4: 4b1b ldr r3, [pc, #108] @ (8000d14 ) + 8000ca6: 22a6 movs r2, #166 @ 0xa6 + 8000ca8: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000caa: 4b1a ldr r3, [pc, #104] @ (8000d14 ) + 8000cac: 2200 movs r2, #0 + 8000cae: 609a str r2, [r3, #8] + htim2.Init.Period = 16000-1; + 8000cb0: 4b18 ldr r3, [pc, #96] @ (8000d14 ) + 8000cb2: f643 627f movw r2, #15999 @ 0x3e7f + 8000cb6: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000cb8: 4b16 ldr r3, [pc, #88] @ (8000d14 ) + 8000cba: 2200 movs r2, #0 + 8000cbc: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 8000cbe: 4b15 ldr r3, [pc, #84] @ (8000d14 ) + 8000cc0: 2280 movs r2, #128 @ 0x80 + 8000cc2: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 8000cc4: 4813 ldr r0, [pc, #76] @ (8000d14 ) + 8000cc6: f001 fef9 bl 8002abc + 8000cca: 4603 mov r3, r0 + 8000ccc: 2b00 cmp r3, #0 + 8000cce: d001 beq.n 8000cd4 + { + Error_Handler(); + 8000cd0: f000 f96a bl 8000fa8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000cd4: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000cd8: 60bb str r3, [r7, #8] + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 8000cda: f107 0308 add.w r3, r7, #8 + 8000cde: 4619 mov r1, r3 + 8000ce0: 480c ldr r0, [pc, #48] @ (8000d14 ) + 8000ce2: f002 f9e9 bl 80030b8 + 8000ce6: 4603 mov r3, r0 + 8000ce8: 2b00 cmp r3, #0 + 8000cea: d001 beq.n 8000cf0 + { + Error_Handler(); + 8000cec: f000 f95c bl 8000fa8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000cf0: 2300 movs r3, #0 + 8000cf2: 603b str r3, [r7, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000cf4: 2300 movs r3, #0 + 8000cf6: 607b str r3, [r7, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 8000cf8: 463b mov r3, r7 + 8000cfa: 4619 mov r1, r3 + 8000cfc: 4805 ldr r0, [pc, #20] @ (8000d14 ) + 8000cfe: f002 fced bl 80036dc + 8000d02: 4603 mov r3, r0 + 8000d04: 2b00 cmp r3, #0 + 8000d06: d001 beq.n 8000d0c + { + Error_Handler(); + 8000d08: f000 f94e bl 8000fa8 + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + 8000d0c: bf00 nop + 8000d0e: 3718 adds r7, #24 + 8000d10: 46bd mov sp, r7 + 8000d12: bd80 pop {r7, pc} + 8000d14: 20000084 .word 0x20000084 + +08000d18 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 8000d18: b580 push {r7, lr} + 8000d1a: b08a sub sp, #40 @ 0x28 + 8000d1c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 8000d1e: f107 0318 add.w r3, r7, #24 + 8000d22: 2200 movs r2, #0 + 8000d24: 601a str r2, [r3, #0] + 8000d26: 605a str r2, [r3, #4] + 8000d28: 609a str r2, [r3, #8] + 8000d2a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000d2c: f107 0310 add.w r3, r7, #16 + 8000d30: 2200 movs r2, #0 + 8000d32: 601a str r2, [r3, #0] + 8000d34: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000d36: 463b mov r3, r7 + 8000d38: 2200 movs r2, #0 + 8000d3a: 601a str r2, [r3, #0] + 8000d3c: 605a str r2, [r3, #4] + 8000d3e: 609a str r2, [r3, #8] + 8000d40: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 8000d42: 4b33 ldr r3, [pc, #204] @ (8000e10 ) + 8000d44: 4a33 ldr r2, [pc, #204] @ (8000e14 ) + 8000d46: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 20-1; + 8000d48: 4b31 ldr r3, [pc, #196] @ (8000e10 ) + 8000d4a: 2213 movs r2, #19 + 8000d4c: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000d4e: 4b30 ldr r3, [pc, #192] @ (8000e10 ) + 8000d50: 2200 movs r2, #0 + 8000d52: 609a str r2, [r3, #8] + htim3.Init.Period = 16000-1; + 8000d54: 4b2e ldr r3, [pc, #184] @ (8000e10 ) + 8000d56: f643 627f movw r2, #15999 @ 0x3e7f + 8000d5a: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000d5c: 4b2c ldr r3, [pc, #176] @ (8000e10 ) + 8000d5e: 2200 movs r2, #0 + 8000d60: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 8000d62: 4b2b ldr r3, [pc, #172] @ (8000e10 ) + 8000d64: 2280 movs r2, #128 @ 0x80 + 8000d66: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 8000d68: 4829 ldr r0, [pc, #164] @ (8000e10 ) + 8000d6a: f001 fea7 bl 8002abc + 8000d6e: 4603 mov r3, r0 + 8000d70: 2b00 cmp r3, #0 + 8000d72: d001 beq.n 8000d78 + { + Error_Handler(); + 8000d74: f000 f918 bl 8000fa8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000d78: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000d7c: 61bb str r3, [r7, #24] + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 8000d7e: f107 0318 add.w r3, r7, #24 + 8000d82: 4619 mov r1, r3 + 8000d84: 4822 ldr r0, [pc, #136] @ (8000e10 ) + 8000d86: f002 f997 bl 80030b8 + 8000d8a: 4603 mov r3, r0 + 8000d8c: 2b00 cmp r3, #0 + 8000d8e: d001 beq.n 8000d94 + { + Error_Handler(); + 8000d90: f000 f90a bl 8000fa8 + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 8000d94: 481e ldr r0, [pc, #120] @ (8000e10 ) + 8000d96: f001 ff23 bl 8002be0 + 8000d9a: 4603 mov r3, r0 + 8000d9c: 2b00 cmp r3, #0 + 8000d9e: d001 beq.n 8000da4 + { + Error_Handler(); + 8000da0: f000 f902 bl 8000fa8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000da4: 2300 movs r3, #0 + 8000da6: 613b str r3, [r7, #16] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000da8: 2300 movs r3, #0 + 8000daa: 617b str r3, [r7, #20] + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 8000dac: f107 0310 add.w r3, r7, #16 + 8000db0: 4619 mov r1, r3 + 8000db2: 4817 ldr r0, [pc, #92] @ (8000e10 ) + 8000db4: f002 fc92 bl 80036dc + 8000db8: 4603 mov r3, r0 + 8000dba: 2b00 cmp r3, #0 + 8000dbc: d001 beq.n 8000dc2 + { + Error_Handler(); + 8000dbe: f000 f8f3 bl 8000fa8 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000dc2: 2360 movs r3, #96 @ 0x60 + 8000dc4: 603b str r3, [r7, #0] + sConfigOC.Pulse = 80-1; + 8000dc6: 234f movs r3, #79 @ 0x4f + 8000dc8: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000dca: 2300 movs r3, #0 + 8000dcc: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 8000dce: 2300 movs r3, #0 + 8000dd0: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000dd2: 463b mov r3, r7 + 8000dd4: 2200 movs r2, #0 + 8000dd6: 4619 mov r1, r3 + 8000dd8: 480d ldr r0, [pc, #52] @ (8000e10 ) + 8000dda: f002 f8ab bl 8002f34 + 8000dde: 4603 mov r3, r0 + 8000de0: 2b00 cmp r3, #0 + 8000de2: d001 beq.n 8000de8 + { + Error_Handler(); + 8000de4: f000 f8e0 bl 8000fa8 + } + sConfigOC.Pulse = 0; + 8000de8: 2300 movs r3, #0 + 8000dea: 607b str r3, [r7, #4] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 8000dec: 463b mov r3, r7 + 8000dee: 2204 movs r2, #4 + 8000df0: 4619 mov r1, r3 + 8000df2: 4807 ldr r0, [pc, #28] @ (8000e10 ) + 8000df4: f002 f89e bl 8002f34 + 8000df8: 4603 mov r3, r0 + 8000dfa: 2b00 cmp r3, #0 + 8000dfc: d001 beq.n 8000e02 + { + Error_Handler(); + 8000dfe: f000 f8d3 bl 8000fa8 + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 8000e02: 4803 ldr r0, [pc, #12] @ (8000e10 ) + 8000e04: f000 f988 bl 8001118 + +} + 8000e08: bf00 nop + 8000e0a: 3728 adds r7, #40 @ 0x28 + 8000e0c: 46bd mov sp, r7 + 8000e0e: bd80 pop {r7, pc} + 8000e10: 200000c4 .word 0x200000c4 + 8000e14: 40000400 .word 0x40000400 + +08000e18 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000e18: b580 push {r7, lr} + 8000e1a: b088 sub sp, #32 + 8000e1c: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000e1e: f107 030c add.w r3, r7, #12 + 8000e22: 2200 movs r2, #0 + 8000e24: 601a str r2, [r3, #0] + 8000e26: 605a str r2, [r3, #4] + 8000e28: 609a str r2, [r3, #8] + 8000e2a: 60da str r2, [r3, #12] + 8000e2c: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000e2e: 4b28 ldr r3, [pc, #160] @ (8000ed0 ) + 8000e30: 69db ldr r3, [r3, #28] + 8000e32: 4a27 ldr r2, [pc, #156] @ (8000ed0 ) + 8000e34: f043 0304 orr.w r3, r3, #4 + 8000e38: 61d3 str r3, [r2, #28] + 8000e3a: 4b25 ldr r3, [pc, #148] @ (8000ed0 ) + 8000e3c: 69db ldr r3, [r3, #28] + 8000e3e: f003 0304 and.w r3, r3, #4 + 8000e42: 60bb str r3, [r7, #8] + 8000e44: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000e46: 4b22 ldr r3, [pc, #136] @ (8000ed0 ) + 8000e48: 69db ldr r3, [r3, #28] + 8000e4a: 4a21 ldr r2, [pc, #132] @ (8000ed0 ) + 8000e4c: f043 0301 orr.w r3, r3, #1 + 8000e50: 61d3 str r3, [r2, #28] + 8000e52: 4b1f ldr r3, [pc, #124] @ (8000ed0 ) + 8000e54: 69db ldr r3, [r3, #28] + 8000e56: f003 0301 and.w r3, r3, #1 + 8000e5a: 607b str r3, [r7, #4] + 8000e5c: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000e5e: 4b1c ldr r3, [pc, #112] @ (8000ed0 ) + 8000e60: 69db ldr r3, [r3, #28] + 8000e62: 4a1b ldr r2, [pc, #108] @ (8000ed0 ) + 8000e64: f043 0302 orr.w r3, r3, #2 + 8000e68: 61d3 str r3, [r2, #28] + 8000e6a: 4b19 ldr r3, [pc, #100] @ (8000ed0 ) + 8000e6c: 69db ldr r3, [r3, #28] + 8000e6e: f003 0302 and.w r3, r3, #2 + 8000e72: 603b str r3, [r7, #0] + 8000e74: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 8000e76: 2200 movs r2, #0 + 8000e78: 2101 movs r1, #1 + 8000e7a: 4816 ldr r0, [pc, #88] @ (8000ed4 ) + 8000e7c: f000 fdb8 bl 80019f0 + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 8000e80: 2301 movs r3, #1 + 8000e82: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000e84: 2301 movs r3, #1 + 8000e86: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000e88: 2300 movs r3, #0 + 8000e8a: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000e8c: 2300 movs r3, #0 + 8000e8e: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000e90: f107 030c add.w r3, r7, #12 + 8000e94: 4619 mov r1, r3 + 8000e96: 480f ldr r0, [pc, #60] @ (8000ed4 ) + 8000e98: f000 fc1a bl 80016d0 + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 8000e9c: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 8000ea0: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 8000ea2: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 8000ea6: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000ea8: 2300 movs r3, #0 + 8000eaa: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000eac: f107 030c add.w r3, r7, #12 + 8000eb0: 4619 mov r1, r3 + 8000eb2: 4809 ldr r0, [pc, #36] @ (8000ed8 ) + 8000eb4: f000 fc0c bl 80016d0 + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 8000eb8: 2200 movs r2, #0 + 8000eba: 2100 movs r1, #0 + 8000ebc: 2028 movs r0, #40 @ 0x28 + 8000ebe: f000 fbd0 bl 8001662 + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 8000ec2: 2028 movs r0, #40 @ 0x28 + 8000ec4: f000 fbe9 bl 800169a + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 8000ec8: bf00 nop + 8000eca: 3720 adds r7, #32 + 8000ecc: 46bd mov sp, r7 + 8000ece: bd80 pop {r7, pc} + 8000ed0: 40023800 .word 0x40023800 + 8000ed4: 40020800 .word 0x40020800 + 8000ed8: 40020000 .word 0x40020000 + 8000edc: 00000000 .word 0x00000000 + +08000ee0 : + +/* USER CODE BEGIN 4 */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { + 8000ee0: b590 push {r4, r7, lr} + 8000ee2: b083 sub sp, #12 + 8000ee4: af00 add r7, sp, #0 + 8000ee6: 6078 str r0, [r7, #4] + if (htim->Instance == TIM2) { + 8000ee8: 687b ldr r3, [r7, #4] + 8000eea: 681b ldr r3, [r3, #0] + 8000eec: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000ef0: d147 bne.n 8000f82 + if (sens) { + 8000ef2: 4b29 ldr r3, [pc, #164] @ (8000f98 ) + 8000ef4: 781b ldrb r3, [r3, #0] + 8000ef6: b2db uxtb r3, r3 + 8000ef8: 2b00 cmp r3, #0 + 8000efa: d00f beq.n 8000f1c + angle++; + 8000efc: 4b27 ldr r3, [pc, #156] @ (8000f9c ) + 8000efe: 781b ldrb r3, [r3, #0] + 8000f00: b2db uxtb r3, r3 + 8000f02: 3301 adds r3, #1 + 8000f04: b2da uxtb r2, r3 + 8000f06: 4b25 ldr r3, [pc, #148] @ (8000f9c ) + 8000f08: 701a strb r2, [r3, #0] + if (angle >= 90) { + 8000f0a: 4b24 ldr r3, [pc, #144] @ (8000f9c ) + 8000f0c: 781b ldrb r3, [r3, #0] + 8000f0e: b2db uxtb r3, r3 + 8000f10: 2b59 cmp r3, #89 @ 0x59 + 8000f12: d912 bls.n 8000f3a + sens = 0; + 8000f14: 4b20 ldr r3, [pc, #128] @ (8000f98 ) + 8000f16: 2200 movs r2, #0 + 8000f18: 701a strb r2, [r3, #0] + 8000f1a: e00e b.n 8000f3a + } + } else { + angle--; + 8000f1c: 4b1f ldr r3, [pc, #124] @ (8000f9c ) + 8000f1e: 781b ldrb r3, [r3, #0] + 8000f20: b2db uxtb r3, r3 + 8000f22: 3b01 subs r3, #1 + 8000f24: b2da uxtb r2, r3 + 8000f26: 4b1d ldr r3, [pc, #116] @ (8000f9c ) + 8000f28: 701a strb r2, [r3, #0] + if (angle <= 0) { + 8000f2a: 4b1c ldr r3, [pc, #112] @ (8000f9c ) + 8000f2c: 781b ldrb r3, [r3, #0] + 8000f2e: b2db uxtb r3, r3 + 8000f30: 2b00 cmp r3, #0 + 8000f32: d102 bne.n 8000f3a + sens = 1; + 8000f34: 4b18 ldr r3, [pc, #96] @ (8000f98 ) + 8000f36: 2201 movs r2, #1 + 8000f38: 701a strb r2, [r3, #0] + } + } + affiche(angle, 0); + 8000f3a: 4b18 ldr r3, [pc, #96] @ (8000f9c ) + 8000f3c: 781b ldrb r3, [r3, #0] + 8000f3e: b2db uxtb r3, r3 + 8000f40: 2100 movs r1, #0 + 8000f42: 4618 mov r0, r3 + 8000f44: f7ff fdbc bl 8000ac0 + + TIM3->CCR2 = 800 + angle * 8.9; + 8000f48: 4b14 ldr r3, [pc, #80] @ (8000f9c ) + 8000f4a: 781b ldrb r3, [r3, #0] + 8000f4c: b2db uxtb r3, r3 + 8000f4e: 4618 mov r0, r3 + 8000f50: f7ff fb92 bl 8000678 <__aeabi_i2d> + 8000f54: a30e add r3, pc, #56 @ (adr r3, 8000f90 ) + 8000f56: e9d3 2300 ldrd r2, r3, [r3] + 8000f5a: f7ff f911 bl 8000180 <__aeabi_dmul> + 8000f5e: 4602 mov r2, r0 + 8000f60: 460b mov r3, r1 + 8000f62: 4610 mov r0, r2 + 8000f64: 4619 mov r1, r3 + 8000f66: f04f 0200 mov.w r2, #0 + 8000f6a: 4b0d ldr r3, [pc, #52] @ (8000fa0 ) + 8000f6c: f7ff fa38 bl 80003e0 <__adddf3> + 8000f70: 4602 mov r2, r0 + 8000f72: 460b mov r3, r1 + 8000f74: 4c0b ldr r4, [pc, #44] @ (8000fa4 ) + 8000f76: 4610 mov r0, r2 + 8000f78: 4619 mov r1, r3 + 8000f7a: f7ff fbe7 bl 800074c <__aeabi_d2uiz> + 8000f7e: 4603 mov r3, r0 + 8000f80: 63a3 str r3, [r4, #56] @ 0x38 + + //__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 800 + angle * 8.9); + } +} + 8000f82: bf00 nop + 8000f84: 370c adds r7, #12 + 8000f86: 46bd mov sp, r7 + 8000f88: bd90 pop {r4, r7, pc} + 8000f8a: bf00 nop + 8000f8c: f3af 8000 nop.w + 8000f90: cccccccd .word 0xcccccccd + 8000f94: 4021cccc .word 0x4021cccc + 8000f98: 20000000 .word 0x20000000 + 8000f9c: 20000104 .word 0x20000104 + 8000fa0: 40890000 .word 0x40890000 + 8000fa4: 40000400 .word 0x40000400 + +08000fa8 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000fa8: b480 push {r7} + 8000faa: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 8000fac: b672 cpsid i +} + 8000fae: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000fb0: bf00 nop + 8000fb2: e7fd b.n 8000fb0 + +08000fb4 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000fb4: b480 push {r7} + 8000fb6: b085 sub sp, #20 + 8000fb8: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 8000fba: 4b14 ldr r3, [pc, #80] @ (800100c ) + 8000fbc: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000fbe: 4a13 ldr r2, [pc, #76] @ (800100c ) + 8000fc0: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000fc4: 6253 str r3, [r2, #36] @ 0x24 + 8000fc6: 4b11 ldr r3, [pc, #68] @ (800100c ) + 8000fc8: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000fca: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 8000fce: 60fb str r3, [r7, #12] + 8000fd0: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000fd2: 4b0e ldr r3, [pc, #56] @ (800100c ) + 8000fd4: 6a1b ldr r3, [r3, #32] + 8000fd6: 4a0d ldr r2, [pc, #52] @ (800100c ) + 8000fd8: f043 0301 orr.w r3, r3, #1 + 8000fdc: 6213 str r3, [r2, #32] + 8000fde: 4b0b ldr r3, [pc, #44] @ (800100c ) + 8000fe0: 6a1b ldr r3, [r3, #32] + 8000fe2: f003 0301 and.w r3, r3, #1 + 8000fe6: 60bb str r3, [r7, #8] + 8000fe8: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 8000fea: 4b08 ldr r3, [pc, #32] @ (800100c ) + 8000fec: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000fee: 4a07 ldr r2, [pc, #28] @ (800100c ) + 8000ff0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000ff4: 6253 str r3, [r2, #36] @ 0x24 + 8000ff6: 4b05 ldr r3, [pc, #20] @ (800100c ) + 8000ff8: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000ffa: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000ffe: 607b str r3, [r7, #4] + 8001000: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8001002: bf00 nop + 8001004: 3714 adds r7, #20 + 8001006: 46bd mov sp, r7 + 8001008: bc80 pop {r7} + 800100a: 4770 bx lr + 800100c: 40023800 .word 0x40023800 + +08001010 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8001010: b580 push {r7, lr} + 8001012: b08a sub sp, #40 @ 0x28 + 8001014: af00 add r7, sp, #0 + 8001016: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8001018: f107 0314 add.w r3, r7, #20 + 800101c: 2200 movs r2, #0 + 800101e: 601a str r2, [r3, #0] + 8001020: 605a str r2, [r3, #4] + 8001022: 609a str r2, [r3, #8] + 8001024: 60da str r2, [r3, #12] + 8001026: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 8001028: 687b ldr r3, [r7, #4] + 800102a: 681b ldr r3, [r3, #0] + 800102c: 4a17 ldr r2, [pc, #92] @ (800108c ) + 800102e: 4293 cmp r3, r2 + 8001030: d127 bne.n 8001082 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 8001032: 4b17 ldr r3, [pc, #92] @ (8001090 ) + 8001034: 6a1b ldr r3, [r3, #32] + 8001036: 4a16 ldr r2, [pc, #88] @ (8001090 ) + 8001038: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 800103c: 6213 str r3, [r2, #32] + 800103e: 4b14 ldr r3, [pc, #80] @ (8001090 ) + 8001040: 6a1b ldr r3, [r3, #32] + 8001042: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8001046: 613b str r3, [r7, #16] + 8001048: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800104a: 4b11 ldr r3, [pc, #68] @ (8001090 ) + 800104c: 69db ldr r3, [r3, #28] + 800104e: 4a10 ldr r2, [pc, #64] @ (8001090 ) + 8001050: f043 0301 orr.w r3, r3, #1 + 8001054: 61d3 str r3, [r2, #28] + 8001056: 4b0e ldr r3, [pc, #56] @ (8001090 ) + 8001058: 69db ldr r3, [r3, #28] + 800105a: f003 0301 and.w r3, r3, #1 + 800105e: 60fb str r3, [r7, #12] + 8001060: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 8001062: 23e0 movs r3, #224 @ 0xe0 + 8001064: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8001066: 2302 movs r3, #2 + 8001068: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800106a: 2300 movs r3, #0 + 800106c: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 800106e: 2303 movs r3, #3 + 8001070: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 8001072: 2305 movs r3, #5 + 8001074: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8001076: f107 0314 add.w r3, r7, #20 + 800107a: 4619 mov r1, r3 + 800107c: 4805 ldr r0, [pc, #20] @ (8001094 ) + 800107e: f000 fb27 bl 80016d0 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 8001082: bf00 nop + 8001084: 3728 adds r7, #40 @ 0x28 + 8001086: 46bd mov sp, r7 + 8001088: bd80 pop {r7, pc} + 800108a: bf00 nop + 800108c: 40013000 .word 0x40013000 + 8001090: 40023800 .word 0x40023800 + 8001094: 40020000 .word 0x40020000 + +08001098 : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 8001098: b580 push {r7, lr} + 800109a: b084 sub sp, #16 + 800109c: af00 add r7, sp, #0 + 800109e: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 80010a0: 687b ldr r3, [r7, #4] + 80010a2: 681b ldr r3, [r3, #0] + 80010a4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80010a8: d114 bne.n 80010d4 + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 80010aa: 4b19 ldr r3, [pc, #100] @ (8001110 ) + 80010ac: 6a5b ldr r3, [r3, #36] @ 0x24 + 80010ae: 4a18 ldr r2, [pc, #96] @ (8001110 ) + 80010b0: f043 0301 orr.w r3, r3, #1 + 80010b4: 6253 str r3, [r2, #36] @ 0x24 + 80010b6: 4b16 ldr r3, [pc, #88] @ (8001110 ) + 80010b8: 6a5b ldr r3, [r3, #36] @ 0x24 + 80010ba: f003 0301 and.w r3, r3, #1 + 80010be: 60fb str r3, [r7, #12] + 80010c0: 68fb ldr r3, [r7, #12] + /* TIM2 interrupt Init */ + HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + 80010c2: 2200 movs r2, #0 + 80010c4: 2100 movs r1, #0 + 80010c6: 201c movs r0, #28 + 80010c8: f000 facb bl 8001662 + HAL_NVIC_EnableIRQ(TIM2_IRQn); + 80010cc: 201c movs r0, #28 + 80010ce: f000 fae4 bl 800169a + /* USER CODE BEGIN TIM3_MspInit 1 */ + + /* USER CODE END TIM3_MspInit 1 */ + } + +} + 80010d2: e018 b.n 8001106 + else if(htim_base->Instance==TIM3) + 80010d4: 687b ldr r3, [r7, #4] + 80010d6: 681b ldr r3, [r3, #0] + 80010d8: 4a0e ldr r2, [pc, #56] @ (8001114 ) + 80010da: 4293 cmp r3, r2 + 80010dc: d113 bne.n 8001106 + __HAL_RCC_TIM3_CLK_ENABLE(); + 80010de: 4b0c ldr r3, [pc, #48] @ (8001110 ) + 80010e0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80010e2: 4a0b ldr r2, [pc, #44] @ (8001110 ) + 80010e4: f043 0302 orr.w r3, r3, #2 + 80010e8: 6253 str r3, [r2, #36] @ 0x24 + 80010ea: 4b09 ldr r3, [pc, #36] @ (8001110 ) + 80010ec: 6a5b ldr r3, [r3, #36] @ 0x24 + 80010ee: f003 0302 and.w r3, r3, #2 + 80010f2: 60bb str r3, [r7, #8] + 80010f4: 68bb ldr r3, [r7, #8] + HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); + 80010f6: 2200 movs r2, #0 + 80010f8: 2100 movs r1, #0 + 80010fa: 201d movs r0, #29 + 80010fc: f000 fab1 bl 8001662 + HAL_NVIC_EnableIRQ(TIM3_IRQn); + 8001100: 201d movs r0, #29 + 8001102: f000 faca bl 800169a +} + 8001106: bf00 nop + 8001108: 3710 adds r7, #16 + 800110a: 46bd mov sp, r7 + 800110c: bd80 pop {r7, pc} + 800110e: bf00 nop + 8001110: 40023800 .word 0x40023800 + 8001114: 40000400 .word 0x40000400 + +08001118 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8001118: b580 push {r7, lr} + 800111a: b08a sub sp, #40 @ 0x28 + 800111c: af00 add r7, sp, #0 + 800111e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8001120: f107 0314 add.w r3, r7, #20 + 8001124: 2200 movs r2, #0 + 8001126: 601a str r2, [r3, #0] + 8001128: 605a str r2, [r3, #4] + 800112a: 609a str r2, [r3, #8] + 800112c: 60da str r2, [r3, #12] + 800112e: 611a str r2, [r3, #16] + if(htim->Instance==TIM3) + 8001130: 687b ldr r3, [r7, #4] + 8001132: 681b ldr r3, [r3, #0] + 8001134: 4a1f ldr r2, [pc, #124] @ (80011b4 ) + 8001136: 4293 cmp r3, r2 + 8001138: d137 bne.n 80011aa + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + + __HAL_RCC_GPIOC_CLK_ENABLE(); + 800113a: 4b1f ldr r3, [pc, #124] @ (80011b8 ) + 800113c: 69db ldr r3, [r3, #28] + 800113e: 4a1e ldr r2, [pc, #120] @ (80011b8 ) + 8001140: f043 0304 orr.w r3, r3, #4 + 8001144: 61d3 str r3, [r2, #28] + 8001146: 4b1c ldr r3, [pc, #112] @ (80011b8 ) + 8001148: 69db ldr r3, [r3, #28] + 800114a: f003 0304 and.w r3, r3, #4 + 800114e: 613b str r3, [r7, #16] + 8001150: 693b ldr r3, [r7, #16] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8001152: 4b19 ldr r3, [pc, #100] @ (80011b8 ) + 8001154: 69db ldr r3, [r3, #28] + 8001156: 4a18 ldr r2, [pc, #96] @ (80011b8 ) + 8001158: f043 0302 orr.w r3, r3, #2 + 800115c: 61d3 str r3, [r2, #28] + 800115e: 4b16 ldr r3, [pc, #88] @ (80011b8 ) + 8001160: 69db ldr r3, [r3, #28] + 8001162: f003 0302 and.w r3, r3, #2 + 8001166: 60fb str r3, [r7, #12] + 8001168: 68fb ldr r3, [r7, #12] + /**TIM3 GPIO Configuration + PC6 ------> TIM3_CH1 + PB5 ------> TIM3_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + 800116a: 2340 movs r3, #64 @ 0x40 + 800116c: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 800116e: 2302 movs r3, #2 + 8001170: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8001172: 2300 movs r3, #0 + 8001174: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8001176: 2300 movs r3, #0 + 8001178: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + 800117a: 2302 movs r3, #2 + 800117c: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 800117e: f107 0314 add.w r3, r7, #20 + 8001182: 4619 mov r1, r3 + 8001184: 480d ldr r0, [pc, #52] @ (80011bc ) + 8001186: f000 faa3 bl 80016d0 + + GPIO_InitStruct.Pin = GPIO_PIN_5; + 800118a: 2320 movs r3, #32 + 800118c: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 800118e: 2302 movs r3, #2 + 8001190: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8001192: 2300 movs r3, #0 + 8001194: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8001196: 2300 movs r3, #0 + 8001198: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + 800119a: 2302 movs r3, #2 + 800119c: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 800119e: f107 0314 add.w r3, r7, #20 + 80011a2: 4619 mov r1, r3 + 80011a4: 4806 ldr r0, [pc, #24] @ (80011c0 ) + 80011a6: f000 fa93 bl 80016d0 + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + +} + 80011aa: bf00 nop + 80011ac: 3728 adds r7, #40 @ 0x28 + 80011ae: 46bd mov sp, r7 + 80011b0: bd80 pop {r7, pc} + 80011b2: bf00 nop + 80011b4: 40000400 .word 0x40000400 + 80011b8: 40023800 .word 0x40023800 + 80011bc: 40020800 .word 0x40020800 + 80011c0: 40020400 .word 0x40020400 + +080011c4 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 80011c4: b480 push {r7} + 80011c6: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 80011c8: bf00 nop + 80011ca: e7fd b.n 80011c8 + +080011cc : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 80011cc: b480 push {r7} + 80011ce: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 80011d0: bf00 nop + 80011d2: e7fd b.n 80011d0 + +080011d4 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 80011d4: b480 push {r7} + 80011d6: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 80011d8: bf00 nop + 80011da: e7fd b.n 80011d8 + +080011dc : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 80011dc: b480 push {r7} + 80011de: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 80011e0: bf00 nop + 80011e2: e7fd b.n 80011e0 + +080011e4 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 80011e4: b480 push {r7} + 80011e6: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 80011e8: bf00 nop + 80011ea: e7fd b.n 80011e8 + +080011ec : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 80011ec: b480 push {r7} + 80011ee: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 80011f0: bf00 nop + 80011f2: 46bd mov sp, r7 + 80011f4: bc80 pop {r7} + 80011f6: 4770 bx lr + +080011f8 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 80011f8: b480 push {r7} + 80011fa: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 80011fc: bf00 nop + 80011fe: 46bd mov sp, r7 + 8001200: bc80 pop {r7} + 8001202: 4770 bx lr + +08001204 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8001204: b480 push {r7} + 8001206: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8001208: bf00 nop + 800120a: 46bd mov sp, r7 + 800120c: bc80 pop {r7} + 800120e: 4770 bx lr + +08001210 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8001210: b580 push {r7, lr} + 8001212: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8001214: f000 f932 bl 800147c + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8001218: bf00 nop + 800121a: bd80 pop {r7, pc} + +0800121c : + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + 800121c: b580 push {r7, lr} + 800121e: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + 8001220: 4802 ldr r0, [pc, #8] @ (800122c ) + 8001222: f001 fdbb bl 8002d9c + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + 8001226: bf00 nop + 8001228: bd80 pop {r7, pc} + 800122a: bf00 nop + 800122c: 20000084 .word 0x20000084 + +08001230 : + +/** + * @brief This function handles TIM3 global interrupt. + */ +void TIM3_IRQHandler(void) +{ + 8001230: b580 push {r7, lr} + 8001232: af00 add r7, sp, #0 + /* USER CODE BEGIN TIM3_IRQn 0 */ + + /* USER CODE END TIM3_IRQn 0 */ + HAL_TIM_IRQHandler(&htim3); + 8001234: 4802 ldr r0, [pc, #8] @ (8001240 ) + 8001236: f001 fdb1 bl 8002d9c + /* USER CODE BEGIN TIM3_IRQn 1 */ + + /* USER CODE END TIM3_IRQn 1 */ +} + 800123a: bf00 nop + 800123c: bd80 pop {r7, pc} + 800123e: bf00 nop + 8001240: 200000c4 .word 0x200000c4 + +08001244 : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 8001244: b580 push {r7, lr} + 8001246: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 8001248: f44f 6000 mov.w r0, #2048 @ 0x800 + 800124c: f000 fbe8 bl 8001a20 + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 8001250: f44f 5080 mov.w r0, #4096 @ 0x1000 + 8001254: f000 fbe4 bl 8001a20 + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8001258: bf00 nop + 800125a: bd80 pop {r7, pc} + +0800125c : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 800125c: b480 push {r7} + 800125e: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8001260: bf00 nop + 8001262: 46bd mov sp, r7 + 8001264: bc80 pop {r7} + 8001266: 4770 bx lr + +08001268 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8001268: f7ff fff8 bl 800125c + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 800126c: 480b ldr r0, [pc, #44] @ (800129c ) + ldr r1, =_edata + 800126e: 490c ldr r1, [pc, #48] @ (80012a0 ) + ldr r2, =_sidata + 8001270: 4a0c ldr r2, [pc, #48] @ (80012a4 ) + movs r3, #0 + 8001272: 2300 movs r3, #0 + b LoopCopyDataInit + 8001274: e002 b.n 800127c + +08001276 : + +CopyDataInit: + ldr r4, [r2, r3] + 8001276: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8001278: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 800127a: 3304 adds r3, #4 + +0800127c : + +LoopCopyDataInit: + adds r4, r0, r3 + 800127c: 18c4 adds r4, r0, r3 + cmp r4, r1 + 800127e: 428c cmp r4, r1 + bcc CopyDataInit + 8001280: d3f9 bcc.n 8001276 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8001282: 4a09 ldr r2, [pc, #36] @ (80012a8 ) + ldr r4, =_ebss + 8001284: 4c09 ldr r4, [pc, #36] @ (80012ac ) + movs r3, #0 + 8001286: 2300 movs r3, #0 + b LoopFillZerobss + 8001288: e001 b.n 800128e + +0800128a : + +FillZerobss: + str r3, [r2] + 800128a: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 800128c: 3204 adds r2, #4 + +0800128e : + +LoopFillZerobss: + cmp r2, r4 + 800128e: 42a2 cmp r2, r4 + bcc FillZerobss + 8001290: d3fb bcc.n 800128a + +/* Call static constructors */ + bl __libc_init_array + 8001292: f002 fa89 bl 80037a8 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8001296: f7ff fc57 bl 8000b48
+ bx lr + 800129a: 4770 bx lr + ldr r0, =_sdata + 800129c: 20000000 .word 0x20000000 + ldr r1, =_edata + 80012a0: 20000010 .word 0x20000010 + ldr r2, =_sidata + 80012a4: 08003844 .word 0x08003844 + ldr r2, =_sbss + 80012a8: 20000010 .word 0x20000010 + ldr r4, =_ebss + 80012ac: 2000010c .word 0x2000010c + +080012b0 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 80012b0: e7fe b.n 80012b0 + +080012b2 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 80012b2: b580 push {r7, lr} + 80012b4: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 80012b6: 2107 movs r1, #7 + 80012b8: 200b movs r0, #11 + 80012ba: f000 f85d bl 8001378 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 80012be: 2100 movs r1, #0 + 80012c0: 2009 movs r0, #9 + 80012c2: f000 f859 bl 8001378 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 80012c6: f000 f809 bl 80012dc + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 80012ca: f000 f80f bl 80012ec + MAX7219_Clear(); // clear all digits + 80012ce: f000 f827 bl 8001320 + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 80012d2: 200f movs r0, #15 + 80012d4: f000 f812 bl 80012fc +} + 80012d8: bf00 nop + 80012da: bd80 pop {r7, pc} + +080012dc : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 80012dc: b580 push {r7, lr} + 80012de: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 80012e0: 2101 movs r1, #1 + 80012e2: 200c movs r0, #12 + 80012e4: f000 f848 bl 8001378 +} + 80012e8: bf00 nop + 80012ea: bd80 pop {r7, pc} + +080012ec : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 80012ec: b580 push {r7, lr} + 80012ee: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 80012f0: 2100 movs r1, #0 + 80012f2: 200f movs r0, #15 + 80012f4: f000 f840 bl 8001378 +} + 80012f8: bf00 nop + 80012fa: bd80 pop {r7, pc} + +080012fc : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 80012fc: b580 push {r7, lr} + 80012fe: b082 sub sp, #8 + 8001300: af00 add r7, sp, #0 + 8001302: 4603 mov r3, r0 + 8001304: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8001306: 79fb ldrb r3, [r7, #7] + 8001308: f003 030f and.w r3, r3, #15 + 800130c: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 800130e: 79fb ldrb r3, [r7, #7] + 8001310: 4619 mov r1, r3 + 8001312: 200a movs r0, #10 + 8001314: f000 f830 bl 8001378 +} + 8001318: bf00 nop + 800131a: 3708 adds r7, #8 + 800131c: 46bd mov sp, r7 + 800131e: bd80 pop {r7, pc} + +08001320 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8001320: b580 push {r7, lr} + 8001322: b082 sub sp, #8 + 8001324: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8001326: 2300 movs r3, #0 + 8001328: 71fb strb r3, [r7, #7] + 800132a: e007 b.n 800133c + MAX7219_Write(i, 0x00); // turn all segments off + 800132c: 79fb ldrb r3, [r7, #7] + 800132e: 2100 movs r1, #0 + 8001330: 4618 mov r0, r3 + 8001332: f000 f821 bl 8001378 + for (i=0; i < 8; i++) + 8001336: 79fb ldrb r3, [r7, #7] + 8001338: 3301 adds r3, #1 + 800133a: 71fb strb r3, [r7, #7] + 800133c: 79fb ldrb r3, [r7, #7] + 800133e: 2b07 cmp r3, #7 + 8001340: d9f4 bls.n 800132c +} + 8001342: bf00 nop + 8001344: bf00 nop + 8001346: 3708 adds r7, #8 + 8001348: 46bd mov sp, r7 + 800134a: bd80 pop {r7, pc} + +0800134c : +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + 800134c: b580 push {r7, lr} + 800134e: b082 sub sp, #8 + 8001350: af00 add r7, sp, #0 + 8001352: 4603 mov r3, r0 + 8001354: 460a mov r2, r1 + 8001356: 71fb strb r3, [r7, #7] + 8001358: 4613 mov r3, r2 + 800135a: 71bb strb r3, [r7, #6] + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); + 800135c: 79bb ldrb r3, [r7, #6] + 800135e: 4a05 ldr r2, [pc, #20] @ (8001374 ) + 8001360: 5cd2 ldrb r2, [r2, r3] + 8001362: 79fb ldrb r3, [r7, #7] + 8001364: 4611 mov r1, r2 + 8001366: 4618 mov r0, r3 + 8001368: f000 f806 bl 8001378 +} + 800136c: bf00 nop + 800136e: 3708 adds r7, #8 + 8001370: 46bd mov sp, r7 + 8001372: bd80 pop {r7, pc} + 8001374: 08003824 .word 0x08003824 + +08001378 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8001378: b580 push {r7, lr} + 800137a: b082 sub sp, #8 + 800137c: af00 add r7, sp, #0 + 800137e: 4603 mov r3, r0 + 8001380: 460a mov r2, r1 + 8001382: 71fb strb r3, [r7, #7] + 8001384: 4613 mov r3, r2 + 8001386: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8001388: 4b09 ldr r3, [pc, #36] @ (80013b0 ) + 800138a: f44f 3280 mov.w r2, #65536 @ 0x10000 + 800138e: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8001390: 79fb ldrb r3, [r7, #7] + 8001392: 4618 mov r0, r3 + 8001394: f000 f80e bl 80013b4 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8001398: 79bb ldrb r3, [r7, #6] + 800139a: 4618 mov r0, r3 + 800139c: f000 f80a bl 80013b4 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 80013a0: 4b03 ldr r3, [pc, #12] @ (80013b0 ) + 80013a2: 2201 movs r2, #1 + 80013a4: 619a str r2, [r3, #24] + } + 80013a6: bf00 nop + 80013a8: 3708 adds r7, #8 + 80013aa: 46bd mov sp, r7 + 80013ac: bd80 pop {r7, pc} + 80013ae: bf00 nop + 80013b0: 40020800 .word 0x40020800 + +080013b4 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 80013b4: b580 push {r7, lr} + 80013b6: b082 sub sp, #8 + 80013b8: af00 add r7, sp, #0 + 80013ba: 4603 mov r3, r0 + 80013bc: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 80013be: 1df9 adds r1, r7, #7 + 80013c0: f44f 737a mov.w r3, #1000 @ 0x3e8 + 80013c4: 2201 movs r2, #1 + 80013c6: 4803 ldr r0, [pc, #12] @ (80013d4 ) + 80013c8: f001 f957 bl 800267a + +} + 80013cc: bf00 nop + 80013ce: 3708 adds r7, #8 + 80013d0: 46bd mov sp, r7 + 80013d2: bd80 pop {r7, pc} + 80013d4: 2000002c .word 0x2000002c + +080013d8 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 80013d8: b580 push {r7, lr} + 80013da: b082 sub sp, #8 + 80013dc: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 80013de: 2300 movs r3, #0 + 80013e0: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 80013e2: 2003 movs r0, #3 + 80013e4: f000 f932 bl 800164c + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 80013e8: 200f movs r0, #15 + 80013ea: f000 f80d bl 8001408 + 80013ee: 4603 mov r3, r0 + 80013f0: 2b00 cmp r3, #0 + 80013f2: d002 beq.n 80013fa + { + status = HAL_ERROR; + 80013f4: 2301 movs r3, #1 + 80013f6: 71fb strb r3, [r7, #7] + 80013f8: e001 b.n 80013fe + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 80013fa: f7ff fddb bl 8000fb4 + } + + /* Return function status */ + return status; + 80013fe: 79fb ldrb r3, [r7, #7] +} + 8001400: 4618 mov r0, r3 + 8001402: 3708 adds r7, #8 + 8001404: 46bd mov sp, r7 + 8001406: bd80 pop {r7, pc} + +08001408 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8001408: b580 push {r7, lr} + 800140a: b084 sub sp, #16 + 800140c: af00 add r7, sp, #0 + 800140e: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8001410: 2300 movs r3, #0 + 8001412: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8001414: 4b16 ldr r3, [pc, #88] @ (8001470 ) + 8001416: 681b ldr r3, [r3, #0] + 8001418: 2b00 cmp r3, #0 + 800141a: d022 beq.n 8001462 + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 800141c: 4b15 ldr r3, [pc, #84] @ (8001474 ) + 800141e: 681a ldr r2, [r3, #0] + 8001420: 4b13 ldr r3, [pc, #76] @ (8001470 ) + 8001422: 681b ldr r3, [r3, #0] + 8001424: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8001428: fbb1 f3f3 udiv r3, r1, r3 + 800142c: fbb2 f3f3 udiv r3, r2, r3 + 8001430: 4618 mov r0, r3 + 8001432: f000 f940 bl 80016b6 + 8001436: 4603 mov r3, r0 + 8001438: 2b00 cmp r3, #0 + 800143a: d10f bne.n 800145c + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 800143c: 687b ldr r3, [r7, #4] + 800143e: 2b0f cmp r3, #15 + 8001440: d809 bhi.n 8001456 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8001442: 2200 movs r2, #0 + 8001444: 6879 ldr r1, [r7, #4] + 8001446: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800144a: f000 f90a bl 8001662 + uwTickPrio = TickPriority; + 800144e: 4a0a ldr r2, [pc, #40] @ (8001478 ) + 8001450: 687b ldr r3, [r7, #4] + 8001452: 6013 str r3, [r2, #0] + 8001454: e007 b.n 8001466 + } + else + { + status = HAL_ERROR; + 8001456: 2301 movs r3, #1 + 8001458: 73fb strb r3, [r7, #15] + 800145a: e004 b.n 8001466 + } + } + else + { + status = HAL_ERROR; + 800145c: 2301 movs r3, #1 + 800145e: 73fb strb r3, [r7, #15] + 8001460: e001 b.n 8001466 + } + } + else + { + status = HAL_ERROR; + 8001462: 2301 movs r3, #1 + 8001464: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8001466: 7bfb ldrb r3, [r7, #15] +} + 8001468: 4618 mov r0, r3 + 800146a: 3710 adds r7, #16 + 800146c: 46bd mov sp, r7 + 800146e: bd80 pop {r7, pc} + 8001470: 2000000c .word 0x2000000c + 8001474: 20000004 .word 0x20000004 + 8001478: 20000008 .word 0x20000008 + +0800147c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 800147c: b480 push {r7} + 800147e: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8001480: 4b05 ldr r3, [pc, #20] @ (8001498 ) + 8001482: 681a ldr r2, [r3, #0] + 8001484: 4b05 ldr r3, [pc, #20] @ (800149c ) + 8001486: 681b ldr r3, [r3, #0] + 8001488: 4413 add r3, r2 + 800148a: 4a03 ldr r2, [pc, #12] @ (8001498 ) + 800148c: 6013 str r3, [r2, #0] +} + 800148e: bf00 nop + 8001490: 46bd mov sp, r7 + 8001492: bc80 pop {r7} + 8001494: 4770 bx lr + 8001496: bf00 nop + 8001498: 20000108 .word 0x20000108 + 800149c: 2000000c .word 0x2000000c + +080014a0 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 80014a0: b480 push {r7} + 80014a2: af00 add r7, sp, #0 + return uwTick; + 80014a4: 4b02 ldr r3, [pc, #8] @ (80014b0 ) + 80014a6: 681b ldr r3, [r3, #0] +} + 80014a8: 4618 mov r0, r3 + 80014aa: 46bd mov sp, r7 + 80014ac: bc80 pop {r7} + 80014ae: 4770 bx lr + 80014b0: 20000108 .word 0x20000108 + +080014b4 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 80014b4: b480 push {r7} + 80014b6: b085 sub sp, #20 + 80014b8: af00 add r7, sp, #0 + 80014ba: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 80014bc: 687b ldr r3, [r7, #4] + 80014be: f003 0307 and.w r3, r3, #7 + 80014c2: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 80014c4: 4b0c ldr r3, [pc, #48] @ (80014f8 <__NVIC_SetPriorityGrouping+0x44>) + 80014c6: 68db ldr r3, [r3, #12] + 80014c8: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 80014ca: 68ba ldr r2, [r7, #8] + 80014cc: f64f 03ff movw r3, #63743 @ 0xf8ff + 80014d0: 4013 ands r3, r2 + 80014d2: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 80014d4: 68fb ldr r3, [r7, #12] + 80014d6: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 80014d8: 68bb ldr r3, [r7, #8] + 80014da: 4313 orrs r3, r2 + reg_value = (reg_value | + 80014dc: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 80014e0: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 80014e4: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 80014e6: 4a04 ldr r2, [pc, #16] @ (80014f8 <__NVIC_SetPriorityGrouping+0x44>) + 80014e8: 68bb ldr r3, [r7, #8] + 80014ea: 60d3 str r3, [r2, #12] +} + 80014ec: bf00 nop + 80014ee: 3714 adds r7, #20 + 80014f0: 46bd mov sp, r7 + 80014f2: bc80 pop {r7} + 80014f4: 4770 bx lr + 80014f6: bf00 nop + 80014f8: e000ed00 .word 0xe000ed00 + +080014fc <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 80014fc: b480 push {r7} + 80014fe: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8001500: 4b04 ldr r3, [pc, #16] @ (8001514 <__NVIC_GetPriorityGrouping+0x18>) + 8001502: 68db ldr r3, [r3, #12] + 8001504: 0a1b lsrs r3, r3, #8 + 8001506: f003 0307 and.w r3, r3, #7 +} + 800150a: 4618 mov r0, r3 + 800150c: 46bd mov sp, r7 + 800150e: bc80 pop {r7} + 8001510: 4770 bx lr + 8001512: bf00 nop + 8001514: e000ed00 .word 0xe000ed00 + +08001518 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8001518: b480 push {r7} + 800151a: b083 sub sp, #12 + 800151c: af00 add r7, sp, #0 + 800151e: 4603 mov r3, r0 + 8001520: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8001522: f997 3007 ldrsb.w r3, [r7, #7] + 8001526: 2b00 cmp r3, #0 + 8001528: db0b blt.n 8001542 <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 800152a: 79fb ldrb r3, [r7, #7] + 800152c: f003 021f and.w r2, r3, #31 + 8001530: 4906 ldr r1, [pc, #24] @ (800154c <__NVIC_EnableIRQ+0x34>) + 8001532: f997 3007 ldrsb.w r3, [r7, #7] + 8001536: 095b lsrs r3, r3, #5 + 8001538: 2001 movs r0, #1 + 800153a: fa00 f202 lsl.w r2, r0, r2 + 800153e: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8001542: bf00 nop + 8001544: 370c adds r7, #12 + 8001546: 46bd mov sp, r7 + 8001548: bc80 pop {r7} + 800154a: 4770 bx lr + 800154c: e000e100 .word 0xe000e100 + +08001550 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8001550: b480 push {r7} + 8001552: b083 sub sp, #12 + 8001554: af00 add r7, sp, #0 + 8001556: 4603 mov r3, r0 + 8001558: 6039 str r1, [r7, #0] + 800155a: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 800155c: f997 3007 ldrsb.w r3, [r7, #7] + 8001560: 2b00 cmp r3, #0 + 8001562: db0a blt.n 800157a <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8001564: 683b ldr r3, [r7, #0] + 8001566: b2da uxtb r2, r3 + 8001568: 490c ldr r1, [pc, #48] @ (800159c <__NVIC_SetPriority+0x4c>) + 800156a: f997 3007 ldrsb.w r3, [r7, #7] + 800156e: 0112 lsls r2, r2, #4 + 8001570: b2d2 uxtb r2, r2 + 8001572: 440b add r3, r1 + 8001574: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8001578: e00a b.n 8001590 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 800157a: 683b ldr r3, [r7, #0] + 800157c: b2da uxtb r2, r3 + 800157e: 4908 ldr r1, [pc, #32] @ (80015a0 <__NVIC_SetPriority+0x50>) + 8001580: 79fb ldrb r3, [r7, #7] + 8001582: f003 030f and.w r3, r3, #15 + 8001586: 3b04 subs r3, #4 + 8001588: 0112 lsls r2, r2, #4 + 800158a: b2d2 uxtb r2, r2 + 800158c: 440b add r3, r1 + 800158e: 761a strb r2, [r3, #24] +} + 8001590: bf00 nop + 8001592: 370c adds r7, #12 + 8001594: 46bd mov sp, r7 + 8001596: bc80 pop {r7} + 8001598: 4770 bx lr + 800159a: bf00 nop + 800159c: e000e100 .word 0xe000e100 + 80015a0: e000ed00 .word 0xe000ed00 + +080015a4 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 80015a4: b480 push {r7} + 80015a6: b089 sub sp, #36 @ 0x24 + 80015a8: af00 add r7, sp, #0 + 80015aa: 60f8 str r0, [r7, #12] + 80015ac: 60b9 str r1, [r7, #8] + 80015ae: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 80015b0: 68fb ldr r3, [r7, #12] + 80015b2: f003 0307 and.w r3, r3, #7 + 80015b6: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 80015b8: 69fb ldr r3, [r7, #28] + 80015ba: f1c3 0307 rsb r3, r3, #7 + 80015be: 2b04 cmp r3, #4 + 80015c0: bf28 it cs + 80015c2: 2304 movcs r3, #4 + 80015c4: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 80015c6: 69fb ldr r3, [r7, #28] + 80015c8: 3304 adds r3, #4 + 80015ca: 2b06 cmp r3, #6 + 80015cc: d902 bls.n 80015d4 + 80015ce: 69fb ldr r3, [r7, #28] + 80015d0: 3b03 subs r3, #3 + 80015d2: e000 b.n 80015d6 + 80015d4: 2300 movs r3, #0 + 80015d6: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 80015d8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 80015dc: 69bb ldr r3, [r7, #24] + 80015de: fa02 f303 lsl.w r3, r2, r3 + 80015e2: 43da mvns r2, r3 + 80015e4: 68bb ldr r3, [r7, #8] + 80015e6: 401a ands r2, r3 + 80015e8: 697b ldr r3, [r7, #20] + 80015ea: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 80015ec: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 80015f0: 697b ldr r3, [r7, #20] + 80015f2: fa01 f303 lsl.w r3, r1, r3 + 80015f6: 43d9 mvns r1, r3 + 80015f8: 687b ldr r3, [r7, #4] + 80015fa: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 80015fc: 4313 orrs r3, r2 + ); +} + 80015fe: 4618 mov r0, r3 + 8001600: 3724 adds r7, #36 @ 0x24 + 8001602: 46bd mov sp, r7 + 8001604: bc80 pop {r7} + 8001606: 4770 bx lr + +08001608 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8001608: b580 push {r7, lr} + 800160a: b082 sub sp, #8 + 800160c: af00 add r7, sp, #0 + 800160e: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8001610: 687b ldr r3, [r7, #4] + 8001612: 3b01 subs r3, #1 + 8001614: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8001618: d301 bcc.n 800161e + { + return (1UL); /* Reload value impossible */ + 800161a: 2301 movs r3, #1 + 800161c: e00f b.n 800163e + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 800161e: 4a0a ldr r2, [pc, #40] @ (8001648 ) + 8001620: 687b ldr r3, [r7, #4] + 8001622: 3b01 subs r3, #1 + 8001624: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8001626: 210f movs r1, #15 + 8001628: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800162c: f7ff ff90 bl 8001550 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8001630: 4b05 ldr r3, [pc, #20] @ (8001648 ) + 8001632: 2200 movs r2, #0 + 8001634: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8001636: 4b04 ldr r3, [pc, #16] @ (8001648 ) + 8001638: 2207 movs r2, #7 + 800163a: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 800163c: 2300 movs r3, #0 +} + 800163e: 4618 mov r0, r3 + 8001640: 3708 adds r7, #8 + 8001642: 46bd mov sp, r7 + 8001644: bd80 pop {r7, pc} + 8001646: bf00 nop + 8001648: e000e010 .word 0xe000e010 + +0800164c : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 800164c: b580 push {r7, lr} + 800164e: b082 sub sp, #8 + 8001650: af00 add r7, sp, #0 + 8001652: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8001654: 6878 ldr r0, [r7, #4] + 8001656: f7ff ff2d bl 80014b4 <__NVIC_SetPriorityGrouping> +} + 800165a: bf00 nop + 800165c: 3708 adds r7, #8 + 800165e: 46bd mov sp, r7 + 8001660: bd80 pop {r7, pc} + +08001662 : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8001662: b580 push {r7, lr} + 8001664: b086 sub sp, #24 + 8001666: af00 add r7, sp, #0 + 8001668: 4603 mov r3, r0 + 800166a: 60b9 str r1, [r7, #8] + 800166c: 607a str r2, [r7, #4] + 800166e: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8001670: 2300 movs r3, #0 + 8001672: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8001674: f7ff ff42 bl 80014fc <__NVIC_GetPriorityGrouping> + 8001678: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 800167a: 687a ldr r2, [r7, #4] + 800167c: 68b9 ldr r1, [r7, #8] + 800167e: 6978 ldr r0, [r7, #20] + 8001680: f7ff ff90 bl 80015a4 + 8001684: 4602 mov r2, r0 + 8001686: f997 300f ldrsb.w r3, [r7, #15] + 800168a: 4611 mov r1, r2 + 800168c: 4618 mov r0, r3 + 800168e: f7ff ff5f bl 8001550 <__NVIC_SetPriority> +} + 8001692: bf00 nop + 8001694: 3718 adds r7, #24 + 8001696: 46bd mov sp, r7 + 8001698: bd80 pop {r7, pc} + +0800169a : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 800169a: b580 push {r7, lr} + 800169c: b082 sub sp, #8 + 800169e: af00 add r7, sp, #0 + 80016a0: 4603 mov r3, r0 + 80016a2: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 80016a4: f997 3007 ldrsb.w r3, [r7, #7] + 80016a8: 4618 mov r0, r3 + 80016aa: f7ff ff35 bl 8001518 <__NVIC_EnableIRQ> +} + 80016ae: bf00 nop + 80016b0: 3708 adds r7, #8 + 80016b2: 46bd mov sp, r7 + 80016b4: bd80 pop {r7, pc} + +080016b6 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 80016b6: b580 push {r7, lr} + 80016b8: b082 sub sp, #8 + 80016ba: af00 add r7, sp, #0 + 80016bc: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 80016be: 6878 ldr r0, [r7, #4] + 80016c0: f7ff ffa2 bl 8001608 + 80016c4: 4603 mov r3, r0 +} + 80016c6: 4618 mov r0, r3 + 80016c8: 3708 adds r7, #8 + 80016ca: 46bd mov sp, r7 + 80016cc: bd80 pop {r7, pc} + ... + +080016d0 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 80016d0: b480 push {r7} + 80016d2: b087 sub sp, #28 + 80016d4: af00 add r7, sp, #0 + 80016d6: 6078 str r0, [r7, #4] + 80016d8: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 80016da: 2300 movs r3, #0 + 80016dc: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 80016de: 2300 movs r3, #0 + 80016e0: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 80016e2: 2300 movs r3, #0 + 80016e4: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 80016e6: e160 b.n 80019aa + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 80016e8: 683b ldr r3, [r7, #0] + 80016ea: 681a ldr r2, [r3, #0] + 80016ec: 2101 movs r1, #1 + 80016ee: 697b ldr r3, [r7, #20] + 80016f0: fa01 f303 lsl.w r3, r1, r3 + 80016f4: 4013 ands r3, r2 + 80016f6: 60fb str r3, [r7, #12] + + if (iocurrent) + 80016f8: 68fb ldr r3, [r7, #12] + 80016fa: 2b00 cmp r3, #0 + 80016fc: f000 8152 beq.w 80019a4 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001700: 683b ldr r3, [r7, #0] + 8001702: 685b ldr r3, [r3, #4] + 8001704: f003 0303 and.w r3, r3, #3 + 8001708: 2b01 cmp r3, #1 + 800170a: d005 beq.n 8001718 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 800170c: 683b ldr r3, [r7, #0] + 800170e: 685b ldr r3, [r3, #4] + 8001710: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001714: 2b02 cmp r3, #2 + 8001716: d130 bne.n 800177a + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8001718: 687b ldr r3, [r7, #4] + 800171a: 689b ldr r3, [r3, #8] + 800171c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 800171e: 697b ldr r3, [r7, #20] + 8001720: 005b lsls r3, r3, #1 + 8001722: 2203 movs r2, #3 + 8001724: fa02 f303 lsl.w r3, r2, r3 + 8001728: 43db mvns r3, r3 + 800172a: 693a ldr r2, [r7, #16] + 800172c: 4013 ands r3, r2 + 800172e: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8001730: 683b ldr r3, [r7, #0] + 8001732: 68da ldr r2, [r3, #12] + 8001734: 697b ldr r3, [r7, #20] + 8001736: 005b lsls r3, r3, #1 + 8001738: fa02 f303 lsl.w r3, r2, r3 + 800173c: 693a ldr r2, [r7, #16] + 800173e: 4313 orrs r3, r2 + 8001740: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8001742: 687b ldr r3, [r7, #4] + 8001744: 693a ldr r2, [r7, #16] + 8001746: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001748: 687b ldr r3, [r7, #4] + 800174a: 685b ldr r3, [r3, #4] + 800174c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 800174e: 2201 movs r2, #1 + 8001750: 697b ldr r3, [r7, #20] + 8001752: fa02 f303 lsl.w r3, r2, r3 + 8001756: 43db mvns r3, r3 + 8001758: 693a ldr r2, [r7, #16] + 800175a: 4013 ands r3, r2 + 800175c: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800175e: 683b ldr r3, [r7, #0] + 8001760: 685b ldr r3, [r3, #4] + 8001762: 091b lsrs r3, r3, #4 + 8001764: f003 0201 and.w r2, r3, #1 + 8001768: 697b ldr r3, [r7, #20] + 800176a: fa02 f303 lsl.w r3, r2, r3 + 800176e: 693a ldr r2, [r7, #16] + 8001770: 4313 orrs r3, r2 + 8001772: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8001774: 687b ldr r3, [r7, #4] + 8001776: 693a ldr r2, [r7, #16] + 8001778: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 800177a: 683b ldr r3, [r7, #0] + 800177c: 685b ldr r3, [r3, #4] + 800177e: f003 0303 and.w r3, r3, #3 + 8001782: 2b03 cmp r3, #3 + 8001784: d017 beq.n 80017b6 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8001786: 687b ldr r3, [r7, #4] + 8001788: 68db ldr r3, [r3, #12] + 800178a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 800178c: 697b ldr r3, [r7, #20] + 800178e: 005b lsls r3, r3, #1 + 8001790: 2203 movs r2, #3 + 8001792: fa02 f303 lsl.w r3, r2, r3 + 8001796: 43db mvns r3, r3 + 8001798: 693a ldr r2, [r7, #16] + 800179a: 4013 ands r3, r2 + 800179c: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 800179e: 683b ldr r3, [r7, #0] + 80017a0: 689a ldr r2, [r3, #8] + 80017a2: 697b ldr r3, [r7, #20] + 80017a4: 005b lsls r3, r3, #1 + 80017a6: fa02 f303 lsl.w r3, r2, r3 + 80017aa: 693a ldr r2, [r7, #16] + 80017ac: 4313 orrs r3, r2 + 80017ae: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 80017b0: 687b ldr r3, [r7, #4] + 80017b2: 693a ldr r2, [r7, #16] + 80017b4: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 80017b6: 683b ldr r3, [r7, #0] + 80017b8: 685b ldr r3, [r3, #4] + 80017ba: f003 0303 and.w r3, r3, #3 + 80017be: 2b02 cmp r3, #2 + 80017c0: d123 bne.n 800180a + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 80017c2: 697b ldr r3, [r7, #20] + 80017c4: 08da lsrs r2, r3, #3 + 80017c6: 687b ldr r3, [r7, #4] + 80017c8: 3208 adds r2, #8 + 80017ca: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80017ce: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 80017d0: 697b ldr r3, [r7, #20] + 80017d2: f003 0307 and.w r3, r3, #7 + 80017d6: 009b lsls r3, r3, #2 + 80017d8: 220f movs r2, #15 + 80017da: fa02 f303 lsl.w r3, r2, r3 + 80017de: 43db mvns r3, r3 + 80017e0: 693a ldr r2, [r7, #16] + 80017e2: 4013 ands r3, r2 + 80017e4: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 80017e6: 683b ldr r3, [r7, #0] + 80017e8: 691a ldr r2, [r3, #16] + 80017ea: 697b ldr r3, [r7, #20] + 80017ec: f003 0307 and.w r3, r3, #7 + 80017f0: 009b lsls r3, r3, #2 + 80017f2: fa02 f303 lsl.w r3, r2, r3 + 80017f6: 693a ldr r2, [r7, #16] + 80017f8: 4313 orrs r3, r2 + 80017fa: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 80017fc: 697b ldr r3, [r7, #20] + 80017fe: 08da lsrs r2, r3, #3 + 8001800: 687b ldr r3, [r7, #4] + 8001802: 3208 adds r2, #8 + 8001804: 6939 ldr r1, [r7, #16] + 8001806: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 800180a: 687b ldr r3, [r7, #4] + 800180c: 681b ldr r3, [r3, #0] + 800180e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8001810: 697b ldr r3, [r7, #20] + 8001812: 005b lsls r3, r3, #1 + 8001814: 2203 movs r2, #3 + 8001816: fa02 f303 lsl.w r3, r2, r3 + 800181a: 43db mvns r3, r3 + 800181c: 693a ldr r2, [r7, #16] + 800181e: 4013 ands r3, r2 + 8001820: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8001822: 683b ldr r3, [r7, #0] + 8001824: 685b ldr r3, [r3, #4] + 8001826: f003 0203 and.w r2, r3, #3 + 800182a: 697b ldr r3, [r7, #20] + 800182c: 005b lsls r3, r3, #1 + 800182e: fa02 f303 lsl.w r3, r2, r3 + 8001832: 693a ldr r2, [r7, #16] + 8001834: 4313 orrs r3, r2 + 8001836: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001838: 687b ldr r3, [r7, #4] + 800183a: 693a ldr r2, [r7, #16] + 800183c: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 800183e: 683b ldr r3, [r7, #0] + 8001840: 685b ldr r3, [r3, #4] + 8001842: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8001846: 2b00 cmp r3, #0 + 8001848: f000 80ac beq.w 80019a4 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 800184c: 4b5e ldr r3, [pc, #376] @ (80019c8 ) + 800184e: 6a1b ldr r3, [r3, #32] + 8001850: 4a5d ldr r2, [pc, #372] @ (80019c8 ) + 8001852: f043 0301 orr.w r3, r3, #1 + 8001856: 6213 str r3, [r2, #32] + 8001858: 4b5b ldr r3, [pc, #364] @ (80019c8 ) + 800185a: 6a1b ldr r3, [r3, #32] + 800185c: f003 0301 and.w r3, r3, #1 + 8001860: 60bb str r3, [r7, #8] + 8001862: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8001864: 4a59 ldr r2, [pc, #356] @ (80019cc ) + 8001866: 697b ldr r3, [r7, #20] + 8001868: 089b lsrs r3, r3, #2 + 800186a: 3302 adds r3, #2 + 800186c: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001870: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8001872: 697b ldr r3, [r7, #20] + 8001874: f003 0303 and.w r3, r3, #3 + 8001878: 009b lsls r3, r3, #2 + 800187a: 220f movs r2, #15 + 800187c: fa02 f303 lsl.w r3, r2, r3 + 8001880: 43db mvns r3, r3 + 8001882: 693a ldr r2, [r7, #16] + 8001884: 4013 ands r3, r2 + 8001886: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8001888: 687b ldr r3, [r7, #4] + 800188a: 4a51 ldr r2, [pc, #324] @ (80019d0 ) + 800188c: 4293 cmp r3, r2 + 800188e: d025 beq.n 80018dc + 8001890: 687b ldr r3, [r7, #4] + 8001892: 4a50 ldr r2, [pc, #320] @ (80019d4 ) + 8001894: 4293 cmp r3, r2 + 8001896: d01f beq.n 80018d8 + 8001898: 687b ldr r3, [r7, #4] + 800189a: 4a4f ldr r2, [pc, #316] @ (80019d8 ) + 800189c: 4293 cmp r3, r2 + 800189e: d019 beq.n 80018d4 + 80018a0: 687b ldr r3, [r7, #4] + 80018a2: 4a4e ldr r2, [pc, #312] @ (80019dc ) + 80018a4: 4293 cmp r3, r2 + 80018a6: d013 beq.n 80018d0 + 80018a8: 687b ldr r3, [r7, #4] + 80018aa: 4a4d ldr r2, [pc, #308] @ (80019e0 ) + 80018ac: 4293 cmp r3, r2 + 80018ae: d00d beq.n 80018cc + 80018b0: 687b ldr r3, [r7, #4] + 80018b2: 4a4c ldr r2, [pc, #304] @ (80019e4 ) + 80018b4: 4293 cmp r3, r2 + 80018b6: d007 beq.n 80018c8 + 80018b8: 687b ldr r3, [r7, #4] + 80018ba: 4a4b ldr r2, [pc, #300] @ (80019e8 ) + 80018bc: 4293 cmp r3, r2 + 80018be: d101 bne.n 80018c4 + 80018c0: 2306 movs r3, #6 + 80018c2: e00c b.n 80018de + 80018c4: 2307 movs r3, #7 + 80018c6: e00a b.n 80018de + 80018c8: 2305 movs r3, #5 + 80018ca: e008 b.n 80018de + 80018cc: 2304 movs r3, #4 + 80018ce: e006 b.n 80018de + 80018d0: 2303 movs r3, #3 + 80018d2: e004 b.n 80018de + 80018d4: 2302 movs r3, #2 + 80018d6: e002 b.n 80018de + 80018d8: 2301 movs r3, #1 + 80018da: e000 b.n 80018de + 80018dc: 2300 movs r3, #0 + 80018de: 697a ldr r2, [r7, #20] + 80018e0: f002 0203 and.w r2, r2, #3 + 80018e4: 0092 lsls r2, r2, #2 + 80018e6: 4093 lsls r3, r2 + 80018e8: 693a ldr r2, [r7, #16] + 80018ea: 4313 orrs r3, r2 + 80018ec: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 80018ee: 4937 ldr r1, [pc, #220] @ (80019cc ) + 80018f0: 697b ldr r3, [r7, #20] + 80018f2: 089b lsrs r3, r3, #2 + 80018f4: 3302 adds r3, #2 + 80018f6: 693a ldr r2, [r7, #16] + 80018f8: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 80018fc: 4b3b ldr r3, [pc, #236] @ (80019ec ) + 80018fe: 689b ldr r3, [r3, #8] + 8001900: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001902: 68fb ldr r3, [r7, #12] + 8001904: 43db mvns r3, r3 + 8001906: 693a ldr r2, [r7, #16] + 8001908: 4013 ands r3, r2 + 800190a: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 800190c: 683b ldr r3, [r7, #0] + 800190e: 685b ldr r3, [r3, #4] + 8001910: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001914: 2b00 cmp r3, #0 + 8001916: d003 beq.n 8001920 + { + SET_BIT(temp, iocurrent); + 8001918: 693a ldr r2, [r7, #16] + 800191a: 68fb ldr r3, [r7, #12] + 800191c: 4313 orrs r3, r2 + 800191e: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001920: 4a32 ldr r2, [pc, #200] @ (80019ec ) + 8001922: 693b ldr r3, [r7, #16] + 8001924: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8001926: 4b31 ldr r3, [pc, #196] @ (80019ec ) + 8001928: 68db ldr r3, [r3, #12] + 800192a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800192c: 68fb ldr r3, [r7, #12] + 800192e: 43db mvns r3, r3 + 8001930: 693a ldr r2, [r7, #16] + 8001932: 4013 ands r3, r2 + 8001934: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001936: 683b ldr r3, [r7, #0] + 8001938: 685b ldr r3, [r3, #4] + 800193a: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 800193e: 2b00 cmp r3, #0 + 8001940: d003 beq.n 800194a + { + SET_BIT(temp, iocurrent); + 8001942: 693a ldr r2, [r7, #16] + 8001944: 68fb ldr r3, [r7, #12] + 8001946: 4313 orrs r3, r2 + 8001948: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 800194a: 4a28 ldr r2, [pc, #160] @ (80019ec ) + 800194c: 693b ldr r3, [r7, #16] + 800194e: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8001950: 4b26 ldr r3, [pc, #152] @ (80019ec ) + 8001952: 685b ldr r3, [r3, #4] + 8001954: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001956: 68fb ldr r3, [r7, #12] + 8001958: 43db mvns r3, r3 + 800195a: 693a ldr r2, [r7, #16] + 800195c: 4013 ands r3, r2 + 800195e: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001960: 683b ldr r3, [r7, #0] + 8001962: 685b ldr r3, [r3, #4] + 8001964: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001968: 2b00 cmp r3, #0 + 800196a: d003 beq.n 8001974 + { + SET_BIT(temp, iocurrent); + 800196c: 693a ldr r2, [r7, #16] + 800196e: 68fb ldr r3, [r7, #12] + 8001970: 4313 orrs r3, r2 + 8001972: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8001974: 4a1d ldr r2, [pc, #116] @ (80019ec ) + 8001976: 693b ldr r3, [r7, #16] + 8001978: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 800197a: 4b1c ldr r3, [pc, #112] @ (80019ec ) + 800197c: 681b ldr r3, [r3, #0] + 800197e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001980: 68fb ldr r3, [r7, #12] + 8001982: 43db mvns r3, r3 + 8001984: 693a ldr r2, [r7, #16] + 8001986: 4013 ands r3, r2 + 8001988: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 800198a: 683b ldr r3, [r7, #0] + 800198c: 685b ldr r3, [r3, #4] + 800198e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001992: 2b00 cmp r3, #0 + 8001994: d003 beq.n 800199e + { + SET_BIT(temp, iocurrent); + 8001996: 693a ldr r2, [r7, #16] + 8001998: 68fb ldr r3, [r7, #12] + 800199a: 4313 orrs r3, r2 + 800199c: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 800199e: 4a13 ldr r2, [pc, #76] @ (80019ec ) + 80019a0: 693b ldr r3, [r7, #16] + 80019a2: 6013 str r3, [r2, #0] + } + } + + position++; + 80019a4: 697b ldr r3, [r7, #20] + 80019a6: 3301 adds r3, #1 + 80019a8: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80019aa: 683b ldr r3, [r7, #0] + 80019ac: 681a ldr r2, [r3, #0] + 80019ae: 697b ldr r3, [r7, #20] + 80019b0: fa22 f303 lsr.w r3, r2, r3 + 80019b4: 2b00 cmp r3, #0 + 80019b6: f47f ae97 bne.w 80016e8 + } +} + 80019ba: bf00 nop + 80019bc: bf00 nop + 80019be: 371c adds r7, #28 + 80019c0: 46bd mov sp, r7 + 80019c2: bc80 pop {r7} + 80019c4: 4770 bx lr + 80019c6: bf00 nop + 80019c8: 40023800 .word 0x40023800 + 80019cc: 40010000 .word 0x40010000 + 80019d0: 40020000 .word 0x40020000 + 80019d4: 40020400 .word 0x40020400 + 80019d8: 40020800 .word 0x40020800 + 80019dc: 40020c00 .word 0x40020c00 + 80019e0: 40021000 .word 0x40021000 + 80019e4: 40021400 .word 0x40021400 + 80019e8: 40021800 .word 0x40021800 + 80019ec: 40010400 .word 0x40010400 + +080019f0 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 80019f0: b480 push {r7} + 80019f2: b083 sub sp, #12 + 80019f4: af00 add r7, sp, #0 + 80019f6: 6078 str r0, [r7, #4] + 80019f8: 460b mov r3, r1 + 80019fa: 807b strh r3, [r7, #2] + 80019fc: 4613 mov r3, r2 + 80019fe: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8001a00: 787b ldrb r3, [r7, #1] + 8001a02: 2b00 cmp r3, #0 + 8001a04: d003 beq.n 8001a0e + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001a06: 887a ldrh r2, [r7, #2] + 8001a08: 687b ldr r3, [r7, #4] + 8001a0a: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8001a0c: e003 b.n 8001a16 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 8001a0e: 887b ldrh r3, [r7, #2] + 8001a10: 041a lsls r2, r3, #16 + 8001a12: 687b ldr r3, [r7, #4] + 8001a14: 619a str r2, [r3, #24] +} + 8001a16: bf00 nop + 8001a18: 370c adds r7, #12 + 8001a1a: 46bd mov sp, r7 + 8001a1c: bc80 pop {r7} + 8001a1e: 4770 bx lr + +08001a20 : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 8001a20: b580 push {r7, lr} + 8001a22: b082 sub sp, #8 + 8001a24: af00 add r7, sp, #0 + 8001a26: 4603 mov r3, r0 + 8001a28: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 8001a2a: 4b08 ldr r3, [pc, #32] @ (8001a4c ) + 8001a2c: 695a ldr r2, [r3, #20] + 8001a2e: 88fb ldrh r3, [r7, #6] + 8001a30: 4013 ands r3, r2 + 8001a32: 2b00 cmp r3, #0 + 8001a34: d006 beq.n 8001a44 + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 8001a36: 4a05 ldr r2, [pc, #20] @ (8001a4c ) + 8001a38: 88fb ldrh r3, [r7, #6] + 8001a3a: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 8001a3c: 88fb ldrh r3, [r7, #6] + 8001a3e: 4618 mov r0, r3 + 8001a40: f000 f806 bl 8001a50 + } +} + 8001a44: bf00 nop + 8001a46: 3708 adds r7, #8 + 8001a48: 46bd mov sp, r7 + 8001a4a: bd80 pop {r7, pc} + 8001a4c: 40010400 .word 0x40010400 + +08001a50 : + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 8001a50: b480 push {r7} + 8001a52: b083 sub sp, #12 + 8001a54: af00 add r7, sp, #0 + 8001a56: 4603 mov r3, r0 + 8001a58: 80fb strh r3, [r7, #6] + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + 8001a5a: bf00 nop + 8001a5c: 370c adds r7, #12 + 8001a5e: 46bd mov sp, r7 + 8001a60: bc80 pop {r7} + 8001a62: 4770 bx lr + +08001a64 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8001a64: b580 push {r7, lr} + 8001a66: b088 sub sp, #32 + 8001a68: af00 add r7, sp, #0 + 8001a6a: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8001a6c: 687b ldr r3, [r7, #4] + 8001a6e: 2b00 cmp r3, #0 + 8001a70: d101 bne.n 8001a76 + { + return HAL_ERROR; + 8001a72: 2301 movs r3, #1 + 8001a74: e31d b.n 80020b2 + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8001a76: 4b94 ldr r3, [pc, #592] @ (8001cc8 ) + 8001a78: 689b ldr r3, [r3, #8] + 8001a7a: f003 030c and.w r3, r3, #12 + 8001a7e: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 8001a80: 4b91 ldr r3, [pc, #580] @ (8001cc8 ) + 8001a82: 689b ldr r3, [r3, #8] + 8001a84: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001a88: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8001a8a: 687b ldr r3, [r7, #4] + 8001a8c: 681b ldr r3, [r3, #0] + 8001a8e: f003 0301 and.w r3, r3, #1 + 8001a92: 2b00 cmp r3, #0 + 8001a94: d07b beq.n 8001b8e + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 8001a96: 69bb ldr r3, [r7, #24] + 8001a98: 2b08 cmp r3, #8 + 8001a9a: d006 beq.n 8001aaa + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8001a9c: 69bb ldr r3, [r7, #24] + 8001a9e: 2b0c cmp r3, #12 + 8001aa0: d10f bne.n 8001ac2 + 8001aa2: 697b ldr r3, [r7, #20] + 8001aa4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8001aa8: d10b bne.n 8001ac2 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001aaa: 4b87 ldr r3, [pc, #540] @ (8001cc8 ) + 8001aac: 681b ldr r3, [r3, #0] + 8001aae: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001ab2: 2b00 cmp r3, #0 + 8001ab4: d06a beq.n 8001b8c + 8001ab6: 687b ldr r3, [r7, #4] + 8001ab8: 685b ldr r3, [r3, #4] + 8001aba: 2b00 cmp r3, #0 + 8001abc: d166 bne.n 8001b8c + { + return HAL_ERROR; + 8001abe: 2301 movs r3, #1 + 8001ac0: e2f7 b.n 80020b2 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 8001ac2: 687b ldr r3, [r7, #4] + 8001ac4: 685b ldr r3, [r3, #4] + 8001ac6: 2b01 cmp r3, #1 + 8001ac8: d106 bne.n 8001ad8 + 8001aca: 4b7f ldr r3, [pc, #508] @ (8001cc8 ) + 8001acc: 681b ldr r3, [r3, #0] + 8001ace: 4a7e ldr r2, [pc, #504] @ (8001cc8 ) + 8001ad0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001ad4: 6013 str r3, [r2, #0] + 8001ad6: e02d b.n 8001b34 + 8001ad8: 687b ldr r3, [r7, #4] + 8001ada: 685b ldr r3, [r3, #4] + 8001adc: 2b00 cmp r3, #0 + 8001ade: d10c bne.n 8001afa + 8001ae0: 4b79 ldr r3, [pc, #484] @ (8001cc8 ) + 8001ae2: 681b ldr r3, [r3, #0] + 8001ae4: 4a78 ldr r2, [pc, #480] @ (8001cc8 ) + 8001ae6: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001aea: 6013 str r3, [r2, #0] + 8001aec: 4b76 ldr r3, [pc, #472] @ (8001cc8 ) + 8001aee: 681b ldr r3, [r3, #0] + 8001af0: 4a75 ldr r2, [pc, #468] @ (8001cc8 ) + 8001af2: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001af6: 6013 str r3, [r2, #0] + 8001af8: e01c b.n 8001b34 + 8001afa: 687b ldr r3, [r7, #4] + 8001afc: 685b ldr r3, [r3, #4] + 8001afe: 2b05 cmp r3, #5 + 8001b00: d10c bne.n 8001b1c + 8001b02: 4b71 ldr r3, [pc, #452] @ (8001cc8 ) + 8001b04: 681b ldr r3, [r3, #0] + 8001b06: 4a70 ldr r2, [pc, #448] @ (8001cc8 ) + 8001b08: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8001b0c: 6013 str r3, [r2, #0] + 8001b0e: 4b6e ldr r3, [pc, #440] @ (8001cc8 ) + 8001b10: 681b ldr r3, [r3, #0] + 8001b12: 4a6d ldr r2, [pc, #436] @ (8001cc8 ) + 8001b14: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001b18: 6013 str r3, [r2, #0] + 8001b1a: e00b b.n 8001b34 + 8001b1c: 4b6a ldr r3, [pc, #424] @ (8001cc8 ) + 8001b1e: 681b ldr r3, [r3, #0] + 8001b20: 4a69 ldr r2, [pc, #420] @ (8001cc8 ) + 8001b22: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001b26: 6013 str r3, [r2, #0] + 8001b28: 4b67 ldr r3, [pc, #412] @ (8001cc8 ) + 8001b2a: 681b ldr r3, [r3, #0] + 8001b2c: 4a66 ldr r2, [pc, #408] @ (8001cc8 ) + 8001b2e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001b32: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8001b34: 687b ldr r3, [r7, #4] + 8001b36: 685b ldr r3, [r3, #4] + 8001b38: 2b00 cmp r3, #0 + 8001b3a: d013 beq.n 8001b64 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001b3c: f7ff fcb0 bl 80014a0 + 8001b40: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001b42: e008 b.n 8001b56 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001b44: f7ff fcac bl 80014a0 + 8001b48: 4602 mov r2, r0 + 8001b4a: 693b ldr r3, [r7, #16] + 8001b4c: 1ad3 subs r3, r2, r3 + 8001b4e: 2b64 cmp r3, #100 @ 0x64 + 8001b50: d901 bls.n 8001b56 + { + return HAL_TIMEOUT; + 8001b52: 2303 movs r3, #3 + 8001b54: e2ad b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001b56: 4b5c ldr r3, [pc, #368] @ (8001cc8 ) + 8001b58: 681b ldr r3, [r3, #0] + 8001b5a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001b5e: 2b00 cmp r3, #0 + 8001b60: d0f0 beq.n 8001b44 + 8001b62: e014 b.n 8001b8e + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001b64: f7ff fc9c bl 80014a0 + 8001b68: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001b6a: e008 b.n 8001b7e + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001b6c: f7ff fc98 bl 80014a0 + 8001b70: 4602 mov r2, r0 + 8001b72: 693b ldr r3, [r7, #16] + 8001b74: 1ad3 subs r3, r2, r3 + 8001b76: 2b64 cmp r3, #100 @ 0x64 + 8001b78: d901 bls.n 8001b7e + { + return HAL_TIMEOUT; + 8001b7a: 2303 movs r3, #3 + 8001b7c: e299 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001b7e: 4b52 ldr r3, [pc, #328] @ (8001cc8 ) + 8001b80: 681b ldr r3, [r3, #0] + 8001b82: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001b86: 2b00 cmp r3, #0 + 8001b88: d1f0 bne.n 8001b6c + 8001b8a: e000 b.n 8001b8e + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001b8c: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 8001b8e: 687b ldr r3, [r7, #4] + 8001b90: 681b ldr r3, [r3, #0] + 8001b92: f003 0302 and.w r3, r3, #2 + 8001b96: 2b00 cmp r3, #0 + 8001b98: d05a beq.n 8001c50 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 8001b9a: 69bb ldr r3, [r7, #24] + 8001b9c: 2b04 cmp r3, #4 + 8001b9e: d005 beq.n 8001bac + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 8001ba0: 69bb ldr r3, [r7, #24] + 8001ba2: 2b0c cmp r3, #12 + 8001ba4: d119 bne.n 8001bda + 8001ba6: 697b ldr r3, [r7, #20] + 8001ba8: 2b00 cmp r3, #0 + 8001baa: d116 bne.n 8001bda + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001bac: 4b46 ldr r3, [pc, #280] @ (8001cc8 ) + 8001bae: 681b ldr r3, [r3, #0] + 8001bb0: f003 0302 and.w r3, r3, #2 + 8001bb4: 2b00 cmp r3, #0 + 8001bb6: d005 beq.n 8001bc4 + 8001bb8: 687b ldr r3, [r7, #4] + 8001bba: 68db ldr r3, [r3, #12] + 8001bbc: 2b01 cmp r3, #1 + 8001bbe: d001 beq.n 8001bc4 + { + return HAL_ERROR; + 8001bc0: 2301 movs r3, #1 + 8001bc2: e276 b.n 80020b2 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001bc4: 4b40 ldr r3, [pc, #256] @ (8001cc8 ) + 8001bc6: 685b ldr r3, [r3, #4] + 8001bc8: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001bcc: 687b ldr r3, [r7, #4] + 8001bce: 691b ldr r3, [r3, #16] + 8001bd0: 021b lsls r3, r3, #8 + 8001bd2: 493d ldr r1, [pc, #244] @ (8001cc8 ) + 8001bd4: 4313 orrs r3, r2 + 8001bd6: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001bd8: e03a b.n 8001c50 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8001bda: 687b ldr r3, [r7, #4] + 8001bdc: 68db ldr r3, [r3, #12] + 8001bde: 2b00 cmp r3, #0 + 8001be0: d020 beq.n 8001c24 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 8001be2: 4b3a ldr r3, [pc, #232] @ (8001ccc ) + 8001be4: 2201 movs r2, #1 + 8001be6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001be8: f7ff fc5a bl 80014a0 + 8001bec: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001bee: e008 b.n 8001c02 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001bf0: f7ff fc56 bl 80014a0 + 8001bf4: 4602 mov r2, r0 + 8001bf6: 693b ldr r3, [r7, #16] + 8001bf8: 1ad3 subs r3, r2, r3 + 8001bfa: 2b02 cmp r3, #2 + 8001bfc: d901 bls.n 8001c02 + { + return HAL_TIMEOUT; + 8001bfe: 2303 movs r3, #3 + 8001c00: e257 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001c02: 4b31 ldr r3, [pc, #196] @ (8001cc8 ) + 8001c04: 681b ldr r3, [r3, #0] + 8001c06: f003 0302 and.w r3, r3, #2 + 8001c0a: 2b00 cmp r3, #0 + 8001c0c: d0f0 beq.n 8001bf0 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001c0e: 4b2e ldr r3, [pc, #184] @ (8001cc8 ) + 8001c10: 685b ldr r3, [r3, #4] + 8001c12: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001c16: 687b ldr r3, [r7, #4] + 8001c18: 691b ldr r3, [r3, #16] + 8001c1a: 021b lsls r3, r3, #8 + 8001c1c: 492a ldr r1, [pc, #168] @ (8001cc8 ) + 8001c1e: 4313 orrs r3, r2 + 8001c20: 604b str r3, [r1, #4] + 8001c22: e015 b.n 8001c50 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8001c24: 4b29 ldr r3, [pc, #164] @ (8001ccc ) + 8001c26: 2200 movs r2, #0 + 8001c28: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001c2a: f7ff fc39 bl 80014a0 + 8001c2e: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001c30: e008 b.n 8001c44 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001c32: f7ff fc35 bl 80014a0 + 8001c36: 4602 mov r2, r0 + 8001c38: 693b ldr r3, [r7, #16] + 8001c3a: 1ad3 subs r3, r2, r3 + 8001c3c: 2b02 cmp r3, #2 + 8001c3e: d901 bls.n 8001c44 + { + return HAL_TIMEOUT; + 8001c40: 2303 movs r3, #3 + 8001c42: e236 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001c44: 4b20 ldr r3, [pc, #128] @ (8001cc8 ) + 8001c46: 681b ldr r3, [r3, #0] + 8001c48: f003 0302 and.w r3, r3, #2 + 8001c4c: 2b00 cmp r3, #0 + 8001c4e: d1f0 bne.n 8001c32 + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 8001c50: 687b ldr r3, [r7, #4] + 8001c52: 681b ldr r3, [r3, #0] + 8001c54: f003 0310 and.w r3, r3, #16 + 8001c58: 2b00 cmp r3, #0 + 8001c5a: f000 80b8 beq.w 8001dce + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 8001c5e: 69bb ldr r3, [r7, #24] + 8001c60: 2b00 cmp r3, #0 + 8001c62: d170 bne.n 8001d46 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 8001c64: 4b18 ldr r3, [pc, #96] @ (8001cc8 ) + 8001c66: 681b ldr r3, [r3, #0] + 8001c68: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001c6c: 2b00 cmp r3, #0 + 8001c6e: d005 beq.n 8001c7c + 8001c70: 687b ldr r3, [r7, #4] + 8001c72: 699b ldr r3, [r3, #24] + 8001c74: 2b00 cmp r3, #0 + 8001c76: d101 bne.n 8001c7c + { + return HAL_ERROR; + 8001c78: 2301 movs r3, #1 + 8001c7a: e21a b.n 80020b2 + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 8001c7c: 687b ldr r3, [r7, #4] + 8001c7e: 6a1a ldr r2, [r3, #32] + 8001c80: 4b11 ldr r3, [pc, #68] @ (8001cc8 ) + 8001c82: 685b ldr r3, [r3, #4] + 8001c84: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 8001c88: 429a cmp r2, r3 + 8001c8a: d921 bls.n 8001cd0 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001c8c: 687b ldr r3, [r7, #4] + 8001c8e: 6a1b ldr r3, [r3, #32] + 8001c90: 4618 mov r0, r3 + 8001c92: f000 fc09 bl 80024a8 + 8001c96: 4603 mov r3, r0 + 8001c98: 2b00 cmp r3, #0 + 8001c9a: d001 beq.n 8001ca0 + { + return HAL_ERROR; + 8001c9c: 2301 movs r3, #1 + 8001c9e: e208 b.n 80020b2 + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001ca0: 4b09 ldr r3, [pc, #36] @ (8001cc8 ) + 8001ca2: 685b ldr r3, [r3, #4] + 8001ca4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001ca8: 687b ldr r3, [r7, #4] + 8001caa: 6a1b ldr r3, [r3, #32] + 8001cac: 4906 ldr r1, [pc, #24] @ (8001cc8 ) + 8001cae: 4313 orrs r3, r2 + 8001cb0: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001cb2: 4b05 ldr r3, [pc, #20] @ (8001cc8 ) + 8001cb4: 685b ldr r3, [r3, #4] + 8001cb6: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001cba: 687b ldr r3, [r7, #4] + 8001cbc: 69db ldr r3, [r3, #28] + 8001cbe: 061b lsls r3, r3, #24 + 8001cc0: 4901 ldr r1, [pc, #4] @ (8001cc8 ) + 8001cc2: 4313 orrs r3, r2 + 8001cc4: 604b str r3, [r1, #4] + 8001cc6: e020 b.n 8001d0a + 8001cc8: 40023800 .word 0x40023800 + 8001ccc: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001cd0: 4b99 ldr r3, [pc, #612] @ (8001f38 ) + 8001cd2: 685b ldr r3, [r3, #4] + 8001cd4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001cd8: 687b ldr r3, [r7, #4] + 8001cda: 6a1b ldr r3, [r3, #32] + 8001cdc: 4996 ldr r1, [pc, #600] @ (8001f38 ) + 8001cde: 4313 orrs r3, r2 + 8001ce0: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001ce2: 4b95 ldr r3, [pc, #596] @ (8001f38 ) + 8001ce4: 685b ldr r3, [r3, #4] + 8001ce6: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001cea: 687b ldr r3, [r7, #4] + 8001cec: 69db ldr r3, [r3, #28] + 8001cee: 061b lsls r3, r3, #24 + 8001cf0: 4991 ldr r1, [pc, #580] @ (8001f38 ) + 8001cf2: 4313 orrs r3, r2 + 8001cf4: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001cf6: 687b ldr r3, [r7, #4] + 8001cf8: 6a1b ldr r3, [r3, #32] + 8001cfa: 4618 mov r0, r3 + 8001cfc: f000 fbd4 bl 80024a8 + 8001d00: 4603 mov r3, r0 + 8001d02: 2b00 cmp r3, #0 + 8001d04: d001 beq.n 8001d0a + { + return HAL_ERROR; + 8001d06: 2301 movs r3, #1 + 8001d08: e1d3 b.n 80020b2 + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001d0a: 687b ldr r3, [r7, #4] + 8001d0c: 6a1b ldr r3, [r3, #32] + 8001d0e: 0b5b lsrs r3, r3, #13 + 8001d10: 3301 adds r3, #1 + 8001d12: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001d16: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8001d1a: 4a87 ldr r2, [pc, #540] @ (8001f38 ) + 8001d1c: 6892 ldr r2, [r2, #8] + 8001d1e: 0912 lsrs r2, r2, #4 + 8001d20: f002 020f and.w r2, r2, #15 + 8001d24: 4985 ldr r1, [pc, #532] @ (8001f3c ) + 8001d26: 5c8a ldrb r2, [r1, r2] + 8001d28: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001d2a: 4a85 ldr r2, [pc, #532] @ (8001f40 ) + 8001d2c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001d2e: 4b85 ldr r3, [pc, #532] @ (8001f44 ) + 8001d30: 681b ldr r3, [r3, #0] + 8001d32: 4618 mov r0, r3 + 8001d34: f7ff fb68 bl 8001408 + 8001d38: 4603 mov r3, r0 + 8001d3a: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 8001d3c: 7bfb ldrb r3, [r7, #15] + 8001d3e: 2b00 cmp r3, #0 + 8001d40: d045 beq.n 8001dce + { + return status; + 8001d42: 7bfb ldrb r3, [r7, #15] + 8001d44: e1b5 b.n 80020b2 + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8001d46: 687b ldr r3, [r7, #4] + 8001d48: 699b ldr r3, [r3, #24] + 8001d4a: 2b00 cmp r3, #0 + 8001d4c: d029 beq.n 8001da2 + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 8001d4e: 4b7e ldr r3, [pc, #504] @ (8001f48 ) + 8001d50: 2201 movs r2, #1 + 8001d52: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001d54: f7ff fba4 bl 80014a0 + 8001d58: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001d5a: e008 b.n 8001d6e + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001d5c: f7ff fba0 bl 80014a0 + 8001d60: 4602 mov r2, r0 + 8001d62: 693b ldr r3, [r7, #16] + 8001d64: 1ad3 subs r3, r2, r3 + 8001d66: 2b02 cmp r3, #2 + 8001d68: d901 bls.n 8001d6e + { + return HAL_TIMEOUT; + 8001d6a: 2303 movs r3, #3 + 8001d6c: e1a1 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001d6e: 4b72 ldr r3, [pc, #456] @ (8001f38 ) + 8001d70: 681b ldr r3, [r3, #0] + 8001d72: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001d76: 2b00 cmp r3, #0 + 8001d78: d0f0 beq.n 8001d5c + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001d7a: 4b6f ldr r3, [pc, #444] @ (8001f38 ) + 8001d7c: 685b ldr r3, [r3, #4] + 8001d7e: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001d82: 687b ldr r3, [r7, #4] + 8001d84: 6a1b ldr r3, [r3, #32] + 8001d86: 496c ldr r1, [pc, #432] @ (8001f38 ) + 8001d88: 4313 orrs r3, r2 + 8001d8a: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001d8c: 4b6a ldr r3, [pc, #424] @ (8001f38 ) + 8001d8e: 685b ldr r3, [r3, #4] + 8001d90: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001d94: 687b ldr r3, [r7, #4] + 8001d96: 69db ldr r3, [r3, #28] + 8001d98: 061b lsls r3, r3, #24 + 8001d9a: 4967 ldr r1, [pc, #412] @ (8001f38 ) + 8001d9c: 4313 orrs r3, r2 + 8001d9e: 604b str r3, [r1, #4] + 8001da0: e015 b.n 8001dce + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 8001da2: 4b69 ldr r3, [pc, #420] @ (8001f48 ) + 8001da4: 2200 movs r2, #0 + 8001da6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001da8: f7ff fb7a bl 80014a0 + 8001dac: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 8001dae: e008 b.n 8001dc2 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001db0: f7ff fb76 bl 80014a0 + 8001db4: 4602 mov r2, r0 + 8001db6: 693b ldr r3, [r7, #16] + 8001db8: 1ad3 subs r3, r2, r3 + 8001dba: 2b02 cmp r3, #2 + 8001dbc: d901 bls.n 8001dc2 + { + return HAL_TIMEOUT; + 8001dbe: 2303 movs r3, #3 + 8001dc0: e177 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 8001dc2: 4b5d ldr r3, [pc, #372] @ (8001f38 ) + 8001dc4: 681b ldr r3, [r3, #0] + 8001dc6: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001dca: 2b00 cmp r3, #0 + 8001dcc: d1f0 bne.n 8001db0 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 8001dce: 687b ldr r3, [r7, #4] + 8001dd0: 681b ldr r3, [r3, #0] + 8001dd2: f003 0308 and.w r3, r3, #8 + 8001dd6: 2b00 cmp r3, #0 + 8001dd8: d030 beq.n 8001e3c + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8001dda: 687b ldr r3, [r7, #4] + 8001ddc: 695b ldr r3, [r3, #20] + 8001dde: 2b00 cmp r3, #0 + 8001de0: d016 beq.n 8001e10 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8001de2: 4b5a ldr r3, [pc, #360] @ (8001f4c ) + 8001de4: 2201 movs r2, #1 + 8001de6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001de8: f7ff fb5a bl 80014a0 + 8001dec: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001dee: e008 b.n 8001e02 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001df0: f7ff fb56 bl 80014a0 + 8001df4: 4602 mov r2, r0 + 8001df6: 693b ldr r3, [r7, #16] + 8001df8: 1ad3 subs r3, r2, r3 + 8001dfa: 2b02 cmp r3, #2 + 8001dfc: d901 bls.n 8001e02 + { + return HAL_TIMEOUT; + 8001dfe: 2303 movs r3, #3 + 8001e00: e157 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001e02: 4b4d ldr r3, [pc, #308] @ (8001f38 ) + 8001e04: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001e06: f003 0302 and.w r3, r3, #2 + 8001e0a: 2b00 cmp r3, #0 + 8001e0c: d0f0 beq.n 8001df0 + 8001e0e: e015 b.n 8001e3c + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001e10: 4b4e ldr r3, [pc, #312] @ (8001f4c ) + 8001e12: 2200 movs r2, #0 + 8001e14: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001e16: f7ff fb43 bl 80014a0 + 8001e1a: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001e1c: e008 b.n 8001e30 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001e1e: f7ff fb3f bl 80014a0 + 8001e22: 4602 mov r2, r0 + 8001e24: 693b ldr r3, [r7, #16] + 8001e26: 1ad3 subs r3, r2, r3 + 8001e28: 2b02 cmp r3, #2 + 8001e2a: d901 bls.n 8001e30 + { + return HAL_TIMEOUT; + 8001e2c: 2303 movs r3, #3 + 8001e2e: e140 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001e30: 4b41 ldr r3, [pc, #260] @ (8001f38 ) + 8001e32: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001e34: f003 0302 and.w r3, r3, #2 + 8001e38: 2b00 cmp r3, #0 + 8001e3a: d1f0 bne.n 8001e1e + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 8001e3c: 687b ldr r3, [r7, #4] + 8001e3e: 681b ldr r3, [r3, #0] + 8001e40: f003 0304 and.w r3, r3, #4 + 8001e44: 2b00 cmp r3, #0 + 8001e46: f000 80b5 beq.w 8001fb4 + { + FlagStatus pwrclkchanged = RESET; + 8001e4a: 2300 movs r3, #0 + 8001e4c: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 8001e4e: 4b3a ldr r3, [pc, #232] @ (8001f38 ) + 8001e50: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e52: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001e56: 2b00 cmp r3, #0 + 8001e58: d10d bne.n 8001e76 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001e5a: 4b37 ldr r3, [pc, #220] @ (8001f38 ) + 8001e5c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e5e: 4a36 ldr r2, [pc, #216] @ (8001f38 ) + 8001e60: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001e64: 6253 str r3, [r2, #36] @ 0x24 + 8001e66: 4b34 ldr r3, [pc, #208] @ (8001f38 ) + 8001e68: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e6a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001e6e: 60bb str r3, [r7, #8] + 8001e70: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8001e72: 2301 movs r3, #1 + 8001e74: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001e76: 4b36 ldr r3, [pc, #216] @ (8001f50 ) + 8001e78: 681b ldr r3, [r3, #0] + 8001e7a: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001e7e: 2b00 cmp r3, #0 + 8001e80: d118 bne.n 8001eb4 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8001e82: 4b33 ldr r3, [pc, #204] @ (8001f50 ) + 8001e84: 681b ldr r3, [r3, #0] + 8001e86: 4a32 ldr r2, [pc, #200] @ (8001f50 ) + 8001e88: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001e8c: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8001e8e: f7ff fb07 bl 80014a0 + 8001e92: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001e94: e008 b.n 8001ea8 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8001e96: f7ff fb03 bl 80014a0 + 8001e9a: 4602 mov r2, r0 + 8001e9c: 693b ldr r3, [r7, #16] + 8001e9e: 1ad3 subs r3, r2, r3 + 8001ea0: 2b64 cmp r3, #100 @ 0x64 + 8001ea2: d901 bls.n 8001ea8 + { + return HAL_TIMEOUT; + 8001ea4: 2303 movs r3, #3 + 8001ea6: e104 b.n 80020b2 + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001ea8: 4b29 ldr r3, [pc, #164] @ (8001f50 ) + 8001eaa: 681b ldr r3, [r3, #0] + 8001eac: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001eb0: 2b00 cmp r3, #0 + 8001eb2: d0f0 beq.n 8001e96 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8001eb4: 687b ldr r3, [r7, #4] + 8001eb6: 689b ldr r3, [r3, #8] + 8001eb8: 2b01 cmp r3, #1 + 8001eba: d106 bne.n 8001eca + 8001ebc: 4b1e ldr r3, [pc, #120] @ (8001f38 ) + 8001ebe: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001ec0: 4a1d ldr r2, [pc, #116] @ (8001f38 ) + 8001ec2: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001ec6: 6353 str r3, [r2, #52] @ 0x34 + 8001ec8: e02d b.n 8001f26 + 8001eca: 687b ldr r3, [r7, #4] + 8001ecc: 689b ldr r3, [r3, #8] + 8001ece: 2b00 cmp r3, #0 + 8001ed0: d10c bne.n 8001eec + 8001ed2: 4b19 ldr r3, [pc, #100] @ (8001f38 ) + 8001ed4: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001ed6: 4a18 ldr r2, [pc, #96] @ (8001f38 ) + 8001ed8: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001edc: 6353 str r3, [r2, #52] @ 0x34 + 8001ede: 4b16 ldr r3, [pc, #88] @ (8001f38 ) + 8001ee0: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001ee2: 4a15 ldr r2, [pc, #84] @ (8001f38 ) + 8001ee4: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001ee8: 6353 str r3, [r2, #52] @ 0x34 + 8001eea: e01c b.n 8001f26 + 8001eec: 687b ldr r3, [r7, #4] + 8001eee: 689b ldr r3, [r3, #8] + 8001ef0: 2b05 cmp r3, #5 + 8001ef2: d10c bne.n 8001f0e + 8001ef4: 4b10 ldr r3, [pc, #64] @ (8001f38 ) + 8001ef6: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001ef8: 4a0f ldr r2, [pc, #60] @ (8001f38 ) + 8001efa: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8001efe: 6353 str r3, [r2, #52] @ 0x34 + 8001f00: 4b0d ldr r3, [pc, #52] @ (8001f38 ) + 8001f02: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001f04: 4a0c ldr r2, [pc, #48] @ (8001f38 ) + 8001f06: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001f0a: 6353 str r3, [r2, #52] @ 0x34 + 8001f0c: e00b b.n 8001f26 + 8001f0e: 4b0a ldr r3, [pc, #40] @ (8001f38 ) + 8001f10: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001f12: 4a09 ldr r2, [pc, #36] @ (8001f38 ) + 8001f14: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001f18: 6353 str r3, [r2, #52] @ 0x34 + 8001f1a: 4b07 ldr r3, [pc, #28] @ (8001f38 ) + 8001f1c: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001f1e: 4a06 ldr r2, [pc, #24] @ (8001f38 ) + 8001f20: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001f24: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8001f26: 687b ldr r3, [r7, #4] + 8001f28: 689b ldr r3, [r3, #8] + 8001f2a: 2b00 cmp r3, #0 + 8001f2c: d024 beq.n 8001f78 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001f2e: f7ff fab7 bl 80014a0 + 8001f32: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001f34: e019 b.n 8001f6a + 8001f36: bf00 nop + 8001f38: 40023800 .word 0x40023800 + 8001f3c: 08003814 .word 0x08003814 + 8001f40: 20000004 .word 0x20000004 + 8001f44: 20000008 .word 0x20000008 + 8001f48: 42470020 .word 0x42470020 + 8001f4c: 42470680 .word 0x42470680 + 8001f50: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001f54: f7ff faa4 bl 80014a0 + 8001f58: 4602 mov r2, r0 + 8001f5a: 693b ldr r3, [r7, #16] + 8001f5c: 1ad3 subs r3, r2, r3 + 8001f5e: f241 3288 movw r2, #5000 @ 0x1388 + 8001f62: 4293 cmp r3, r2 + 8001f64: d901 bls.n 8001f6a + { + return HAL_TIMEOUT; + 8001f66: 2303 movs r3, #3 + 8001f68: e0a3 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001f6a: 4b54 ldr r3, [pc, #336] @ (80020bc ) + 8001f6c: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001f6e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001f72: 2b00 cmp r3, #0 + 8001f74: d0ee beq.n 8001f54 + 8001f76: e014 b.n 8001fa2 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001f78: f7ff fa92 bl 80014a0 + 8001f7c: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 8001f7e: e00a b.n 8001f96 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001f80: f7ff fa8e bl 80014a0 + 8001f84: 4602 mov r2, r0 + 8001f86: 693b ldr r3, [r7, #16] + 8001f88: 1ad3 subs r3, r2, r3 + 8001f8a: f241 3288 movw r2, #5000 @ 0x1388 + 8001f8e: 4293 cmp r3, r2 + 8001f90: d901 bls.n 8001f96 + { + return HAL_TIMEOUT; + 8001f92: 2303 movs r3, #3 + 8001f94: e08d b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 8001f96: 4b49 ldr r3, [pc, #292] @ (80020bc ) + 8001f98: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001f9a: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001f9e: 2b00 cmp r3, #0 + 8001fa0: d1ee bne.n 8001f80 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 8001fa2: 7ffb ldrb r3, [r7, #31] + 8001fa4: 2b01 cmp r3, #1 + 8001fa6: d105 bne.n 8001fb4 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8001fa8: 4b44 ldr r3, [pc, #272] @ (80020bc ) + 8001faa: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001fac: 4a43 ldr r2, [pc, #268] @ (80020bc ) + 8001fae: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001fb2: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 8001fb4: 687b ldr r3, [r7, #4] + 8001fb6: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001fb8: 2b00 cmp r3, #0 + 8001fba: d079 beq.n 80020b0 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001fbc: 69bb ldr r3, [r7, #24] + 8001fbe: 2b0c cmp r3, #12 + 8001fc0: d056 beq.n 8002070 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 8001fc2: 687b ldr r3, [r7, #4] + 8001fc4: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001fc6: 2b02 cmp r3, #2 + 8001fc8: d13b bne.n 8002042 + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001fca: 4b3d ldr r3, [pc, #244] @ (80020c0 ) + 8001fcc: 2200 movs r2, #0 + 8001fce: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001fd0: f7ff fa66 bl 80014a0 + 8001fd4: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001fd6: e008 b.n 8001fea + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001fd8: f7ff fa62 bl 80014a0 + 8001fdc: 4602 mov r2, r0 + 8001fde: 693b ldr r3, [r7, #16] + 8001fe0: 1ad3 subs r3, r2, r3 + 8001fe2: 2b02 cmp r3, #2 + 8001fe4: d901 bls.n 8001fea + { + return HAL_TIMEOUT; + 8001fe6: 2303 movs r3, #3 + 8001fe8: e063 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001fea: 4b34 ldr r3, [pc, #208] @ (80020bc ) + 8001fec: 681b ldr r3, [r3, #0] + 8001fee: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001ff2: 2b00 cmp r3, #0 + 8001ff4: d1f0 bne.n 8001fd8 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8001ff6: 4b31 ldr r3, [pc, #196] @ (80020bc ) + 8001ff8: 689b ldr r3, [r3, #8] + 8001ffa: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 8001ffe: 687b ldr r3, [r7, #4] + 8002000: 6a99 ldr r1, [r3, #40] @ 0x28 + 8002002: 687b ldr r3, [r7, #4] + 8002004: 6adb ldr r3, [r3, #44] @ 0x2c + 8002006: 4319 orrs r1, r3 + 8002008: 687b ldr r3, [r7, #4] + 800200a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800200c: 430b orrs r3, r1 + 800200e: 492b ldr r1, [pc, #172] @ (80020bc ) + 8002010: 4313 orrs r3, r2 + 8002012: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8002014: 4b2a ldr r3, [pc, #168] @ (80020c0 ) + 8002016: 2201 movs r2, #1 + 8002018: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800201a: f7ff fa41 bl 80014a0 + 800201e: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8002020: e008 b.n 8002034 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8002022: f7ff fa3d bl 80014a0 + 8002026: 4602 mov r2, r0 + 8002028: 693b ldr r3, [r7, #16] + 800202a: 1ad3 subs r3, r2, r3 + 800202c: 2b02 cmp r3, #2 + 800202e: d901 bls.n 8002034 + { + return HAL_TIMEOUT; + 8002030: 2303 movs r3, #3 + 8002032: e03e b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8002034: 4b21 ldr r3, [pc, #132] @ (80020bc ) + 8002036: 681b ldr r3, [r3, #0] + 8002038: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800203c: 2b00 cmp r3, #0 + 800203e: d0f0 beq.n 8002022 + 8002040: e036 b.n 80020b0 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8002042: 4b1f ldr r3, [pc, #124] @ (80020c0 ) + 8002044: 2200 movs r2, #0 + 8002046: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002048: f7ff fa2a bl 80014a0 + 800204c: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800204e: e008 b.n 8002062 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8002050: f7ff fa26 bl 80014a0 + 8002054: 4602 mov r2, r0 + 8002056: 693b ldr r3, [r7, #16] + 8002058: 1ad3 subs r3, r2, r3 + 800205a: 2b02 cmp r3, #2 + 800205c: d901 bls.n 8002062 + { + return HAL_TIMEOUT; + 800205e: 2303 movs r3, #3 + 8002060: e027 b.n 80020b2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8002062: 4b16 ldr r3, [pc, #88] @ (80020bc ) + 8002064: 681b ldr r3, [r3, #0] + 8002066: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800206a: 2b00 cmp r3, #0 + 800206c: d1f0 bne.n 8002050 + 800206e: e01f b.n 80020b0 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8002070: 687b ldr r3, [r7, #4] + 8002072: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002074: 2b01 cmp r3, #1 + 8002076: d101 bne.n 800207c + { + return HAL_ERROR; + 8002078: 2301 movs r3, #1 + 800207a: e01a b.n 80020b2 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 800207c: 4b0f ldr r3, [pc, #60] @ (80020bc ) + 800207e: 689b ldr r3, [r3, #8] + 8002080: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8002082: 697b ldr r3, [r7, #20] + 8002084: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8002088: 687b ldr r3, [r7, #4] + 800208a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800208c: 429a cmp r2, r3 + 800208e: d10d bne.n 80020ac + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8002090: 697b ldr r3, [r7, #20] + 8002092: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8002096: 687b ldr r3, [r7, #4] + 8002098: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 800209a: 429a cmp r2, r3 + 800209c: d106 bne.n 80020ac + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 800209e: 697b ldr r3, [r7, #20] + 80020a0: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 80020a4: 687b ldr r3, [r7, #4] + 80020a6: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80020a8: 429a cmp r2, r3 + 80020aa: d001 beq.n 80020b0 + { + return HAL_ERROR; + 80020ac: 2301 movs r3, #1 + 80020ae: e000 b.n 80020b2 + } + } + } + } + + return HAL_OK; + 80020b0: 2300 movs r3, #0 +} + 80020b2: 4618 mov r0, r3 + 80020b4: 3720 adds r7, #32 + 80020b6: 46bd mov sp, r7 + 80020b8: bd80 pop {r7, pc} + 80020ba: bf00 nop + 80020bc: 40023800 .word 0x40023800 + 80020c0: 42470060 .word 0x42470060 + +080020c4 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 80020c4: b580 push {r7, lr} + 80020c6: b084 sub sp, #16 + 80020c8: af00 add r7, sp, #0 + 80020ca: 6078 str r0, [r7, #4] + 80020cc: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 80020ce: 687b ldr r3, [r7, #4] + 80020d0: 2b00 cmp r3, #0 + 80020d2: d101 bne.n 80020d8 + { + return HAL_ERROR; + 80020d4: 2301 movs r3, #1 + 80020d6: e11a b.n 800230e + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 80020d8: 4b8f ldr r3, [pc, #572] @ (8002318 ) + 80020da: 681b ldr r3, [r3, #0] + 80020dc: f003 0301 and.w r3, r3, #1 + 80020e0: 683a ldr r2, [r7, #0] + 80020e2: 429a cmp r2, r3 + 80020e4: d919 bls.n 800211a + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80020e6: 683b ldr r3, [r7, #0] + 80020e8: 2b01 cmp r3, #1 + 80020ea: d105 bne.n 80020f8 + 80020ec: 4b8a ldr r3, [pc, #552] @ (8002318 ) + 80020ee: 681b ldr r3, [r3, #0] + 80020f0: 4a89 ldr r2, [pc, #548] @ (8002318 ) + 80020f2: f043 0304 orr.w r3, r3, #4 + 80020f6: 6013 str r3, [r2, #0] + 80020f8: 4b87 ldr r3, [pc, #540] @ (8002318 ) + 80020fa: 681b ldr r3, [r3, #0] + 80020fc: f023 0201 bic.w r2, r3, #1 + 8002100: 4985 ldr r1, [pc, #532] @ (8002318 ) + 8002102: 683b ldr r3, [r7, #0] + 8002104: 4313 orrs r3, r2 + 8002106: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8002108: 4b83 ldr r3, [pc, #524] @ (8002318 ) + 800210a: 681b ldr r3, [r3, #0] + 800210c: f003 0301 and.w r3, r3, #1 + 8002110: 683a ldr r2, [r7, #0] + 8002112: 429a cmp r2, r3 + 8002114: d001 beq.n 800211a + { + return HAL_ERROR; + 8002116: 2301 movs r3, #1 + 8002118: e0f9 b.n 800230e + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 800211a: 687b ldr r3, [r7, #4] + 800211c: 681b ldr r3, [r3, #0] + 800211e: f003 0302 and.w r3, r3, #2 + 8002122: 2b00 cmp r3, #0 + 8002124: d008 beq.n 8002138 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8002126: 4b7d ldr r3, [pc, #500] @ (800231c ) + 8002128: 689b ldr r3, [r3, #8] + 800212a: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 800212e: 687b ldr r3, [r7, #4] + 8002130: 689b ldr r3, [r3, #8] + 8002132: 497a ldr r1, [pc, #488] @ (800231c ) + 8002134: 4313 orrs r3, r2 + 8002136: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8002138: 687b ldr r3, [r7, #4] + 800213a: 681b ldr r3, [r3, #0] + 800213c: f003 0301 and.w r3, r3, #1 + 8002140: 2b00 cmp r3, #0 + 8002142: f000 808e beq.w 8002262 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8002146: 687b ldr r3, [r7, #4] + 8002148: 685b ldr r3, [r3, #4] + 800214a: 2b02 cmp r3, #2 + 800214c: d107 bne.n 800215e + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800214e: 4b73 ldr r3, [pc, #460] @ (800231c ) + 8002150: 681b ldr r3, [r3, #0] + 8002152: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8002156: 2b00 cmp r3, #0 + 8002158: d121 bne.n 800219e + { + return HAL_ERROR; + 800215a: 2301 movs r3, #1 + 800215c: e0d7 b.n 800230e + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 800215e: 687b ldr r3, [r7, #4] + 8002160: 685b ldr r3, [r3, #4] + 8002162: 2b03 cmp r3, #3 + 8002164: d107 bne.n 8002176 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8002166: 4b6d ldr r3, [pc, #436] @ (800231c ) + 8002168: 681b ldr r3, [r3, #0] + 800216a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800216e: 2b00 cmp r3, #0 + 8002170: d115 bne.n 800219e + { + return HAL_ERROR; + 8002172: 2301 movs r3, #1 + 8002174: e0cb b.n 800230e + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8002176: 687b ldr r3, [r7, #4] + 8002178: 685b ldr r3, [r3, #4] + 800217a: 2b01 cmp r3, #1 + 800217c: d107 bne.n 800218e + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800217e: 4b67 ldr r3, [pc, #412] @ (800231c ) + 8002180: 681b ldr r3, [r3, #0] + 8002182: f003 0302 and.w r3, r3, #2 + 8002186: 2b00 cmp r3, #0 + 8002188: d109 bne.n 800219e + { + return HAL_ERROR; + 800218a: 2301 movs r3, #1 + 800218c: e0bf b.n 800230e + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800218e: 4b63 ldr r3, [pc, #396] @ (800231c ) + 8002190: 681b ldr r3, [r3, #0] + 8002192: f403 7300 and.w r3, r3, #512 @ 0x200 + 8002196: 2b00 cmp r3, #0 + 8002198: d101 bne.n 800219e + { + return HAL_ERROR; + 800219a: 2301 movs r3, #1 + 800219c: e0b7 b.n 800230e + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 800219e: 4b5f ldr r3, [pc, #380] @ (800231c ) + 80021a0: 689b ldr r3, [r3, #8] + 80021a2: f023 0203 bic.w r2, r3, #3 + 80021a6: 687b ldr r3, [r7, #4] + 80021a8: 685b ldr r3, [r3, #4] + 80021aa: 495c ldr r1, [pc, #368] @ (800231c ) + 80021ac: 4313 orrs r3, r2 + 80021ae: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80021b0: f7ff f976 bl 80014a0 + 80021b4: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80021b6: 687b ldr r3, [r7, #4] + 80021b8: 685b ldr r3, [r3, #4] + 80021ba: 2b02 cmp r3, #2 + 80021bc: d112 bne.n 80021e4 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 80021be: e00a b.n 80021d6 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80021c0: f7ff f96e bl 80014a0 + 80021c4: 4602 mov r2, r0 + 80021c6: 68fb ldr r3, [r7, #12] + 80021c8: 1ad3 subs r3, r2, r3 + 80021ca: f241 3288 movw r2, #5000 @ 0x1388 + 80021ce: 4293 cmp r3, r2 + 80021d0: d901 bls.n 80021d6 + { + return HAL_TIMEOUT; + 80021d2: 2303 movs r3, #3 + 80021d4: e09b b.n 800230e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 80021d6: 4b51 ldr r3, [pc, #324] @ (800231c ) + 80021d8: 689b ldr r3, [r3, #8] + 80021da: f003 030c and.w r3, r3, #12 + 80021de: 2b08 cmp r3, #8 + 80021e0: d1ee bne.n 80021c0 + 80021e2: e03e b.n 8002262 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80021e4: 687b ldr r3, [r7, #4] + 80021e6: 685b ldr r3, [r3, #4] + 80021e8: 2b03 cmp r3, #3 + 80021ea: d112 bne.n 8002212 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80021ec: e00a b.n 8002204 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80021ee: f7ff f957 bl 80014a0 + 80021f2: 4602 mov r2, r0 + 80021f4: 68fb ldr r3, [r7, #12] + 80021f6: 1ad3 subs r3, r2, r3 + 80021f8: f241 3288 movw r2, #5000 @ 0x1388 + 80021fc: 4293 cmp r3, r2 + 80021fe: d901 bls.n 8002204 + { + return HAL_TIMEOUT; + 8002200: 2303 movs r3, #3 + 8002202: e084 b.n 800230e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8002204: 4b45 ldr r3, [pc, #276] @ (800231c ) + 8002206: 689b ldr r3, [r3, #8] + 8002208: f003 030c and.w r3, r3, #12 + 800220c: 2b0c cmp r3, #12 + 800220e: d1ee bne.n 80021ee + 8002210: e027 b.n 8002262 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8002212: 687b ldr r3, [r7, #4] + 8002214: 685b ldr r3, [r3, #4] + 8002216: 2b01 cmp r3, #1 + 8002218: d11d bne.n 8002256 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 800221a: e00a b.n 8002232 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 800221c: f7ff f940 bl 80014a0 + 8002220: 4602 mov r2, r0 + 8002222: 68fb ldr r3, [r7, #12] + 8002224: 1ad3 subs r3, r2, r3 + 8002226: f241 3288 movw r2, #5000 @ 0x1388 + 800222a: 4293 cmp r3, r2 + 800222c: d901 bls.n 8002232 + { + return HAL_TIMEOUT; + 800222e: 2303 movs r3, #3 + 8002230: e06d b.n 800230e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8002232: 4b3a ldr r3, [pc, #232] @ (800231c ) + 8002234: 689b ldr r3, [r3, #8] + 8002236: f003 030c and.w r3, r3, #12 + 800223a: 2b04 cmp r3, #4 + 800223c: d1ee bne.n 800221c + 800223e: e010 b.n 8002262 + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002240: f7ff f92e bl 80014a0 + 8002244: 4602 mov r2, r0 + 8002246: 68fb ldr r3, [r7, #12] + 8002248: 1ad3 subs r3, r2, r3 + 800224a: f241 3288 movw r2, #5000 @ 0x1388 + 800224e: 4293 cmp r3, r2 + 8002250: d901 bls.n 8002256 + { + return HAL_TIMEOUT; + 8002252: 2303 movs r3, #3 + 8002254: e05b b.n 800230e + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8002256: 4b31 ldr r3, [pc, #196] @ (800231c ) + 8002258: 689b ldr r3, [r3, #8] + 800225a: f003 030c and.w r3, r3, #12 + 800225e: 2b00 cmp r3, #0 + 8002260: d1ee bne.n 8002240 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8002262: 4b2d ldr r3, [pc, #180] @ (8002318 ) + 8002264: 681b ldr r3, [r3, #0] + 8002266: f003 0301 and.w r3, r3, #1 + 800226a: 683a ldr r2, [r7, #0] + 800226c: 429a cmp r2, r3 + 800226e: d219 bcs.n 80022a4 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8002270: 683b ldr r3, [r7, #0] + 8002272: 2b01 cmp r3, #1 + 8002274: d105 bne.n 8002282 + 8002276: 4b28 ldr r3, [pc, #160] @ (8002318 ) + 8002278: 681b ldr r3, [r3, #0] + 800227a: 4a27 ldr r2, [pc, #156] @ (8002318 ) + 800227c: f043 0304 orr.w r3, r3, #4 + 8002280: 6013 str r3, [r2, #0] + 8002282: 4b25 ldr r3, [pc, #148] @ (8002318 ) + 8002284: 681b ldr r3, [r3, #0] + 8002286: f023 0201 bic.w r2, r3, #1 + 800228a: 4923 ldr r1, [pc, #140] @ (8002318 ) + 800228c: 683b ldr r3, [r7, #0] + 800228e: 4313 orrs r3, r2 + 8002290: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8002292: 4b21 ldr r3, [pc, #132] @ (8002318 ) + 8002294: 681b ldr r3, [r3, #0] + 8002296: f003 0301 and.w r3, r3, #1 + 800229a: 683a ldr r2, [r7, #0] + 800229c: 429a cmp r2, r3 + 800229e: d001 beq.n 80022a4 + { + return HAL_ERROR; + 80022a0: 2301 movs r3, #1 + 80022a2: e034 b.n 800230e + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 80022a4: 687b ldr r3, [r7, #4] + 80022a6: 681b ldr r3, [r3, #0] + 80022a8: f003 0304 and.w r3, r3, #4 + 80022ac: 2b00 cmp r3, #0 + 80022ae: d008 beq.n 80022c2 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 80022b0: 4b1a ldr r3, [pc, #104] @ (800231c ) + 80022b2: 689b ldr r3, [r3, #8] + 80022b4: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 80022b8: 687b ldr r3, [r7, #4] + 80022ba: 68db ldr r3, [r3, #12] + 80022bc: 4917 ldr r1, [pc, #92] @ (800231c ) + 80022be: 4313 orrs r3, r2 + 80022c0: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 80022c2: 687b ldr r3, [r7, #4] + 80022c4: 681b ldr r3, [r3, #0] + 80022c6: f003 0308 and.w r3, r3, #8 + 80022ca: 2b00 cmp r3, #0 + 80022cc: d009 beq.n 80022e2 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 80022ce: 4b13 ldr r3, [pc, #76] @ (800231c ) + 80022d0: 689b ldr r3, [r3, #8] + 80022d2: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 80022d6: 687b ldr r3, [r7, #4] + 80022d8: 691b ldr r3, [r3, #16] + 80022da: 00db lsls r3, r3, #3 + 80022dc: 490f ldr r1, [pc, #60] @ (800231c ) + 80022de: 4313 orrs r3, r2 + 80022e0: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 80022e2: f000 f823 bl 800232c + 80022e6: 4602 mov r2, r0 + 80022e8: 4b0c ldr r3, [pc, #48] @ (800231c ) + 80022ea: 689b ldr r3, [r3, #8] + 80022ec: 091b lsrs r3, r3, #4 + 80022ee: f003 030f and.w r3, r3, #15 + 80022f2: 490b ldr r1, [pc, #44] @ (8002320 ) + 80022f4: 5ccb ldrb r3, [r1, r3] + 80022f6: fa22 f303 lsr.w r3, r2, r3 + 80022fa: 4a0a ldr r2, [pc, #40] @ (8002324 ) + 80022fc: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 80022fe: 4b0a ldr r3, [pc, #40] @ (8002328 ) + 8002300: 681b ldr r3, [r3, #0] + 8002302: 4618 mov r0, r3 + 8002304: f7ff f880 bl 8001408 + 8002308: 4603 mov r3, r0 + 800230a: 72fb strb r3, [r7, #11] + + return status; + 800230c: 7afb ldrb r3, [r7, #11] +} + 800230e: 4618 mov r0, r3 + 8002310: 3710 adds r7, #16 + 8002312: 46bd mov sp, r7 + 8002314: bd80 pop {r7, pc} + 8002316: bf00 nop + 8002318: 40023c00 .word 0x40023c00 + 800231c: 40023800 .word 0x40023800 + 8002320: 08003814 .word 0x08003814 + 8002324: 20000004 .word 0x20000004 + 8002328: 20000008 .word 0x20000008 + +0800232c : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 800232c: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8002330: b08e sub sp, #56 @ 0x38 + 8002332: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8002334: 4b58 ldr r3, [pc, #352] @ (8002498 ) + 8002336: 689b ldr r3, [r3, #8] + 8002338: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 800233a: 6afb ldr r3, [r7, #44] @ 0x2c + 800233c: f003 030c and.w r3, r3, #12 + 8002340: 2b0c cmp r3, #12 + 8002342: d00d beq.n 8002360 + 8002344: 2b0c cmp r3, #12 + 8002346: f200 8092 bhi.w 800246e + 800234a: 2b04 cmp r3, #4 + 800234c: d002 beq.n 8002354 + 800234e: 2b08 cmp r3, #8 + 8002350: d003 beq.n 800235a + 8002352: e08c b.n 800246e + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8002354: 4b51 ldr r3, [pc, #324] @ (800249c ) + 8002356: 633b str r3, [r7, #48] @ 0x30 + break; + 8002358: e097 b.n 800248a + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 800235a: 4b51 ldr r3, [pc, #324] @ (80024a0 ) + 800235c: 633b str r3, [r7, #48] @ 0x30 + break; + 800235e: e094 b.n 800248a + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8002360: 6afb ldr r3, [r7, #44] @ 0x2c + 8002362: 0c9b lsrs r3, r3, #18 + 8002364: f003 020f and.w r2, r3, #15 + 8002368: 4b4e ldr r3, [pc, #312] @ (80024a4 ) + 800236a: 5c9b ldrb r3, [r3, r2] + 800236c: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 800236e: 6afb ldr r3, [r7, #44] @ 0x2c + 8002370: 0d9b lsrs r3, r3, #22 + 8002372: f003 0303 and.w r3, r3, #3 + 8002376: 3301 adds r3, #1 + 8002378: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 800237a: 4b47 ldr r3, [pc, #284] @ (8002498 ) + 800237c: 689b ldr r3, [r3, #8] + 800237e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8002382: 2b00 cmp r3, #0 + 8002384: d021 beq.n 80023ca + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8002386: 6abb ldr r3, [r7, #40] @ 0x28 + 8002388: 2200 movs r2, #0 + 800238a: 61bb str r3, [r7, #24] + 800238c: 61fa str r2, [r7, #28] + 800238e: 4b44 ldr r3, [pc, #272] @ (80024a0 ) + 8002390: e9d7 8906 ldrd r8, r9, [r7, #24] + 8002394: 464a mov r2, r9 + 8002396: fb03 f202 mul.w r2, r3, r2 + 800239a: 2300 movs r3, #0 + 800239c: 4644 mov r4, r8 + 800239e: fb04 f303 mul.w r3, r4, r3 + 80023a2: 4413 add r3, r2 + 80023a4: 4a3e ldr r2, [pc, #248] @ (80024a0 ) + 80023a6: 4644 mov r4, r8 + 80023a8: fba4 0102 umull r0, r1, r4, r2 + 80023ac: 440b add r3, r1 + 80023ae: 4619 mov r1, r3 + 80023b0: 6a7b ldr r3, [r7, #36] @ 0x24 + 80023b2: 2200 movs r2, #0 + 80023b4: 613b str r3, [r7, #16] + 80023b6: 617a str r2, [r7, #20] + 80023b8: e9d7 2304 ldrd r2, r3, [r7, #16] + 80023bc: f7fe f9e6 bl 800078c <__aeabi_uldivmod> + 80023c0: 4602 mov r2, r0 + 80023c2: 460b mov r3, r1 + 80023c4: 4613 mov r3, r2 + 80023c6: 637b str r3, [r7, #52] @ 0x34 + 80023c8: e04e b.n 8002468 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 80023ca: 6abb ldr r3, [r7, #40] @ 0x28 + 80023cc: 2200 movs r2, #0 + 80023ce: 469a mov sl, r3 + 80023d0: 4693 mov fp, r2 + 80023d2: 4652 mov r2, sl + 80023d4: 465b mov r3, fp + 80023d6: f04f 0000 mov.w r0, #0 + 80023da: f04f 0100 mov.w r1, #0 + 80023de: 0159 lsls r1, r3, #5 + 80023e0: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 80023e4: 0150 lsls r0, r2, #5 + 80023e6: 4602 mov r2, r0 + 80023e8: 460b mov r3, r1 + 80023ea: ebb2 080a subs.w r8, r2, sl + 80023ee: eb63 090b sbc.w r9, r3, fp + 80023f2: f04f 0200 mov.w r2, #0 + 80023f6: f04f 0300 mov.w r3, #0 + 80023fa: ea4f 1389 mov.w r3, r9, lsl #6 + 80023fe: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8002402: ea4f 1288 mov.w r2, r8, lsl #6 + 8002406: ebb2 0408 subs.w r4, r2, r8 + 800240a: eb63 0509 sbc.w r5, r3, r9 + 800240e: f04f 0200 mov.w r2, #0 + 8002412: f04f 0300 mov.w r3, #0 + 8002416: 00eb lsls r3, r5, #3 + 8002418: ea43 7354 orr.w r3, r3, r4, lsr #29 + 800241c: 00e2 lsls r2, r4, #3 + 800241e: 4614 mov r4, r2 + 8002420: 461d mov r5, r3 + 8002422: eb14 030a adds.w r3, r4, sl + 8002426: 603b str r3, [r7, #0] + 8002428: eb45 030b adc.w r3, r5, fp + 800242c: 607b str r3, [r7, #4] + 800242e: f04f 0200 mov.w r2, #0 + 8002432: f04f 0300 mov.w r3, #0 + 8002436: e9d7 4500 ldrd r4, r5, [r7] + 800243a: 4629 mov r1, r5 + 800243c: 028b lsls r3, r1, #10 + 800243e: 4620 mov r0, r4 + 8002440: 4629 mov r1, r5 + 8002442: 4604 mov r4, r0 + 8002444: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8002448: 4601 mov r1, r0 + 800244a: 028a lsls r2, r1, #10 + 800244c: 4610 mov r0, r2 + 800244e: 4619 mov r1, r3 + 8002450: 6a7b ldr r3, [r7, #36] @ 0x24 + 8002452: 2200 movs r2, #0 + 8002454: 60bb str r3, [r7, #8] + 8002456: 60fa str r2, [r7, #12] + 8002458: e9d7 2302 ldrd r2, r3, [r7, #8] + 800245c: f7fe f996 bl 800078c <__aeabi_uldivmod> + 8002460: 4602 mov r2, r0 + 8002462: 460b mov r3, r1 + 8002464: 4613 mov r3, r2 + 8002466: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8002468: 6b7b ldr r3, [r7, #52] @ 0x34 + 800246a: 633b str r3, [r7, #48] @ 0x30 + break; + 800246c: e00d b.n 800248a + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 800246e: 4b0a ldr r3, [pc, #40] @ (8002498 ) + 8002470: 685b ldr r3, [r3, #4] + 8002472: 0b5b lsrs r3, r3, #13 + 8002474: f003 0307 and.w r3, r3, #7 + 8002478: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 800247a: 6a3b ldr r3, [r7, #32] + 800247c: 3301 adds r3, #1 + 800247e: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8002482: fa02 f303 lsl.w r3, r2, r3 + 8002486: 633b str r3, [r7, #48] @ 0x30 + break; + 8002488: bf00 nop + } + } + return sysclockfreq; + 800248a: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 800248c: 4618 mov r0, r3 + 800248e: 3738 adds r7, #56 @ 0x38 + 8002490: 46bd mov sp, r7 + 8002492: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8002496: bf00 nop + 8002498: 40023800 .word 0x40023800 + 800249c: 00f42400 .word 0x00f42400 + 80024a0: 016e3600 .word 0x016e3600 + 80024a4: 08003808 .word 0x08003808 + +080024a8 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 80024a8: b480 push {r7} + 80024aa: b087 sub sp, #28 + 80024ac: af00 add r7, sp, #0 + 80024ae: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 80024b0: 2300 movs r3, #0 + 80024b2: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 80024b4: 4b29 ldr r3, [pc, #164] @ (800255c ) + 80024b6: 689b ldr r3, [r3, #8] + 80024b8: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 80024bc: 2b00 cmp r3, #0 + 80024be: d12c bne.n 800251a + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 80024c0: 4b26 ldr r3, [pc, #152] @ (800255c ) + 80024c2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80024c4: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80024c8: 2b00 cmp r3, #0 + 80024ca: d005 beq.n 80024d8 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 80024cc: 4b24 ldr r3, [pc, #144] @ (8002560 ) + 80024ce: 681b ldr r3, [r3, #0] + 80024d0: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 80024d4: 617b str r3, [r7, #20] + 80024d6: e016 b.n 8002506 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80024d8: 4b20 ldr r3, [pc, #128] @ (800255c ) + 80024da: 6a5b ldr r3, [r3, #36] @ 0x24 + 80024dc: 4a1f ldr r2, [pc, #124] @ (800255c ) + 80024de: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80024e2: 6253 str r3, [r2, #36] @ 0x24 + 80024e4: 4b1d ldr r3, [pc, #116] @ (800255c ) + 80024e6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80024e8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80024ec: 60fb str r3, [r7, #12] + 80024ee: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 80024f0: 4b1b ldr r3, [pc, #108] @ (8002560 ) + 80024f2: 681b ldr r3, [r3, #0] + 80024f4: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 80024f8: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 80024fa: 4b18 ldr r3, [pc, #96] @ (800255c ) + 80024fc: 6a5b ldr r3, [r3, #36] @ 0x24 + 80024fe: 4a17 ldr r2, [pc, #92] @ (800255c ) + 8002500: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8002504: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8002506: 697b ldr r3, [r7, #20] + 8002508: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 800250c: d105 bne.n 800251a + 800250e: 687b ldr r3, [r7, #4] + 8002510: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8002514: d101 bne.n 800251a + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8002516: 2301 movs r3, #1 + 8002518: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 800251a: 693b ldr r3, [r7, #16] + 800251c: 2b01 cmp r3, #1 + 800251e: d105 bne.n 800252c + 8002520: 4b10 ldr r3, [pc, #64] @ (8002564 ) + 8002522: 681b ldr r3, [r3, #0] + 8002524: 4a0f ldr r2, [pc, #60] @ (8002564 ) + 8002526: f043 0304 orr.w r3, r3, #4 + 800252a: 6013 str r3, [r2, #0] + 800252c: 4b0d ldr r3, [pc, #52] @ (8002564 ) + 800252e: 681b ldr r3, [r3, #0] + 8002530: f023 0201 bic.w r2, r3, #1 + 8002534: 490b ldr r1, [pc, #44] @ (8002564 ) + 8002536: 693b ldr r3, [r7, #16] + 8002538: 4313 orrs r3, r2 + 800253a: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 800253c: 4b09 ldr r3, [pc, #36] @ (8002564 ) + 800253e: 681b ldr r3, [r3, #0] + 8002540: f003 0301 and.w r3, r3, #1 + 8002544: 693a ldr r2, [r7, #16] + 8002546: 429a cmp r2, r3 + 8002548: d001 beq.n 800254e + { + return HAL_ERROR; + 800254a: 2301 movs r3, #1 + 800254c: e000 b.n 8002550 + } + + return HAL_OK; + 800254e: 2300 movs r3, #0 +} + 8002550: 4618 mov r0, r3 + 8002552: 371c adds r7, #28 + 8002554: 46bd mov sp, r7 + 8002556: bc80 pop {r7} + 8002558: 4770 bx lr + 800255a: bf00 nop + 800255c: 40023800 .word 0x40023800 + 8002560: 40007000 .word 0x40007000 + 8002564: 40023c00 .word 0x40023c00 + +08002568 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8002568: b580 push {r7, lr} + 800256a: b082 sub sp, #8 + 800256c: af00 add r7, sp, #0 + 800256e: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8002570: 687b ldr r3, [r7, #4] + 8002572: 2b00 cmp r3, #0 + 8002574: d101 bne.n 800257a + { + return HAL_ERROR; + 8002576: 2301 movs r3, #1 + 8002578: e07b b.n 8002672 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 800257a: 687b ldr r3, [r7, #4] + 800257c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800257e: 2b00 cmp r3, #0 + 8002580: d108 bne.n 8002594 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8002582: 687b ldr r3, [r7, #4] + 8002584: 685b ldr r3, [r3, #4] + 8002586: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800258a: d009 beq.n 80025a0 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 800258c: 687b ldr r3, [r7, #4] + 800258e: 2200 movs r2, #0 + 8002590: 61da str r2, [r3, #28] + 8002592: e005 b.n 80025a0 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8002594: 687b ldr r3, [r7, #4] + 8002596: 2200 movs r2, #0 + 8002598: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 800259a: 687b ldr r3, [r7, #4] + 800259c: 2200 movs r2, #0 + 800259e: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 80025a0: 687b ldr r3, [r7, #4] + 80025a2: 2200 movs r2, #0 + 80025a4: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 80025a6: 687b ldr r3, [r7, #4] + 80025a8: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 80025ac: b2db uxtb r3, r3 + 80025ae: 2b00 cmp r3, #0 + 80025b0: d106 bne.n 80025c0 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 80025b2: 687b ldr r3, [r7, #4] + 80025b4: 2200 movs r2, #0 + 80025b6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 80025ba: 6878 ldr r0, [r7, #4] + 80025bc: f7fe fd28 bl 8001010 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 80025c0: 687b ldr r3, [r7, #4] + 80025c2: 2202 movs r2, #2 + 80025c4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80025c8: 687b ldr r3, [r7, #4] + 80025ca: 681b ldr r3, [r3, #0] + 80025cc: 681a ldr r2, [r3, #0] + 80025ce: 687b ldr r3, [r7, #4] + 80025d0: 681b ldr r3, [r3, #0] + 80025d2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80025d6: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 80025d8: 687b ldr r3, [r7, #4] + 80025da: 685b ldr r3, [r3, #4] + 80025dc: f403 7282 and.w r2, r3, #260 @ 0x104 + 80025e0: 687b ldr r3, [r7, #4] + 80025e2: 689b ldr r3, [r3, #8] + 80025e4: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 80025e8: 431a orrs r2, r3 + 80025ea: 687b ldr r3, [r7, #4] + 80025ec: 68db ldr r3, [r3, #12] + 80025ee: f403 6300 and.w r3, r3, #2048 @ 0x800 + 80025f2: 431a orrs r2, r3 + 80025f4: 687b ldr r3, [r7, #4] + 80025f6: 691b ldr r3, [r3, #16] + 80025f8: f003 0302 and.w r3, r3, #2 + 80025fc: 431a orrs r2, r3 + 80025fe: 687b ldr r3, [r7, #4] + 8002600: 695b ldr r3, [r3, #20] + 8002602: f003 0301 and.w r3, r3, #1 + 8002606: 431a orrs r2, r3 + 8002608: 687b ldr r3, [r7, #4] + 800260a: 699b ldr r3, [r3, #24] + 800260c: f403 7300 and.w r3, r3, #512 @ 0x200 + 8002610: 431a orrs r2, r3 + 8002612: 687b ldr r3, [r7, #4] + 8002614: 69db ldr r3, [r3, #28] + 8002616: f003 0338 and.w r3, r3, #56 @ 0x38 + 800261a: 431a orrs r2, r3 + 800261c: 687b ldr r3, [r7, #4] + 800261e: 6a1b ldr r3, [r3, #32] + 8002620: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002624: ea42 0103 orr.w r1, r2, r3 + 8002628: 687b ldr r3, [r7, #4] + 800262a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800262c: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8002630: 687b ldr r3, [r7, #4] + 8002632: 681b ldr r3, [r3, #0] + 8002634: 430a orrs r2, r1 + 8002636: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8002638: 687b ldr r3, [r7, #4] + 800263a: 699b ldr r3, [r3, #24] + 800263c: 0c1b lsrs r3, r3, #16 + 800263e: f003 0104 and.w r1, r3, #4 + 8002642: 687b ldr r3, [r7, #4] + 8002644: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002646: f003 0210 and.w r2, r3, #16 + 800264a: 687b ldr r3, [r7, #4] + 800264c: 681b ldr r3, [r3, #0] + 800264e: 430a orrs r2, r1 + 8002650: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8002652: 687b ldr r3, [r7, #4] + 8002654: 681b ldr r3, [r3, #0] + 8002656: 69da ldr r2, [r3, #28] + 8002658: 687b ldr r3, [r7, #4] + 800265a: 681b ldr r3, [r3, #0] + 800265c: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8002660: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8002662: 687b ldr r3, [r7, #4] + 8002664: 2200 movs r2, #0 + 8002666: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8002668: 687b ldr r3, [r7, #4] + 800266a: 2201 movs r2, #1 + 800266c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8002670: 2300 movs r3, #0 +} + 8002672: 4618 mov r0, r3 + 8002674: 3708 adds r7, #8 + 8002676: 46bd mov sp, r7 + 8002678: bd80 pop {r7, pc} + +0800267a : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 800267a: b580 push {r7, lr} + 800267c: b088 sub sp, #32 + 800267e: af00 add r7, sp, #0 + 8002680: 60f8 str r0, [r7, #12] + 8002682: 60b9 str r1, [r7, #8] + 8002684: 603b str r3, [r7, #0] + 8002686: 4613 mov r3, r2 + 8002688: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 800268a: f7fe ff09 bl 80014a0 + 800268e: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8002690: 88fb ldrh r3, [r7, #6] + 8002692: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8002694: 68fb ldr r3, [r7, #12] + 8002696: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 800269a: b2db uxtb r3, r3 + 800269c: 2b01 cmp r3, #1 + 800269e: d001 beq.n 80026a4 + { + return HAL_BUSY; + 80026a0: 2302 movs r3, #2 + 80026a2: e12a b.n 80028fa + } + + if ((pData == NULL) || (Size == 0U)) + 80026a4: 68bb ldr r3, [r7, #8] + 80026a6: 2b00 cmp r3, #0 + 80026a8: d002 beq.n 80026b0 + 80026aa: 88fb ldrh r3, [r7, #6] + 80026ac: 2b00 cmp r3, #0 + 80026ae: d101 bne.n 80026b4 + { + return HAL_ERROR; + 80026b0: 2301 movs r3, #1 + 80026b2: e122 b.n 80028fa + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 80026b4: 68fb ldr r3, [r7, #12] + 80026b6: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 80026ba: 2b01 cmp r3, #1 + 80026bc: d101 bne.n 80026c2 + 80026be: 2302 movs r3, #2 + 80026c0: e11b b.n 80028fa + 80026c2: 68fb ldr r3, [r7, #12] + 80026c4: 2201 movs r2, #1 + 80026c6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 80026ca: 68fb ldr r3, [r7, #12] + 80026cc: 2203 movs r2, #3 + 80026ce: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 80026d2: 68fb ldr r3, [r7, #12] + 80026d4: 2200 movs r2, #0 + 80026d6: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 80026d8: 68fb ldr r3, [r7, #12] + 80026da: 68ba ldr r2, [r7, #8] + 80026dc: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 80026de: 68fb ldr r3, [r7, #12] + 80026e0: 88fa ldrh r2, [r7, #6] + 80026e2: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 80026e4: 68fb ldr r3, [r7, #12] + 80026e6: 88fa ldrh r2, [r7, #6] + 80026e8: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 80026ea: 68fb ldr r3, [r7, #12] + 80026ec: 2200 movs r2, #0 + 80026ee: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 80026f0: 68fb ldr r3, [r7, #12] + 80026f2: 2200 movs r2, #0 + 80026f4: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 80026f6: 68fb ldr r3, [r7, #12] + 80026f8: 2200 movs r2, #0 + 80026fa: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 80026fc: 68fb ldr r3, [r7, #12] + 80026fe: 2200 movs r2, #0 + 8002700: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8002702: 68fb ldr r3, [r7, #12] + 8002704: 2200 movs r2, #0 + 8002706: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002708: 68fb ldr r3, [r7, #12] + 800270a: 689b ldr r3, [r3, #8] + 800270c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002710: d10f bne.n 8002732 + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8002712: 68fb ldr r3, [r7, #12] + 8002714: 681b ldr r3, [r3, #0] + 8002716: 681a ldr r2, [r3, #0] + 8002718: 68fb ldr r3, [r7, #12] + 800271a: 681b ldr r3, [r3, #0] + 800271c: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8002720: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8002722: 68fb ldr r3, [r7, #12] + 8002724: 681b ldr r3, [r3, #0] + 8002726: 681a ldr r2, [r3, #0] + 8002728: 68fb ldr r3, [r7, #12] + 800272a: 681b ldr r3, [r3, #0] + 800272c: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002730: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8002732: 68fb ldr r3, [r7, #12] + 8002734: 681b ldr r3, [r3, #0] + 8002736: 681b ldr r3, [r3, #0] + 8002738: f003 0340 and.w r3, r3, #64 @ 0x40 + 800273c: 2b40 cmp r3, #64 @ 0x40 + 800273e: d007 beq.n 8002750 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8002740: 68fb ldr r3, [r7, #12] + 8002742: 681b ldr r3, [r3, #0] + 8002744: 681a ldr r2, [r3, #0] + 8002746: 68fb ldr r3, [r7, #12] + 8002748: 681b ldr r3, [r3, #0] + 800274a: f042 0240 orr.w r2, r2, #64 @ 0x40 + 800274e: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8002750: 68fb ldr r3, [r7, #12] + 8002752: 68db ldr r3, [r3, #12] + 8002754: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8002758: d152 bne.n 8002800 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 800275a: 68fb ldr r3, [r7, #12] + 800275c: 685b ldr r3, [r3, #4] + 800275e: 2b00 cmp r3, #0 + 8002760: d002 beq.n 8002768 + 8002762: 8b7b ldrh r3, [r7, #26] + 8002764: 2b01 cmp r3, #1 + 8002766: d145 bne.n 80027f4 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8002768: 68fb ldr r3, [r7, #12] + 800276a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800276c: 881a ldrh r2, [r3, #0] + 800276e: 68fb ldr r3, [r7, #12] + 8002770: 681b ldr r3, [r3, #0] + 8002772: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8002774: 68fb ldr r3, [r7, #12] + 8002776: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002778: 1c9a adds r2, r3, #2 + 800277a: 68fb ldr r3, [r7, #12] + 800277c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800277e: 68fb ldr r3, [r7, #12] + 8002780: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002782: b29b uxth r3, r3 + 8002784: 3b01 subs r3, #1 + 8002786: b29a uxth r2, r3 + 8002788: 68fb ldr r3, [r7, #12] + 800278a: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 800278c: e032 b.n 80027f4 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 800278e: 68fb ldr r3, [r7, #12] + 8002790: 681b ldr r3, [r3, #0] + 8002792: 689b ldr r3, [r3, #8] + 8002794: f003 0302 and.w r3, r3, #2 + 8002798: 2b02 cmp r3, #2 + 800279a: d112 bne.n 80027c2 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 800279c: 68fb ldr r3, [r7, #12] + 800279e: 6b1b ldr r3, [r3, #48] @ 0x30 + 80027a0: 881a ldrh r2, [r3, #0] + 80027a2: 68fb ldr r3, [r7, #12] + 80027a4: 681b ldr r3, [r3, #0] + 80027a6: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80027a8: 68fb ldr r3, [r7, #12] + 80027aa: 6b1b ldr r3, [r3, #48] @ 0x30 + 80027ac: 1c9a adds r2, r3, #2 + 80027ae: 68fb ldr r3, [r7, #12] + 80027b0: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 80027b2: 68fb ldr r3, [r7, #12] + 80027b4: 8edb ldrh r3, [r3, #54] @ 0x36 + 80027b6: b29b uxth r3, r3 + 80027b8: 3b01 subs r3, #1 + 80027ba: b29a uxth r2, r3 + 80027bc: 68fb ldr r3, [r7, #12] + 80027be: 86da strh r2, [r3, #54] @ 0x36 + 80027c0: e018 b.n 80027f4 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 80027c2: f7fe fe6d bl 80014a0 + 80027c6: 4602 mov r2, r0 + 80027c8: 69fb ldr r3, [r7, #28] + 80027ca: 1ad3 subs r3, r2, r3 + 80027cc: 683a ldr r2, [r7, #0] + 80027ce: 429a cmp r2, r3 + 80027d0: d803 bhi.n 80027da + 80027d2: 683b ldr r3, [r7, #0] + 80027d4: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80027d8: d102 bne.n 80027e0 + 80027da: 683b ldr r3, [r7, #0] + 80027dc: 2b00 cmp r3, #0 + 80027de: d109 bne.n 80027f4 + { + hspi->State = HAL_SPI_STATE_READY; + 80027e0: 68fb ldr r3, [r7, #12] + 80027e2: 2201 movs r2, #1 + 80027e4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 80027e8: 68fb ldr r3, [r7, #12] + 80027ea: 2200 movs r2, #0 + 80027ec: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 80027f0: 2303 movs r3, #3 + 80027f2: e082 b.n 80028fa + while (hspi->TxXferCount > 0U) + 80027f4: 68fb ldr r3, [r7, #12] + 80027f6: 8edb ldrh r3, [r3, #54] @ 0x36 + 80027f8: b29b uxth r3, r3 + 80027fa: 2b00 cmp r3, #0 + 80027fc: d1c7 bne.n 800278e + 80027fe: e053 b.n 80028a8 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8002800: 68fb ldr r3, [r7, #12] + 8002802: 685b ldr r3, [r3, #4] + 8002804: 2b00 cmp r3, #0 + 8002806: d002 beq.n 800280e + 8002808: 8b7b ldrh r3, [r7, #26] + 800280a: 2b01 cmp r3, #1 + 800280c: d147 bne.n 800289e + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 800280e: 68fb ldr r3, [r7, #12] + 8002810: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002812: 68fb ldr r3, [r7, #12] + 8002814: 681b ldr r3, [r3, #0] + 8002816: 330c adds r3, #12 + 8002818: 7812 ldrb r2, [r2, #0] + 800281a: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800281c: 68fb ldr r3, [r7, #12] + 800281e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002820: 1c5a adds r2, r3, #1 + 8002822: 68fb ldr r3, [r7, #12] + 8002824: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002826: 68fb ldr r3, [r7, #12] + 8002828: 8edb ldrh r3, [r3, #54] @ 0x36 + 800282a: b29b uxth r3, r3 + 800282c: 3b01 subs r3, #1 + 800282e: b29a uxth r2, r3 + 8002830: 68fb ldr r3, [r7, #12] + 8002832: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8002834: e033 b.n 800289e + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8002836: 68fb ldr r3, [r7, #12] + 8002838: 681b ldr r3, [r3, #0] + 800283a: 689b ldr r3, [r3, #8] + 800283c: f003 0302 and.w r3, r3, #2 + 8002840: 2b02 cmp r3, #2 + 8002842: d113 bne.n 800286c + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8002844: 68fb ldr r3, [r7, #12] + 8002846: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002848: 68fb ldr r3, [r7, #12] + 800284a: 681b ldr r3, [r3, #0] + 800284c: 330c adds r3, #12 + 800284e: 7812 ldrb r2, [r2, #0] + 8002850: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8002852: 68fb ldr r3, [r7, #12] + 8002854: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002856: 1c5a adds r2, r3, #1 + 8002858: 68fb ldr r3, [r7, #12] + 800285a: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800285c: 68fb ldr r3, [r7, #12] + 800285e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002860: b29b uxth r3, r3 + 8002862: 3b01 subs r3, #1 + 8002864: b29a uxth r2, r3 + 8002866: 68fb ldr r3, [r7, #12] + 8002868: 86da strh r2, [r3, #54] @ 0x36 + 800286a: e018 b.n 800289e + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 800286c: f7fe fe18 bl 80014a0 + 8002870: 4602 mov r2, r0 + 8002872: 69fb ldr r3, [r7, #28] + 8002874: 1ad3 subs r3, r2, r3 + 8002876: 683a ldr r2, [r7, #0] + 8002878: 429a cmp r2, r3 + 800287a: d803 bhi.n 8002884 + 800287c: 683b ldr r3, [r7, #0] + 800287e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8002882: d102 bne.n 800288a + 8002884: 683b ldr r3, [r7, #0] + 8002886: 2b00 cmp r3, #0 + 8002888: d109 bne.n 800289e + { + hspi->State = HAL_SPI_STATE_READY; + 800288a: 68fb ldr r3, [r7, #12] + 800288c: 2201 movs r2, #1 + 800288e: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8002892: 68fb ldr r3, [r7, #12] + 8002894: 2200 movs r2, #0 + 8002896: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 800289a: 2303 movs r3, #3 + 800289c: e02d b.n 80028fa + while (hspi->TxXferCount > 0U) + 800289e: 68fb ldr r3, [r7, #12] + 80028a0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80028a2: b29b uxth r3, r3 + 80028a4: 2b00 cmp r3, #0 + 80028a6: d1c6 bne.n 8002836 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 80028a8: 69fa ldr r2, [r7, #28] + 80028aa: 6839 ldr r1, [r7, #0] + 80028ac: 68f8 ldr r0, [r7, #12] + 80028ae: f000 f8b1 bl 8002a14 + 80028b2: 4603 mov r3, r0 + 80028b4: 2b00 cmp r3, #0 + 80028b6: d002 beq.n 80028be + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80028b8: 68fb ldr r3, [r7, #12] + 80028ba: 2220 movs r2, #32 + 80028bc: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 80028be: 68fb ldr r3, [r7, #12] + 80028c0: 689b ldr r3, [r3, #8] + 80028c2: 2b00 cmp r3, #0 + 80028c4: d10a bne.n 80028dc + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 80028c6: 2300 movs r3, #0 + 80028c8: 617b str r3, [r7, #20] + 80028ca: 68fb ldr r3, [r7, #12] + 80028cc: 681b ldr r3, [r3, #0] + 80028ce: 68db ldr r3, [r3, #12] + 80028d0: 617b str r3, [r7, #20] + 80028d2: 68fb ldr r3, [r7, #12] + 80028d4: 681b ldr r3, [r3, #0] + 80028d6: 689b ldr r3, [r3, #8] + 80028d8: 617b str r3, [r7, #20] + 80028da: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 80028dc: 68fb ldr r3, [r7, #12] + 80028de: 2201 movs r2, #1 + 80028e0: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80028e4: 68fb ldr r3, [r7, #12] + 80028e6: 2200 movs r2, #0 + 80028e8: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 80028ec: 68fb ldr r3, [r7, #12] + 80028ee: 6d5b ldr r3, [r3, #84] @ 0x54 + 80028f0: 2b00 cmp r3, #0 + 80028f2: d001 beq.n 80028f8 + { + return HAL_ERROR; + 80028f4: 2301 movs r3, #1 + 80028f6: e000 b.n 80028fa + } + else + { + return HAL_OK; + 80028f8: 2300 movs r3, #0 + } +} + 80028fa: 4618 mov r0, r3 + 80028fc: 3720 adds r7, #32 + 80028fe: 46bd mov sp, r7 + 8002900: bd80 pop {r7, pc} + ... + +08002904 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8002904: b580 push {r7, lr} + 8002906: b088 sub sp, #32 + 8002908: af00 add r7, sp, #0 + 800290a: 60f8 str r0, [r7, #12] + 800290c: 60b9 str r1, [r7, #8] + 800290e: 603b str r3, [r7, #0] + 8002910: 4613 mov r3, r2 + 8002912: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8002914: f7fe fdc4 bl 80014a0 + 8002918: 4602 mov r2, r0 + 800291a: 6abb ldr r3, [r7, #40] @ 0x28 + 800291c: 1a9b subs r3, r3, r2 + 800291e: 683a ldr r2, [r7, #0] + 8002920: 4413 add r3, r2 + 8002922: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8002924: f7fe fdbc bl 80014a0 + 8002928: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 800292a: 4b39 ldr r3, [pc, #228] @ (8002a10 ) + 800292c: 681b ldr r3, [r3, #0] + 800292e: 015b lsls r3, r3, #5 + 8002930: 0d1b lsrs r3, r3, #20 + 8002932: 69fa ldr r2, [r7, #28] + 8002934: fb02 f303 mul.w r3, r2, r3 + 8002938: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 800293a: e054 b.n 80029e6 + { + if (Timeout != HAL_MAX_DELAY) + 800293c: 683b ldr r3, [r7, #0] + 800293e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8002942: d050 beq.n 80029e6 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8002944: f7fe fdac bl 80014a0 + 8002948: 4602 mov r2, r0 + 800294a: 69bb ldr r3, [r7, #24] + 800294c: 1ad3 subs r3, r2, r3 + 800294e: 69fa ldr r2, [r7, #28] + 8002950: 429a cmp r2, r3 + 8002952: d902 bls.n 800295a + 8002954: 69fb ldr r3, [r7, #28] + 8002956: 2b00 cmp r3, #0 + 8002958: d13d bne.n 80029d6 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 800295a: 68fb ldr r3, [r7, #12] + 800295c: 681b ldr r3, [r3, #0] + 800295e: 685a ldr r2, [r3, #4] + 8002960: 68fb ldr r3, [r7, #12] + 8002962: 681b ldr r3, [r3, #0] + 8002964: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002968: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 800296a: 68fb ldr r3, [r7, #12] + 800296c: 685b ldr r3, [r3, #4] + 800296e: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002972: d111 bne.n 8002998 + 8002974: 68fb ldr r3, [r7, #12] + 8002976: 689b ldr r3, [r3, #8] + 8002978: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800297c: d004 beq.n 8002988 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 800297e: 68fb ldr r3, [r7, #12] + 8002980: 689b ldr r3, [r3, #8] + 8002982: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8002986: d107 bne.n 8002998 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8002988: 68fb ldr r3, [r7, #12] + 800298a: 681b ldr r3, [r3, #0] + 800298c: 681a ldr r2, [r3, #0] + 800298e: 68fb ldr r3, [r7, #12] + 8002990: 681b ldr r3, [r3, #0] + 8002992: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8002996: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8002998: 68fb ldr r3, [r7, #12] + 800299a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800299c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80029a0: d10f bne.n 80029c2 + { + SPI_RESET_CRC(hspi); + 80029a2: 68fb ldr r3, [r7, #12] + 80029a4: 681b ldr r3, [r3, #0] + 80029a6: 681a ldr r2, [r3, #0] + 80029a8: 68fb ldr r3, [r7, #12] + 80029aa: 681b ldr r3, [r3, #0] + 80029ac: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 80029b0: 601a str r2, [r3, #0] + 80029b2: 68fb ldr r3, [r7, #12] + 80029b4: 681b ldr r3, [r3, #0] + 80029b6: 681a ldr r2, [r3, #0] + 80029b8: 68fb ldr r3, [r7, #12] + 80029ba: 681b ldr r3, [r3, #0] + 80029bc: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 80029c0: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80029c2: 68fb ldr r3, [r7, #12] + 80029c4: 2201 movs r2, #1 + 80029c6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80029ca: 68fb ldr r3, [r7, #12] + 80029cc: 2200 movs r2, #0 + 80029ce: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 80029d2: 2303 movs r3, #3 + 80029d4: e017 b.n 8002a06 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 80029d6: 697b ldr r3, [r7, #20] + 80029d8: 2b00 cmp r3, #0 + 80029da: d101 bne.n 80029e0 + { + tmp_timeout = 0U; + 80029dc: 2300 movs r3, #0 + 80029de: 61fb str r3, [r7, #28] + } + count--; + 80029e0: 697b ldr r3, [r7, #20] + 80029e2: 3b01 subs r3, #1 + 80029e4: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 80029e6: 68fb ldr r3, [r7, #12] + 80029e8: 681b ldr r3, [r3, #0] + 80029ea: 689a ldr r2, [r3, #8] + 80029ec: 68bb ldr r3, [r7, #8] + 80029ee: 4013 ands r3, r2 + 80029f0: 68ba ldr r2, [r7, #8] + 80029f2: 429a cmp r2, r3 + 80029f4: bf0c ite eq + 80029f6: 2301 moveq r3, #1 + 80029f8: 2300 movne r3, #0 + 80029fa: b2db uxtb r3, r3 + 80029fc: 461a mov r2, r3 + 80029fe: 79fb ldrb r3, [r7, #7] + 8002a00: 429a cmp r2, r3 + 8002a02: d19b bne.n 800293c + } + } + + return HAL_OK; + 8002a04: 2300 movs r3, #0 +} + 8002a06: 4618 mov r0, r3 + 8002a08: 3720 adds r7, #32 + 8002a0a: 46bd mov sp, r7 + 8002a0c: bd80 pop {r7, pc} + 8002a0e: bf00 nop + 8002a10: 20000004 .word 0x20000004 + +08002a14 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8002a14: b580 push {r7, lr} + 8002a16: b088 sub sp, #32 + 8002a18: af02 add r7, sp, #8 + 8002a1a: 60f8 str r0, [r7, #12] + 8002a1c: 60b9 str r1, [r7, #8] + 8002a1e: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8002a20: 687b ldr r3, [r7, #4] + 8002a22: 9300 str r3, [sp, #0] + 8002a24: 68bb ldr r3, [r7, #8] + 8002a26: 2201 movs r2, #1 + 8002a28: 2102 movs r1, #2 + 8002a2a: 68f8 ldr r0, [r7, #12] + 8002a2c: f7ff ff6a bl 8002904 + 8002a30: 4603 mov r3, r0 + 8002a32: 2b00 cmp r3, #0 + 8002a34: d007 beq.n 8002a46 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002a36: 68fb ldr r3, [r7, #12] + 8002a38: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002a3a: f043 0220 orr.w r2, r3, #32 + 8002a3e: 68fb ldr r3, [r7, #12] + 8002a40: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002a42: 2303 movs r3, #3 + 8002a44: e032 b.n 8002aac + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8002a46: 4b1b ldr r3, [pc, #108] @ (8002ab4 ) + 8002a48: 681b ldr r3, [r3, #0] + 8002a4a: 4a1b ldr r2, [pc, #108] @ (8002ab8 ) + 8002a4c: fba2 2303 umull r2, r3, r2, r3 + 8002a50: 0d5b lsrs r3, r3, #21 + 8002a52: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8002a56: fb02 f303 mul.w r3, r2, r3 + 8002a5a: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8002a5c: 68fb ldr r3, [r7, #12] + 8002a5e: 685b ldr r3, [r3, #4] + 8002a60: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002a64: d112 bne.n 8002a8c + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8002a66: 687b ldr r3, [r7, #4] + 8002a68: 9300 str r3, [sp, #0] + 8002a6a: 68bb ldr r3, [r7, #8] + 8002a6c: 2200 movs r2, #0 + 8002a6e: 2180 movs r1, #128 @ 0x80 + 8002a70: 68f8 ldr r0, [r7, #12] + 8002a72: f7ff ff47 bl 8002904 + 8002a76: 4603 mov r3, r0 + 8002a78: 2b00 cmp r3, #0 + 8002a7a: d016 beq.n 8002aaa + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002a7c: 68fb ldr r3, [r7, #12] + 8002a7e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002a80: f043 0220 orr.w r2, r3, #32 + 8002a84: 68fb ldr r3, [r7, #12] + 8002a86: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002a88: 2303 movs r3, #3 + 8002a8a: e00f b.n 8002aac + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 8002a8c: 697b ldr r3, [r7, #20] + 8002a8e: 2b00 cmp r3, #0 + 8002a90: d00a beq.n 8002aa8 + { + break; + } + count--; + 8002a92: 697b ldr r3, [r7, #20] + 8002a94: 3b01 subs r3, #1 + 8002a96: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8002a98: 68fb ldr r3, [r7, #12] + 8002a9a: 681b ldr r3, [r3, #0] + 8002a9c: 689b ldr r3, [r3, #8] + 8002a9e: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002aa2: 2b80 cmp r3, #128 @ 0x80 + 8002aa4: d0f2 beq.n 8002a8c + 8002aa6: e000 b.n 8002aaa + break; + 8002aa8: bf00 nop + } + + return HAL_OK; + 8002aaa: 2300 movs r3, #0 +} + 8002aac: 4618 mov r0, r3 + 8002aae: 3718 adds r7, #24 + 8002ab0: 46bd mov sp, r7 + 8002ab2: bd80 pop {r7, pc} + 8002ab4: 20000004 .word 0x20000004 + 8002ab8: 165e9f81 .word 0x165e9f81 + +08002abc : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 8002abc: b580 push {r7, lr} + 8002abe: b082 sub sp, #8 + 8002ac0: af00 add r7, sp, #0 + 8002ac2: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8002ac4: 687b ldr r3, [r7, #4] + 8002ac6: 2b00 cmp r3, #0 + 8002ac8: d101 bne.n 8002ace + { + return HAL_ERROR; + 8002aca: 2301 movs r3, #1 + 8002acc: e031 b.n 8002b32 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002ace: 687b ldr r3, [r7, #4] + 8002ad0: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002ad4: b2db uxtb r3, r3 + 8002ad6: 2b00 cmp r3, #0 + 8002ad8: d106 bne.n 8002ae8 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002ada: 687b ldr r3, [r7, #4] + 8002adc: 2200 movs r2, #0 + 8002ade: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 8002ae2: 6878 ldr r0, [r7, #4] + 8002ae4: f7fe fad8 bl 8001098 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002ae8: 687b ldr r3, [r7, #4] + 8002aea: 2202 movs r2, #2 + 8002aec: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002af0: 687b ldr r3, [r7, #4] + 8002af2: 681a ldr r2, [r3, #0] + 8002af4: 687b ldr r3, [r7, #4] + 8002af6: 3304 adds r3, #4 + 8002af8: 4619 mov r1, r3 + 8002afa: 4610 mov r0, r2 + 8002afc: f000 fbc8 bl 8003290 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002b00: 687b ldr r3, [r7, #4] + 8002b02: 2201 movs r2, #1 + 8002b04: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002b08: 687b ldr r3, [r7, #4] + 8002b0a: 2201 movs r2, #1 + 8002b0c: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002b10: 687b ldr r3, [r7, #4] + 8002b12: 2201 movs r2, #1 + 8002b14: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002b18: 687b ldr r3, [r7, #4] + 8002b1a: 2201 movs r2, #1 + 8002b1c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002b20: 687b ldr r3, [r7, #4] + 8002b22: 2201 movs r2, #1 + 8002b24: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002b28: 687b ldr r3, [r7, #4] + 8002b2a: 2201 movs r2, #1 + 8002b2c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002b30: 2300 movs r3, #0 +} + 8002b32: 4618 mov r0, r3 + 8002b34: 3708 adds r7, #8 + 8002b36: 46bd mov sp, r7 + 8002b38: bd80 pop {r7, pc} + ... + +08002b3c : + * @brief Starts the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) +{ + 8002b3c: b480 push {r7} + 8002b3e: b085 sub sp, #20 + 8002b40: af00 add r7, sp, #0 + 8002b42: 6078 str r0, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + 8002b44: 687b ldr r3, [r7, #4] + 8002b46: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002b4a: b2db uxtb r3, r3 + 8002b4c: 2b01 cmp r3, #1 + 8002b4e: d001 beq.n 8002b54 + { + return HAL_ERROR; + 8002b50: 2301 movs r3, #1 + 8002b52: e03a b.n 8002bca + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002b54: 687b ldr r3, [r7, #4] + 8002b56: 2202 movs r2, #2 + 8002b58: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + 8002b5c: 687b ldr r3, [r7, #4] + 8002b5e: 681b ldr r3, [r3, #0] + 8002b60: 68da ldr r2, [r3, #12] + 8002b62: 687b ldr r3, [r7, #4] + 8002b64: 681b ldr r3, [r3, #0] + 8002b66: f042 0201 orr.w r2, r2, #1 + 8002b6a: 60da str r2, [r3, #12] + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002b6c: 687b ldr r3, [r7, #4] + 8002b6e: 681b ldr r3, [r3, #0] + 8002b70: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002b74: d00e beq.n 8002b94 + 8002b76: 687b ldr r3, [r7, #4] + 8002b78: 681b ldr r3, [r3, #0] + 8002b7a: 4a16 ldr r2, [pc, #88] @ (8002bd4 ) + 8002b7c: 4293 cmp r3, r2 + 8002b7e: d009 beq.n 8002b94 + 8002b80: 687b ldr r3, [r7, #4] + 8002b82: 681b ldr r3, [r3, #0] + 8002b84: 4a14 ldr r2, [pc, #80] @ (8002bd8 ) + 8002b86: 4293 cmp r3, r2 + 8002b88: d004 beq.n 8002b94 + 8002b8a: 687b ldr r3, [r7, #4] + 8002b8c: 681b ldr r3, [r3, #0] + 8002b8e: 4a13 ldr r2, [pc, #76] @ (8002bdc ) + 8002b90: 4293 cmp r3, r2 + 8002b92: d111 bne.n 8002bb8 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 8002b94: 687b ldr r3, [r7, #4] + 8002b96: 681b ldr r3, [r3, #0] + 8002b98: 689b ldr r3, [r3, #8] + 8002b9a: f003 0307 and.w r3, r3, #7 + 8002b9e: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002ba0: 68fb ldr r3, [r7, #12] + 8002ba2: 2b06 cmp r3, #6 + 8002ba4: d010 beq.n 8002bc8 + { + __HAL_TIM_ENABLE(htim); + 8002ba6: 687b ldr r3, [r7, #4] + 8002ba8: 681b ldr r3, [r3, #0] + 8002baa: 681a ldr r2, [r3, #0] + 8002bac: 687b ldr r3, [r7, #4] + 8002bae: 681b ldr r3, [r3, #0] + 8002bb0: f042 0201 orr.w r2, r2, #1 + 8002bb4: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002bb6: e007 b.n 8002bc8 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8002bb8: 687b ldr r3, [r7, #4] + 8002bba: 681b ldr r3, [r3, #0] + 8002bbc: 681a ldr r2, [r3, #0] + 8002bbe: 687b ldr r3, [r7, #4] + 8002bc0: 681b ldr r3, [r3, #0] + 8002bc2: f042 0201 orr.w r2, r2, #1 + 8002bc6: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8002bc8: 2300 movs r3, #0 +} + 8002bca: 4618 mov r0, r3 + 8002bcc: 3714 adds r7, #20 + 8002bce: 46bd mov sp, r7 + 8002bd0: bc80 pop {r7} + 8002bd2: 4770 bx lr + 8002bd4: 40000400 .word 0x40000400 + 8002bd8: 40000800 .word 0x40000800 + 8002bdc: 40010800 .word 0x40010800 + +08002be0 : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 8002be0: b580 push {r7, lr} + 8002be2: b082 sub sp, #8 + 8002be4: af00 add r7, sp, #0 + 8002be6: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8002be8: 687b ldr r3, [r7, #4] + 8002bea: 2b00 cmp r3, #0 + 8002bec: d101 bne.n 8002bf2 + { + return HAL_ERROR; + 8002bee: 2301 movs r3, #1 + 8002bf0: e031 b.n 8002c56 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002bf2: 687b ldr r3, [r7, #4] + 8002bf4: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002bf8: b2db uxtb r3, r3 + 8002bfa: 2b00 cmp r3, #0 + 8002bfc: d106 bne.n 8002c0c + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002bfe: 687b ldr r3, [r7, #4] + 8002c00: 2200 movs r2, #0 + 8002c02: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 8002c06: 6878 ldr r0, [r7, #4] + 8002c08: f000 f829 bl 8002c5e +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002c0c: 687b ldr r3, [r7, #4] + 8002c0e: 2202 movs r2, #2 + 8002c10: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002c14: 687b ldr r3, [r7, #4] + 8002c16: 681a ldr r2, [r3, #0] + 8002c18: 687b ldr r3, [r7, #4] + 8002c1a: 3304 adds r3, #4 + 8002c1c: 4619 mov r1, r3 + 8002c1e: 4610 mov r0, r2 + 8002c20: f000 fb36 bl 8003290 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002c24: 687b ldr r3, [r7, #4] + 8002c26: 2201 movs r2, #1 + 8002c28: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002c2c: 687b ldr r3, [r7, #4] + 8002c2e: 2201 movs r2, #1 + 8002c30: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002c34: 687b ldr r3, [r7, #4] + 8002c36: 2201 movs r2, #1 + 8002c38: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002c3c: 687b ldr r3, [r7, #4] + 8002c3e: 2201 movs r2, #1 + 8002c40: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002c44: 687b ldr r3, [r7, #4] + 8002c46: 2201 movs r2, #1 + 8002c48: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002c4c: 687b ldr r3, [r7, #4] + 8002c4e: 2201 movs r2, #1 + 8002c50: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002c54: 2300 movs r3, #0 +} + 8002c56: 4618 mov r0, r3 + 8002c58: 3708 adds r7, #8 + 8002c5a: 46bd mov sp, r7 + 8002c5c: bd80 pop {r7, pc} + +08002c5e : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 8002c5e: b480 push {r7} + 8002c60: b083 sub sp, #12 + 8002c62: af00 add r7, sp, #0 + 8002c64: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 8002c66: bf00 nop + 8002c68: 370c adds r7, #12 + 8002c6a: 46bd mov sp, r7 + 8002c6c: bc80 pop {r7} + 8002c6e: 4770 bx lr + +08002c70 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 8002c70: b580 push {r7, lr} + 8002c72: b084 sub sp, #16 + 8002c74: af00 add r7, sp, #0 + 8002c76: 6078 str r0, [r7, #4] + 8002c78: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 8002c7a: 683b ldr r3, [r7, #0] + 8002c7c: 2b00 cmp r3, #0 + 8002c7e: d109 bne.n 8002c94 + 8002c80: 687b ldr r3, [r7, #4] + 8002c82: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8002c86: b2db uxtb r3, r3 + 8002c88: 2b01 cmp r3, #1 + 8002c8a: bf14 ite ne + 8002c8c: 2301 movne r3, #1 + 8002c8e: 2300 moveq r3, #0 + 8002c90: b2db uxtb r3, r3 + 8002c92: e022 b.n 8002cda + 8002c94: 683b ldr r3, [r7, #0] + 8002c96: 2b04 cmp r3, #4 + 8002c98: d109 bne.n 8002cae + 8002c9a: 687b ldr r3, [r7, #4] + 8002c9c: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 8002ca0: b2db uxtb r3, r3 + 8002ca2: 2b01 cmp r3, #1 + 8002ca4: bf14 ite ne + 8002ca6: 2301 movne r3, #1 + 8002ca8: 2300 moveq r3, #0 + 8002caa: b2db uxtb r3, r3 + 8002cac: e015 b.n 8002cda + 8002cae: 683b ldr r3, [r7, #0] + 8002cb0: 2b08 cmp r3, #8 + 8002cb2: d109 bne.n 8002cc8 + 8002cb4: 687b ldr r3, [r7, #4] + 8002cb6: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8002cba: b2db uxtb r3, r3 + 8002cbc: 2b01 cmp r3, #1 + 8002cbe: bf14 ite ne + 8002cc0: 2301 movne r3, #1 + 8002cc2: 2300 moveq r3, #0 + 8002cc4: b2db uxtb r3, r3 + 8002cc6: e008 b.n 8002cda + 8002cc8: 687b ldr r3, [r7, #4] + 8002cca: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8002cce: b2db uxtb r3, r3 + 8002cd0: 2b01 cmp r3, #1 + 8002cd2: bf14 ite ne + 8002cd4: 2301 movne r3, #1 + 8002cd6: 2300 moveq r3, #0 + 8002cd8: b2db uxtb r3, r3 + 8002cda: 2b00 cmp r3, #0 + 8002cdc: d001 beq.n 8002ce2 + { + return HAL_ERROR; + 8002cde: 2301 movs r3, #1 + 8002ce0: e051 b.n 8002d86 + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 8002ce2: 683b ldr r3, [r7, #0] + 8002ce4: 2b00 cmp r3, #0 + 8002ce6: d104 bne.n 8002cf2 + 8002ce8: 687b ldr r3, [r7, #4] + 8002cea: 2202 movs r2, #2 + 8002cec: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002cf0: e013 b.n 8002d1a + 8002cf2: 683b ldr r3, [r7, #0] + 8002cf4: 2b04 cmp r3, #4 + 8002cf6: d104 bne.n 8002d02 + 8002cf8: 687b ldr r3, [r7, #4] + 8002cfa: 2202 movs r2, #2 + 8002cfc: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002d00: e00b b.n 8002d1a + 8002d02: 683b ldr r3, [r7, #0] + 8002d04: 2b08 cmp r3, #8 + 8002d06: d104 bne.n 8002d12 + 8002d08: 687b ldr r3, [r7, #4] + 8002d0a: 2202 movs r2, #2 + 8002d0c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002d10: e003 b.n 8002d1a + 8002d12: 687b ldr r3, [r7, #4] + 8002d14: 2202 movs r2, #2 + 8002d16: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 8002d1a: 687b ldr r3, [r7, #4] + 8002d1c: 681b ldr r3, [r3, #0] + 8002d1e: 2201 movs r2, #1 + 8002d20: 6839 ldr r1, [r7, #0] + 8002d22: 4618 mov r0, r3 + 8002d24: f000 fcb5 bl 8003692 + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002d28: 687b ldr r3, [r7, #4] + 8002d2a: 681b ldr r3, [r3, #0] + 8002d2c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002d30: d00e beq.n 8002d50 + 8002d32: 687b ldr r3, [r7, #4] + 8002d34: 681b ldr r3, [r3, #0] + 8002d36: 4a16 ldr r2, [pc, #88] @ (8002d90 ) + 8002d38: 4293 cmp r3, r2 + 8002d3a: d009 beq.n 8002d50 + 8002d3c: 687b ldr r3, [r7, #4] + 8002d3e: 681b ldr r3, [r3, #0] + 8002d40: 4a14 ldr r2, [pc, #80] @ (8002d94 ) + 8002d42: 4293 cmp r3, r2 + 8002d44: d004 beq.n 8002d50 + 8002d46: 687b ldr r3, [r7, #4] + 8002d48: 681b ldr r3, [r3, #0] + 8002d4a: 4a13 ldr r2, [pc, #76] @ (8002d98 ) + 8002d4c: 4293 cmp r3, r2 + 8002d4e: d111 bne.n 8002d74 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 8002d50: 687b ldr r3, [r7, #4] + 8002d52: 681b ldr r3, [r3, #0] + 8002d54: 689b ldr r3, [r3, #8] + 8002d56: f003 0307 and.w r3, r3, #7 + 8002d5a: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002d5c: 68fb ldr r3, [r7, #12] + 8002d5e: 2b06 cmp r3, #6 + 8002d60: d010 beq.n 8002d84 + { + __HAL_TIM_ENABLE(htim); + 8002d62: 687b ldr r3, [r7, #4] + 8002d64: 681b ldr r3, [r3, #0] + 8002d66: 681a ldr r2, [r3, #0] + 8002d68: 687b ldr r3, [r7, #4] + 8002d6a: 681b ldr r3, [r3, #0] + 8002d6c: f042 0201 orr.w r2, r2, #1 + 8002d70: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8002d72: e007 b.n 8002d84 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8002d74: 687b ldr r3, [r7, #4] + 8002d76: 681b ldr r3, [r3, #0] + 8002d78: 681a ldr r2, [r3, #0] + 8002d7a: 687b ldr r3, [r7, #4] + 8002d7c: 681b ldr r3, [r3, #0] + 8002d7e: f042 0201 orr.w r2, r2, #1 + 8002d82: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8002d84: 2300 movs r3, #0 +} + 8002d86: 4618 mov r0, r3 + 8002d88: 3710 adds r7, #16 + 8002d8a: 46bd mov sp, r7 + 8002d8c: bd80 pop {r7, pc} + 8002d8e: bf00 nop + 8002d90: 40000400 .word 0x40000400 + 8002d94: 40000800 .word 0x40000800 + 8002d98: 40010800 .word 0x40010800 + +08002d9c : + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + 8002d9c: b580 push {r7, lr} + 8002d9e: b084 sub sp, #16 + 8002da0: af00 add r7, sp, #0 + 8002da2: 6078 str r0, [r7, #4] + uint32_t itsource = htim->Instance->DIER; + 8002da4: 687b ldr r3, [r7, #4] + 8002da6: 681b ldr r3, [r3, #0] + 8002da8: 68db ldr r3, [r3, #12] + 8002daa: 60fb str r3, [r7, #12] + uint32_t itflag = htim->Instance->SR; + 8002dac: 687b ldr r3, [r7, #4] + 8002dae: 681b ldr r3, [r3, #0] + 8002db0: 691b ldr r3, [r3, #16] + 8002db2: 60bb str r3, [r7, #8] + + /* Capture compare 1 event */ + if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) + 8002db4: 68bb ldr r3, [r7, #8] + 8002db6: f003 0302 and.w r3, r3, #2 + 8002dba: 2b00 cmp r3, #0 + 8002dbc: d020 beq.n 8002e00 + { + if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) + 8002dbe: 68fb ldr r3, [r7, #12] + 8002dc0: f003 0302 and.w r3, r3, #2 + 8002dc4: 2b00 cmp r3, #0 + 8002dc6: d01b beq.n 8002e00 + { + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); + 8002dc8: 687b ldr r3, [r7, #4] + 8002dca: 681b ldr r3, [r3, #0] + 8002dcc: f06f 0202 mvn.w r2, #2 + 8002dd0: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + 8002dd2: 687b ldr r3, [r7, #4] + 8002dd4: 2201 movs r2, #1 + 8002dd6: 761a strb r2, [r3, #24] + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + 8002dd8: 687b ldr r3, [r7, #4] + 8002dda: 681b ldr r3, [r3, #0] + 8002ddc: 699b ldr r3, [r3, #24] + 8002dde: f003 0303 and.w r3, r3, #3 + 8002de2: 2b00 cmp r3, #0 + 8002de4: d003 beq.n 8002dee + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002de6: 6878 ldr r0, [r7, #4] + 8002de8: f000 fa36 bl 8003258 + 8002dec: e005 b.n 8002dfa + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002dee: 6878 ldr r0, [r7, #4] + 8002df0: f000 fa29 bl 8003246 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002df4: 6878 ldr r0, [r7, #4] + 8002df6: f000 fa38 bl 800326a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002dfa: 687b ldr r3, [r7, #4] + 8002dfc: 2200 movs r2, #0 + 8002dfe: 761a strb r2, [r3, #24] + } + } + } + /* Capture compare 2 event */ + if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) + 8002e00: 68bb ldr r3, [r7, #8] + 8002e02: f003 0304 and.w r3, r3, #4 + 8002e06: 2b00 cmp r3, #0 + 8002e08: d020 beq.n 8002e4c + { + if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) + 8002e0a: 68fb ldr r3, [r7, #12] + 8002e0c: f003 0304 and.w r3, r3, #4 + 8002e10: 2b00 cmp r3, #0 + 8002e12: d01b beq.n 8002e4c + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); + 8002e14: 687b ldr r3, [r7, #4] + 8002e16: 681b ldr r3, [r3, #0] + 8002e18: f06f 0204 mvn.w r2, #4 + 8002e1c: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + 8002e1e: 687b ldr r3, [r7, #4] + 8002e20: 2202 movs r2, #2 + 8002e22: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + 8002e24: 687b ldr r3, [r7, #4] + 8002e26: 681b ldr r3, [r3, #0] + 8002e28: 699b ldr r3, [r3, #24] + 8002e2a: f403 7340 and.w r3, r3, #768 @ 0x300 + 8002e2e: 2b00 cmp r3, #0 + 8002e30: d003 beq.n 8002e3a + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002e32: 6878 ldr r0, [r7, #4] + 8002e34: f000 fa10 bl 8003258 + 8002e38: e005 b.n 8002e46 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002e3a: 6878 ldr r0, [r7, #4] + 8002e3c: f000 fa03 bl 8003246 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002e40: 6878 ldr r0, [r7, #4] + 8002e42: f000 fa12 bl 800326a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002e46: 687b ldr r3, [r7, #4] + 8002e48: 2200 movs r2, #0 + 8002e4a: 761a strb r2, [r3, #24] + } + } + /* Capture compare 3 event */ + if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) + 8002e4c: 68bb ldr r3, [r7, #8] + 8002e4e: f003 0308 and.w r3, r3, #8 + 8002e52: 2b00 cmp r3, #0 + 8002e54: d020 beq.n 8002e98 + { + if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) + 8002e56: 68fb ldr r3, [r7, #12] + 8002e58: f003 0308 and.w r3, r3, #8 + 8002e5c: 2b00 cmp r3, #0 + 8002e5e: d01b beq.n 8002e98 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + 8002e60: 687b ldr r3, [r7, #4] + 8002e62: 681b ldr r3, [r3, #0] + 8002e64: f06f 0208 mvn.w r2, #8 + 8002e68: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + 8002e6a: 687b ldr r3, [r7, #4] + 8002e6c: 2204 movs r2, #4 + 8002e6e: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + 8002e70: 687b ldr r3, [r7, #4] + 8002e72: 681b ldr r3, [r3, #0] + 8002e74: 69db ldr r3, [r3, #28] + 8002e76: f003 0303 and.w r3, r3, #3 + 8002e7a: 2b00 cmp r3, #0 + 8002e7c: d003 beq.n 8002e86 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002e7e: 6878 ldr r0, [r7, #4] + 8002e80: f000 f9ea bl 8003258 + 8002e84: e005 b.n 8002e92 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002e86: 6878 ldr r0, [r7, #4] + 8002e88: f000 f9dd bl 8003246 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002e8c: 6878 ldr r0, [r7, #4] + 8002e8e: f000 f9ec bl 800326a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002e92: 687b ldr r3, [r7, #4] + 8002e94: 2200 movs r2, #0 + 8002e96: 761a strb r2, [r3, #24] + } + } + /* Capture compare 4 event */ + if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) + 8002e98: 68bb ldr r3, [r7, #8] + 8002e9a: f003 0310 and.w r3, r3, #16 + 8002e9e: 2b00 cmp r3, #0 + 8002ea0: d020 beq.n 8002ee4 + { + if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) + 8002ea2: 68fb ldr r3, [r7, #12] + 8002ea4: f003 0310 and.w r3, r3, #16 + 8002ea8: 2b00 cmp r3, #0 + 8002eaa: d01b beq.n 8002ee4 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); + 8002eac: 687b ldr r3, [r7, #4] + 8002eae: 681b ldr r3, [r3, #0] + 8002eb0: f06f 0210 mvn.w r2, #16 + 8002eb4: 611a str r2, [r3, #16] + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + 8002eb6: 687b ldr r3, [r7, #4] + 8002eb8: 2208 movs r2, #8 + 8002eba: 761a strb r2, [r3, #24] + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + 8002ebc: 687b ldr r3, [r7, #4] + 8002ebe: 681b ldr r3, [r3, #0] + 8002ec0: 69db ldr r3, [r3, #28] + 8002ec2: f403 7340 and.w r3, r3, #768 @ 0x300 + 8002ec6: 2b00 cmp r3, #0 + 8002ec8: d003 beq.n 8002ed2 + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); + 8002eca: 6878 ldr r0, [r7, #4] + 8002ecc: f000 f9c4 bl 8003258 + 8002ed0: e005 b.n 8002ede + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + 8002ed2: 6878 ldr r0, [r7, #4] + 8002ed4: f000 f9b7 bl 8003246 + HAL_TIM_PWM_PulseFinishedCallback(htim); + 8002ed8: 6878 ldr r0, [r7, #4] + 8002eda: f000 f9c6 bl 800326a +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + 8002ede: 687b ldr r3, [r7, #4] + 8002ee0: 2200 movs r2, #0 + 8002ee2: 761a strb r2, [r3, #24] + } + } + /* TIM Update event */ + if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) + 8002ee4: 68bb ldr r3, [r7, #8] + 8002ee6: f003 0301 and.w r3, r3, #1 + 8002eea: 2b00 cmp r3, #0 + 8002eec: d00c beq.n 8002f08 + { + if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) + 8002eee: 68fb ldr r3, [r7, #12] + 8002ef0: f003 0301 and.w r3, r3, #1 + 8002ef4: 2b00 cmp r3, #0 + 8002ef6: d007 beq.n 8002f08 + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); + 8002ef8: 687b ldr r3, [r7, #4] + 8002efa: 681b ldr r3, [r3, #0] + 8002efc: f06f 0201 mvn.w r2, #1 + 8002f00: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); + 8002f02: 6878 ldr r0, [r7, #4] + 8002f04: f7fd ffec bl 8000ee0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) + 8002f08: 68bb ldr r3, [r7, #8] + 8002f0a: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002f0e: 2b00 cmp r3, #0 + 8002f10: d00c beq.n 8002f2c + { + if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) + 8002f12: 68fb ldr r3, [r7, #12] + 8002f14: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002f18: 2b00 cmp r3, #0 + 8002f1a: d007 beq.n 8002f2c + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); + 8002f1c: 687b ldr r3, [r7, #4] + 8002f1e: 681b ldr r3, [r3, #0] + 8002f20: f06f 0240 mvn.w r2, #64 @ 0x40 + 8002f24: 611a str r2, [r3, #16] +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); + 8002f26: 6878 ldr r0, [r7, #4] + 8002f28: f000 f9a8 bl 800327c +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + 8002f2c: bf00 nop + 8002f2e: 3710 adds r7, #16 + 8002f30: 46bd mov sp, r7 + 8002f32: bd80 pop {r7, pc} + +08002f34 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8002f34: b580 push {r7, lr} + 8002f36: b086 sub sp, #24 + 8002f38: af00 add r7, sp, #0 + 8002f3a: 60f8 str r0, [r7, #12] + 8002f3c: 60b9 str r1, [r7, #8] + 8002f3e: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8002f40: 2300 movs r3, #0 + 8002f42: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8002f44: 68fb ldr r3, [r7, #12] + 8002f46: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002f4a: 2b01 cmp r3, #1 + 8002f4c: d101 bne.n 8002f52 + 8002f4e: 2302 movs r3, #2 + 8002f50: e0ae b.n 80030b0 + 8002f52: 68fb ldr r3, [r7, #12] + 8002f54: 2201 movs r2, #1 + 8002f56: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + switch (Channel) + 8002f5a: 687b ldr r3, [r7, #4] + 8002f5c: 2b0c cmp r3, #12 + 8002f5e: f200 809f bhi.w 80030a0 + 8002f62: a201 add r2, pc, #4 @ (adr r2, 8002f68 ) + 8002f64: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8002f68: 08002f9d .word 0x08002f9d + 8002f6c: 080030a1 .word 0x080030a1 + 8002f70: 080030a1 .word 0x080030a1 + 8002f74: 080030a1 .word 0x080030a1 + 8002f78: 08002fdd .word 0x08002fdd + 8002f7c: 080030a1 .word 0x080030a1 + 8002f80: 080030a1 .word 0x080030a1 + 8002f84: 080030a1 .word 0x080030a1 + 8002f88: 0800301f .word 0x0800301f + 8002f8c: 080030a1 .word 0x080030a1 + 8002f90: 080030a1 .word 0x080030a1 + 8002f94: 080030a1 .word 0x080030a1 + 8002f98: 0800305f .word 0x0800305f + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 8002f9c: 68fb ldr r3, [r7, #12] + 8002f9e: 681b ldr r3, [r3, #0] + 8002fa0: 68b9 ldr r1, [r7, #8] + 8002fa2: 4618 mov r0, r3 + 8002fa4: f000 f9ea bl 800337c + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 8002fa8: 68fb ldr r3, [r7, #12] + 8002faa: 681b ldr r3, [r3, #0] + 8002fac: 699a ldr r2, [r3, #24] + 8002fae: 68fb ldr r3, [r7, #12] + 8002fb0: 681b ldr r3, [r3, #0] + 8002fb2: f042 0208 orr.w r2, r2, #8 + 8002fb6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 8002fb8: 68fb ldr r3, [r7, #12] + 8002fba: 681b ldr r3, [r3, #0] + 8002fbc: 699a ldr r2, [r3, #24] + 8002fbe: 68fb ldr r3, [r7, #12] + 8002fc0: 681b ldr r3, [r3, #0] + 8002fc2: f022 0204 bic.w r2, r2, #4 + 8002fc6: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 8002fc8: 68fb ldr r3, [r7, #12] + 8002fca: 681b ldr r3, [r3, #0] + 8002fcc: 6999 ldr r1, [r3, #24] + 8002fce: 68bb ldr r3, [r7, #8] + 8002fd0: 68da ldr r2, [r3, #12] + 8002fd2: 68fb ldr r3, [r7, #12] + 8002fd4: 681b ldr r3, [r3, #0] + 8002fd6: 430a orrs r2, r1 + 8002fd8: 619a str r2, [r3, #24] + break; + 8002fda: e064 b.n 80030a6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8002fdc: 68fb ldr r3, [r7, #12] + 8002fde: 681b ldr r3, [r3, #0] + 8002fe0: 68b9 ldr r1, [r7, #8] + 8002fe2: 4618 mov r0, r3 + 8002fe4: f000 fa06 bl 80033f4 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8002fe8: 68fb ldr r3, [r7, #12] + 8002fea: 681b ldr r3, [r3, #0] + 8002fec: 699a ldr r2, [r3, #24] + 8002fee: 68fb ldr r3, [r7, #12] + 8002ff0: 681b ldr r3, [r3, #0] + 8002ff2: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8002ff6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 8002ff8: 68fb ldr r3, [r7, #12] + 8002ffa: 681b ldr r3, [r3, #0] + 8002ffc: 699a ldr r2, [r3, #24] + 8002ffe: 68fb ldr r3, [r7, #12] + 8003000: 681b ldr r3, [r3, #0] + 8003002: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003006: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 8003008: 68fb ldr r3, [r7, #12] + 800300a: 681b ldr r3, [r3, #0] + 800300c: 6999 ldr r1, [r3, #24] + 800300e: 68bb ldr r3, [r7, #8] + 8003010: 68db ldr r3, [r3, #12] + 8003012: 021a lsls r2, r3, #8 + 8003014: 68fb ldr r3, [r7, #12] + 8003016: 681b ldr r3, [r3, #0] + 8003018: 430a orrs r2, r1 + 800301a: 619a str r2, [r3, #24] + break; + 800301c: e043 b.n 80030a6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 800301e: 68fb ldr r3, [r7, #12] + 8003020: 681b ldr r3, [r3, #0] + 8003022: 68b9 ldr r1, [r7, #8] + 8003024: 4618 mov r0, r3 + 8003026: f000 fa23 bl 8003470 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 800302a: 68fb ldr r3, [r7, #12] + 800302c: 681b ldr r3, [r3, #0] + 800302e: 69da ldr r2, [r3, #28] + 8003030: 68fb ldr r3, [r7, #12] + 8003032: 681b ldr r3, [r3, #0] + 8003034: f042 0208 orr.w r2, r2, #8 + 8003038: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 800303a: 68fb ldr r3, [r7, #12] + 800303c: 681b ldr r3, [r3, #0] + 800303e: 69da ldr r2, [r3, #28] + 8003040: 68fb ldr r3, [r7, #12] + 8003042: 681b ldr r3, [r3, #0] + 8003044: f022 0204 bic.w r2, r2, #4 + 8003048: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 800304a: 68fb ldr r3, [r7, #12] + 800304c: 681b ldr r3, [r3, #0] + 800304e: 69d9 ldr r1, [r3, #28] + 8003050: 68bb ldr r3, [r7, #8] + 8003052: 68da ldr r2, [r3, #12] + 8003054: 68fb ldr r3, [r7, #12] + 8003056: 681b ldr r3, [r3, #0] + 8003058: 430a orrs r2, r1 + 800305a: 61da str r2, [r3, #28] + break; + 800305c: e023 b.n 80030a6 + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 800305e: 68fb ldr r3, [r7, #12] + 8003060: 681b ldr r3, [r3, #0] + 8003062: 68b9 ldr r1, [r7, #8] + 8003064: 4618 mov r0, r3 + 8003066: f000 fa40 bl 80034ea + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 800306a: 68fb ldr r3, [r7, #12] + 800306c: 681b ldr r3, [r3, #0] + 800306e: 69da ldr r2, [r3, #28] + 8003070: 68fb ldr r3, [r7, #12] + 8003072: 681b ldr r3, [r3, #0] + 8003074: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8003078: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 800307a: 68fb ldr r3, [r7, #12] + 800307c: 681b ldr r3, [r3, #0] + 800307e: 69da ldr r2, [r3, #28] + 8003080: 68fb ldr r3, [r7, #12] + 8003082: 681b ldr r3, [r3, #0] + 8003084: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003088: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 800308a: 68fb ldr r3, [r7, #12] + 800308c: 681b ldr r3, [r3, #0] + 800308e: 69d9 ldr r1, [r3, #28] + 8003090: 68bb ldr r3, [r7, #8] + 8003092: 68db ldr r3, [r3, #12] + 8003094: 021a lsls r2, r3, #8 + 8003096: 68fb ldr r3, [r7, #12] + 8003098: 681b ldr r3, [r3, #0] + 800309a: 430a orrs r2, r1 + 800309c: 61da str r2, [r3, #28] + break; + 800309e: e002 b.n 80030a6 + } + + default: + status = HAL_ERROR; + 80030a0: 2301 movs r3, #1 + 80030a2: 75fb strb r3, [r7, #23] + break; + 80030a4: bf00 nop + } + + __HAL_UNLOCK(htim); + 80030a6: 68fb ldr r3, [r7, #12] + 80030a8: 2200 movs r2, #0 + 80030aa: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 80030ae: 7dfb ldrb r3, [r7, #23] +} + 80030b0: 4618 mov r0, r3 + 80030b2: 3718 adds r7, #24 + 80030b4: 46bd mov sp, r7 + 80030b6: bd80 pop {r7, pc} + +080030b8 : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 80030b8: b580 push {r7, lr} + 80030ba: b084 sub sp, #16 + 80030bc: af00 add r7, sp, #0 + 80030be: 6078 str r0, [r7, #4] + 80030c0: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 80030c2: 2300 movs r3, #0 + 80030c4: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 80030c6: 687b ldr r3, [r7, #4] + 80030c8: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80030cc: 2b01 cmp r3, #1 + 80030ce: d101 bne.n 80030d4 + 80030d0: 2302 movs r3, #2 + 80030d2: e0b4 b.n 800323e + 80030d4: 687b ldr r3, [r7, #4] + 80030d6: 2201 movs r2, #1 + 80030d8: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 80030dc: 687b ldr r3, [r7, #4] + 80030de: 2202 movs r2, #2 + 80030e0: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 80030e4: 687b ldr r3, [r7, #4] + 80030e6: 681b ldr r3, [r3, #0] + 80030e8: 689b ldr r3, [r3, #8] + 80030ea: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 80030ec: 68bb ldr r3, [r7, #8] + 80030ee: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80030f2: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80030f4: 68bb ldr r3, [r7, #8] + 80030f6: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80030fa: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 80030fc: 687b ldr r3, [r7, #4] + 80030fe: 681b ldr r3, [r3, #0] + 8003100: 68ba ldr r2, [r7, #8] + 8003102: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 8003104: 683b ldr r3, [r7, #0] + 8003106: 681b ldr r3, [r3, #0] + 8003108: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800310c: d03e beq.n 800318c + 800310e: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8003112: f200 8087 bhi.w 8003224 + 8003116: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800311a: f000 8086 beq.w 800322a + 800311e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8003122: d87f bhi.n 8003224 + 8003124: 2b70 cmp r3, #112 @ 0x70 + 8003126: d01a beq.n 800315e + 8003128: 2b70 cmp r3, #112 @ 0x70 + 800312a: d87b bhi.n 8003224 + 800312c: 2b60 cmp r3, #96 @ 0x60 + 800312e: d050 beq.n 80031d2 + 8003130: 2b60 cmp r3, #96 @ 0x60 + 8003132: d877 bhi.n 8003224 + 8003134: 2b50 cmp r3, #80 @ 0x50 + 8003136: d03c beq.n 80031b2 + 8003138: 2b50 cmp r3, #80 @ 0x50 + 800313a: d873 bhi.n 8003224 + 800313c: 2b40 cmp r3, #64 @ 0x40 + 800313e: d058 beq.n 80031f2 + 8003140: 2b40 cmp r3, #64 @ 0x40 + 8003142: d86f bhi.n 8003224 + 8003144: 2b30 cmp r3, #48 @ 0x30 + 8003146: d064 beq.n 8003212 + 8003148: 2b30 cmp r3, #48 @ 0x30 + 800314a: d86b bhi.n 8003224 + 800314c: 2b20 cmp r3, #32 + 800314e: d060 beq.n 8003212 + 8003150: 2b20 cmp r3, #32 + 8003152: d867 bhi.n 8003224 + 8003154: 2b00 cmp r3, #0 + 8003156: d05c beq.n 8003212 + 8003158: 2b10 cmp r3, #16 + 800315a: d05a beq.n 8003212 + 800315c: e062 b.n 8003224 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 800315e: 687b ldr r3, [r7, #4] + 8003160: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8003162: 683b ldr r3, [r7, #0] + 8003164: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8003166: 683b ldr r3, [r7, #0] + 8003168: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 800316a: 683b ldr r3, [r7, #0] + 800316c: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800316e: f000 fa71 bl 8003654 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 8003172: 687b ldr r3, [r7, #4] + 8003174: 681b ldr r3, [r3, #0] + 8003176: 689b ldr r3, [r3, #8] + 8003178: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 800317a: 68bb ldr r3, [r7, #8] + 800317c: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8003180: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8003182: 687b ldr r3, [r7, #4] + 8003184: 681b ldr r3, [r3, #0] + 8003186: 68ba ldr r2, [r7, #8] + 8003188: 609a str r2, [r3, #8] + break; + 800318a: e04f b.n 800322c + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 800318c: 687b ldr r3, [r7, #4] + 800318e: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8003190: 683b ldr r3, [r7, #0] + 8003192: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8003194: 683b ldr r3, [r7, #0] + 8003196: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8003198: 683b ldr r3, [r7, #0] + 800319a: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800319c: f000 fa5a bl 8003654 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 80031a0: 687b ldr r3, [r7, #4] + 80031a2: 681b ldr r3, [r3, #0] + 80031a4: 689a ldr r2, [r3, #8] + 80031a6: 687b ldr r3, [r7, #4] + 80031a8: 681b ldr r3, [r3, #0] + 80031aa: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 80031ae: 609a str r2, [r3, #8] + break; + 80031b0: e03c b.n 800322c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80031b2: 687b ldr r3, [r7, #4] + 80031b4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80031b6: 683b ldr r3, [r7, #0] + 80031b8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80031ba: 683b ldr r3, [r7, #0] + 80031bc: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80031be: 461a mov r2, r3 + 80031c0: f000 f9d1 bl 8003566 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 80031c4: 687b ldr r3, [r7, #4] + 80031c6: 681b ldr r3, [r3, #0] + 80031c8: 2150 movs r1, #80 @ 0x50 + 80031ca: 4618 mov r0, r3 + 80031cc: f000 fa28 bl 8003620 + break; + 80031d0: e02c b.n 800322c + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 80031d2: 687b ldr r3, [r7, #4] + 80031d4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80031d6: 683b ldr r3, [r7, #0] + 80031d8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80031da: 683b ldr r3, [r7, #0] + 80031dc: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 80031de: 461a mov r2, r3 + 80031e0: f000 f9ef bl 80035c2 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 80031e4: 687b ldr r3, [r7, #4] + 80031e6: 681b ldr r3, [r3, #0] + 80031e8: 2160 movs r1, #96 @ 0x60 + 80031ea: 4618 mov r0, r3 + 80031ec: f000 fa18 bl 8003620 + break; + 80031f0: e01c b.n 800322c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80031f2: 687b ldr r3, [r7, #4] + 80031f4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80031f6: 683b ldr r3, [r7, #0] + 80031f8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80031fa: 683b ldr r3, [r7, #0] + 80031fc: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80031fe: 461a mov r2, r3 + 8003200: f000 f9b1 bl 8003566 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 8003204: 687b ldr r3, [r7, #4] + 8003206: 681b ldr r3, [r3, #0] + 8003208: 2140 movs r1, #64 @ 0x40 + 800320a: 4618 mov r0, r3 + 800320c: f000 fa08 bl 8003620 + break; + 8003210: e00c b.n 800322c + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 8003212: 687b ldr r3, [r7, #4] + 8003214: 681a ldr r2, [r3, #0] + 8003216: 683b ldr r3, [r7, #0] + 8003218: 681b ldr r3, [r3, #0] + 800321a: 4619 mov r1, r3 + 800321c: 4610 mov r0, r2 + 800321e: f000 f9ff bl 8003620 + break; + 8003222: e003 b.n 800322c + } + + default: + status = HAL_ERROR; + 8003224: 2301 movs r3, #1 + 8003226: 73fb strb r3, [r7, #15] + break; + 8003228: e000 b.n 800322c + break; + 800322a: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 800322c: 687b ldr r3, [r7, #4] + 800322e: 2201 movs r2, #1 + 8003230: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8003234: 687b ldr r3, [r7, #4] + 8003236: 2200 movs r2, #0 + 8003238: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 800323c: 7bfb ldrb r3, [r7, #15] +} + 800323e: 4618 mov r0, r3 + 8003240: 3710 adds r7, #16 + 8003242: 46bd mov sp, r7 + 8003244: bd80 pop {r7, pc} + +08003246 : + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + 8003246: b480 push {r7} + 8003248: b083 sub sp, #12 + 800324a: af00 add r7, sp, #0 + 800324c: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + 800324e: bf00 nop + 8003250: 370c adds r7, #12 + 8003252: 46bd mov sp, r7 + 8003254: bc80 pop {r7} + 8003256: 4770 bx lr + +08003258 : + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + 8003258: b480 push {r7} + 800325a: b083 sub sp, #12 + 800325c: af00 add r7, sp, #0 + 800325e: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + 8003260: bf00 nop + 8003262: 370c adds r7, #12 + 8003264: 46bd mov sp, r7 + 8003266: bc80 pop {r7} + 8003268: 4770 bx lr + +0800326a : + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + 800326a: b480 push {r7} + 800326c: b083 sub sp, #12 + 800326e: af00 add r7, sp, #0 + 8003270: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file + */ +} + 8003272: bf00 nop + 8003274: 370c adds r7, #12 + 8003276: 46bd mov sp, r7 + 8003278: bc80 pop {r7} + 800327a: 4770 bx lr + +0800327c : + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + 800327c: b480 push {r7} + 800327e: b083 sub sp, #12 + 8003280: af00 add r7, sp, #0 + 8003282: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerCallback could be implemented in the user file + */ +} + 8003284: bf00 nop + 8003286: 370c adds r7, #12 + 8003288: 46bd mov sp, r7 + 800328a: bc80 pop {r7} + 800328c: 4770 bx lr + ... + +08003290 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 8003290: b480 push {r7} + 8003292: b085 sub sp, #20 + 8003294: af00 add r7, sp, #0 + 8003296: 6078 str r0, [r7, #4] + 8003298: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 800329a: 687b ldr r3, [r7, #4] + 800329c: 681b ldr r3, [r3, #0] + 800329e: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 80032a0: 687b ldr r3, [r7, #4] + 80032a2: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80032a6: d00f beq.n 80032c8 + 80032a8: 687b ldr r3, [r7, #4] + 80032aa: 4a2e ldr r2, [pc, #184] @ (8003364 ) + 80032ac: 4293 cmp r3, r2 + 80032ae: d00b beq.n 80032c8 + 80032b0: 687b ldr r3, [r7, #4] + 80032b2: 4a2d ldr r2, [pc, #180] @ (8003368 ) + 80032b4: 4293 cmp r3, r2 + 80032b6: d007 beq.n 80032c8 + 80032b8: 687b ldr r3, [r7, #4] + 80032ba: 4a2c ldr r2, [pc, #176] @ (800336c ) + 80032bc: 4293 cmp r3, r2 + 80032be: d003 beq.n 80032c8 + 80032c0: 687b ldr r3, [r7, #4] + 80032c2: 4a2b ldr r2, [pc, #172] @ (8003370 ) + 80032c4: 4293 cmp r3, r2 + 80032c6: d108 bne.n 80032da + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 80032c8: 68fb ldr r3, [r7, #12] + 80032ca: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80032ce: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 80032d0: 683b ldr r3, [r7, #0] + 80032d2: 685b ldr r3, [r3, #4] + 80032d4: 68fa ldr r2, [r7, #12] + 80032d6: 4313 orrs r3, r2 + 80032d8: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 80032da: 687b ldr r3, [r7, #4] + 80032dc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80032e0: d017 beq.n 8003312 + 80032e2: 687b ldr r3, [r7, #4] + 80032e4: 4a1f ldr r2, [pc, #124] @ (8003364 ) + 80032e6: 4293 cmp r3, r2 + 80032e8: d013 beq.n 8003312 + 80032ea: 687b ldr r3, [r7, #4] + 80032ec: 4a1e ldr r2, [pc, #120] @ (8003368 ) + 80032ee: 4293 cmp r3, r2 + 80032f0: d00f beq.n 8003312 + 80032f2: 687b ldr r3, [r7, #4] + 80032f4: 4a1d ldr r2, [pc, #116] @ (800336c ) + 80032f6: 4293 cmp r3, r2 + 80032f8: d00b beq.n 8003312 + 80032fa: 687b ldr r3, [r7, #4] + 80032fc: 4a1c ldr r2, [pc, #112] @ (8003370 ) + 80032fe: 4293 cmp r3, r2 + 8003300: d007 beq.n 8003312 + 8003302: 687b ldr r3, [r7, #4] + 8003304: 4a1b ldr r2, [pc, #108] @ (8003374 ) + 8003306: 4293 cmp r3, r2 + 8003308: d003 beq.n 8003312 + 800330a: 687b ldr r3, [r7, #4] + 800330c: 4a1a ldr r2, [pc, #104] @ (8003378 ) + 800330e: 4293 cmp r3, r2 + 8003310: d108 bne.n 8003324 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 8003312: 68fb ldr r3, [r7, #12] + 8003314: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003318: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 800331a: 683b ldr r3, [r7, #0] + 800331c: 68db ldr r3, [r3, #12] + 800331e: 68fa ldr r2, [r7, #12] + 8003320: 4313 orrs r3, r2 + 8003322: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 8003324: 68fb ldr r3, [r7, #12] + 8003326: f023 0280 bic.w r2, r3, #128 @ 0x80 + 800332a: 683b ldr r3, [r7, #0] + 800332c: 691b ldr r3, [r3, #16] + 800332e: 4313 orrs r3, r2 + 8003330: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 8003332: 683b ldr r3, [r7, #0] + 8003334: 689a ldr r2, [r3, #8] + 8003336: 687b ldr r3, [r7, #4] + 8003338: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 800333a: 683b ldr r3, [r7, #0] + 800333c: 681a ldr r2, [r3, #0] + 800333e: 687b ldr r3, [r7, #4] + 8003340: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 8003342: 687b ldr r3, [r7, #4] + 8003344: 681b ldr r3, [r3, #0] + 8003346: f043 0204 orr.w r2, r3, #4 + 800334a: 687b ldr r3, [r7, #4] + 800334c: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 800334e: 687b ldr r3, [r7, #4] + 8003350: 2201 movs r2, #1 + 8003352: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 8003354: 687b ldr r3, [r7, #4] + 8003356: 68fa ldr r2, [r7, #12] + 8003358: 601a str r2, [r3, #0] +} + 800335a: bf00 nop + 800335c: 3714 adds r7, #20 + 800335e: 46bd mov sp, r7 + 8003360: bc80 pop {r7} + 8003362: 4770 bx lr + 8003364: 40000400 .word 0x40000400 + 8003368: 40000800 .word 0x40000800 + 800336c: 40000c00 .word 0x40000c00 + 8003370: 40010800 .word 0x40010800 + 8003374: 40010c00 .word 0x40010c00 + 8003378: 40011000 .word 0x40011000 + +0800337c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 800337c: b480 push {r7} + 800337e: b087 sub sp, #28 + 8003380: af00 add r7, sp, #0 + 8003382: 6078 str r0, [r7, #4] + 8003384: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003386: 687b ldr r3, [r7, #4] + 8003388: 6a1b ldr r3, [r3, #32] + 800338a: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 800338c: 687b ldr r3, [r7, #4] + 800338e: 6a1b ldr r3, [r3, #32] + 8003390: f023 0201 bic.w r2, r3, #1 + 8003394: 687b ldr r3, [r7, #4] + 8003396: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003398: 687b ldr r3, [r7, #4] + 800339a: 685b ldr r3, [r3, #4] + 800339c: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 800339e: 687b ldr r3, [r7, #4] + 80033a0: 699b ldr r3, [r3, #24] + 80033a2: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 80033a4: 68fb ldr r3, [r7, #12] + 80033a6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80033aa: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 80033ac: 68fb ldr r3, [r7, #12] + 80033ae: f023 0303 bic.w r3, r3, #3 + 80033b2: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 80033b4: 683b ldr r3, [r7, #0] + 80033b6: 681b ldr r3, [r3, #0] + 80033b8: 68fa ldr r2, [r7, #12] + 80033ba: 4313 orrs r3, r2 + 80033bc: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 80033be: 697b ldr r3, [r7, #20] + 80033c0: f023 0302 bic.w r3, r3, #2 + 80033c4: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 80033c6: 683b ldr r3, [r7, #0] + 80033c8: 689b ldr r3, [r3, #8] + 80033ca: 697a ldr r2, [r7, #20] + 80033cc: 4313 orrs r3, r2 + 80033ce: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 80033d0: 687b ldr r3, [r7, #4] + 80033d2: 693a ldr r2, [r7, #16] + 80033d4: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 80033d6: 687b ldr r3, [r7, #4] + 80033d8: 68fa ldr r2, [r7, #12] + 80033da: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 80033dc: 683b ldr r3, [r7, #0] + 80033de: 685a ldr r2, [r3, #4] + 80033e0: 687b ldr r3, [r7, #4] + 80033e2: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80033e4: 687b ldr r3, [r7, #4] + 80033e6: 697a ldr r2, [r7, #20] + 80033e8: 621a str r2, [r3, #32] +} + 80033ea: bf00 nop + 80033ec: 371c adds r7, #28 + 80033ee: 46bd mov sp, r7 + 80033f0: bc80 pop {r7} + 80033f2: 4770 bx lr + +080033f4 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 80033f4: b480 push {r7} + 80033f6: b087 sub sp, #28 + 80033f8: af00 add r7, sp, #0 + 80033fa: 6078 str r0, [r7, #4] + 80033fc: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80033fe: 687b ldr r3, [r7, #4] + 8003400: 6a1b ldr r3, [r3, #32] + 8003402: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8003404: 687b ldr r3, [r7, #4] + 8003406: 6a1b ldr r3, [r3, #32] + 8003408: f023 0210 bic.w r2, r3, #16 + 800340c: 687b ldr r3, [r7, #4] + 800340e: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003410: 687b ldr r3, [r7, #4] + 8003412: 685b ldr r3, [r3, #4] + 8003414: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8003416: 687b ldr r3, [r7, #4] + 8003418: 699b ldr r3, [r3, #24] + 800341a: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 800341c: 68fb ldr r3, [r7, #12] + 800341e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8003422: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8003424: 68fb ldr r3, [r7, #12] + 8003426: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800342a: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 800342c: 683b ldr r3, [r7, #0] + 800342e: 681b ldr r3, [r3, #0] + 8003430: 021b lsls r3, r3, #8 + 8003432: 68fa ldr r2, [r7, #12] + 8003434: 4313 orrs r3, r2 + 8003436: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8003438: 697b ldr r3, [r7, #20] + 800343a: f023 0320 bic.w r3, r3, #32 + 800343e: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8003440: 683b ldr r3, [r7, #0] + 8003442: 689b ldr r3, [r3, #8] + 8003444: 011b lsls r3, r3, #4 + 8003446: 697a ldr r2, [r7, #20] + 8003448: 4313 orrs r3, r2 + 800344a: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800344c: 687b ldr r3, [r7, #4] + 800344e: 693a ldr r2, [r7, #16] + 8003450: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8003452: 687b ldr r3, [r7, #4] + 8003454: 68fa ldr r2, [r7, #12] + 8003456: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8003458: 683b ldr r3, [r7, #0] + 800345a: 685a ldr r2, [r3, #4] + 800345c: 687b ldr r3, [r7, #4] + 800345e: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003460: 687b ldr r3, [r7, #4] + 8003462: 697a ldr r2, [r7, #20] + 8003464: 621a str r2, [r3, #32] +} + 8003466: bf00 nop + 8003468: 371c adds r7, #28 + 800346a: 46bd mov sp, r7 + 800346c: bc80 pop {r7} + 800346e: 4770 bx lr + +08003470 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8003470: b480 push {r7} + 8003472: b087 sub sp, #28 + 8003474: af00 add r7, sp, #0 + 8003476: 6078 str r0, [r7, #4] + 8003478: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 800347a: 687b ldr r3, [r7, #4] + 800347c: 6a1b ldr r3, [r3, #32] + 800347e: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8003480: 687b ldr r3, [r7, #4] + 8003482: 6a1b ldr r3, [r3, #32] + 8003484: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8003488: 687b ldr r3, [r7, #4] + 800348a: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 800348c: 687b ldr r3, [r7, #4] + 800348e: 685b ldr r3, [r3, #4] + 8003490: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8003492: 687b ldr r3, [r7, #4] + 8003494: 69db ldr r3, [r3, #28] + 8003496: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8003498: 68fb ldr r3, [r7, #12] + 800349a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800349e: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 80034a0: 68fb ldr r3, [r7, #12] + 80034a2: f023 0303 bic.w r3, r3, #3 + 80034a6: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 80034a8: 683b ldr r3, [r7, #0] + 80034aa: 681b ldr r3, [r3, #0] + 80034ac: 68fa ldr r2, [r7, #12] + 80034ae: 4313 orrs r3, r2 + 80034b0: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 80034b2: 697b ldr r3, [r7, #20] + 80034b4: f423 7300 bic.w r3, r3, #512 @ 0x200 + 80034b8: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 80034ba: 683b ldr r3, [r7, #0] + 80034bc: 689b ldr r3, [r3, #8] + 80034be: 021b lsls r3, r3, #8 + 80034c0: 697a ldr r2, [r7, #20] + 80034c2: 4313 orrs r3, r2 + 80034c4: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 80034c6: 687b ldr r3, [r7, #4] + 80034c8: 693a ldr r2, [r7, #16] + 80034ca: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 80034cc: 687b ldr r3, [r7, #4] + 80034ce: 68fa ldr r2, [r7, #12] + 80034d0: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 80034d2: 683b ldr r3, [r7, #0] + 80034d4: 685a ldr r2, [r3, #4] + 80034d6: 687b ldr r3, [r7, #4] + 80034d8: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80034da: 687b ldr r3, [r7, #4] + 80034dc: 697a ldr r2, [r7, #20] + 80034de: 621a str r2, [r3, #32] +} + 80034e0: bf00 nop + 80034e2: 371c adds r7, #28 + 80034e4: 46bd mov sp, r7 + 80034e6: bc80 pop {r7} + 80034e8: 4770 bx lr + +080034ea : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 80034ea: b480 push {r7} + 80034ec: b087 sub sp, #28 + 80034ee: af00 add r7, sp, #0 + 80034f0: 6078 str r0, [r7, #4] + 80034f2: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80034f4: 687b ldr r3, [r7, #4] + 80034f6: 6a1b ldr r3, [r3, #32] + 80034f8: 617b str r3, [r7, #20] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 80034fa: 687b ldr r3, [r7, #4] + 80034fc: 6a1b ldr r3, [r3, #32] + 80034fe: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8003502: 687b ldr r3, [r7, #4] + 8003504: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003506: 687b ldr r3, [r7, #4] + 8003508: 685b ldr r3, [r3, #4] + 800350a: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 800350c: 687b ldr r3, [r7, #4] + 800350e: 69db ldr r3, [r3, #28] + 8003510: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8003512: 68fb ldr r3, [r7, #12] + 8003514: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8003518: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 800351a: 68fb ldr r3, [r7, #12] + 800351c: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003520: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8003522: 683b ldr r3, [r7, #0] + 8003524: 681b ldr r3, [r3, #0] + 8003526: 021b lsls r3, r3, #8 + 8003528: 68fa ldr r2, [r7, #12] + 800352a: 4313 orrs r3, r2 + 800352c: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 800352e: 697b ldr r3, [r7, #20] + 8003530: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8003534: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8003536: 683b ldr r3, [r7, #0] + 8003538: 689b ldr r3, [r3, #8] + 800353a: 031b lsls r3, r3, #12 + 800353c: 697a ldr r2, [r7, #20] + 800353e: 4313 orrs r3, r2 + 8003540: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8003542: 687b ldr r3, [r7, #4] + 8003544: 693a ldr r2, [r7, #16] + 8003546: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8003548: 687b ldr r3, [r7, #4] + 800354a: 68fa ldr r2, [r7, #12] + 800354c: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 800354e: 683b ldr r3, [r7, #0] + 8003550: 685a ldr r2, [r3, #4] + 8003552: 687b ldr r3, [r7, #4] + 8003554: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003556: 687b ldr r3, [r7, #4] + 8003558: 697a ldr r2, [r7, #20] + 800355a: 621a str r2, [r3, #32] +} + 800355c: bf00 nop + 800355e: 371c adds r7, #28 + 8003560: 46bd mov sp, r7 + 8003562: bc80 pop {r7} + 8003564: 4770 bx lr + +08003566 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8003566: b480 push {r7} + 8003568: b087 sub sp, #28 + 800356a: af00 add r7, sp, #0 + 800356c: 60f8 str r0, [r7, #12] + 800356e: 60b9 str r1, [r7, #8] + 8003570: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8003572: 68fb ldr r3, [r7, #12] + 8003574: 6a1b ldr r3, [r3, #32] + 8003576: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8003578: 68fb ldr r3, [r7, #12] + 800357a: 6a1b ldr r3, [r3, #32] + 800357c: f023 0201 bic.w r2, r3, #1 + 8003580: 68fb ldr r3, [r7, #12] + 8003582: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8003584: 68fb ldr r3, [r7, #12] + 8003586: 699b ldr r3, [r3, #24] + 8003588: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 800358a: 693b ldr r3, [r7, #16] + 800358c: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8003590: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8003592: 687b ldr r3, [r7, #4] + 8003594: 011b lsls r3, r3, #4 + 8003596: 693a ldr r2, [r7, #16] + 8003598: 4313 orrs r3, r2 + 800359a: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 800359c: 697b ldr r3, [r7, #20] + 800359e: f023 030a bic.w r3, r3, #10 + 80035a2: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 80035a4: 697a ldr r2, [r7, #20] + 80035a6: 68bb ldr r3, [r7, #8] + 80035a8: 4313 orrs r3, r2 + 80035aa: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 80035ac: 68fb ldr r3, [r7, #12] + 80035ae: 693a ldr r2, [r7, #16] + 80035b0: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 80035b2: 68fb ldr r3, [r7, #12] + 80035b4: 697a ldr r2, [r7, #20] + 80035b6: 621a str r2, [r3, #32] +} + 80035b8: bf00 nop + 80035ba: 371c adds r7, #28 + 80035bc: 46bd mov sp, r7 + 80035be: bc80 pop {r7} + 80035c0: 4770 bx lr + +080035c2 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 80035c2: b480 push {r7} + 80035c4: b087 sub sp, #28 + 80035c6: af00 add r7, sp, #0 + 80035c8: 60f8 str r0, [r7, #12] + 80035ca: 60b9 str r1, [r7, #8] + 80035cc: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 80035ce: 68fb ldr r3, [r7, #12] + 80035d0: 6a1b ldr r3, [r3, #32] + 80035d2: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 80035d4: 68fb ldr r3, [r7, #12] + 80035d6: 6a1b ldr r3, [r3, #32] + 80035d8: f023 0210 bic.w r2, r3, #16 + 80035dc: 68fb ldr r3, [r7, #12] + 80035de: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 80035e0: 68fb ldr r3, [r7, #12] + 80035e2: 699b ldr r3, [r3, #24] + 80035e4: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 80035e6: 693b ldr r3, [r7, #16] + 80035e8: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 80035ec: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 80035ee: 687b ldr r3, [r7, #4] + 80035f0: 031b lsls r3, r3, #12 + 80035f2: 693a ldr r2, [r7, #16] + 80035f4: 4313 orrs r3, r2 + 80035f6: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 80035f8: 697b ldr r3, [r7, #20] + 80035fa: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 80035fe: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8003600: 68bb ldr r3, [r7, #8] + 8003602: 011b lsls r3, r3, #4 + 8003604: 697a ldr r2, [r7, #20] + 8003606: 4313 orrs r3, r2 + 8003608: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 800360a: 68fb ldr r3, [r7, #12] + 800360c: 693a ldr r2, [r7, #16] + 800360e: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8003610: 68fb ldr r3, [r7, #12] + 8003612: 697a ldr r2, [r7, #20] + 8003614: 621a str r2, [r3, #32] +} + 8003616: bf00 nop + 8003618: 371c adds r7, #28 + 800361a: 46bd mov sp, r7 + 800361c: bc80 pop {r7} + 800361e: 4770 bx lr + +08003620 : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 8003620: b480 push {r7} + 8003622: b085 sub sp, #20 + 8003624: af00 add r7, sp, #0 + 8003626: 6078 str r0, [r7, #4] + 8003628: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 800362a: 687b ldr r3, [r7, #4] + 800362c: 689b ldr r3, [r3, #8] + 800362e: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8003630: 68fb ldr r3, [r7, #12] + 8003632: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003636: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8003638: 683a ldr r2, [r7, #0] + 800363a: 68fb ldr r3, [r7, #12] + 800363c: 4313 orrs r3, r2 + 800363e: f043 0307 orr.w r3, r3, #7 + 8003642: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8003644: 687b ldr r3, [r7, #4] + 8003646: 68fa ldr r2, [r7, #12] + 8003648: 609a str r2, [r3, #8] +} + 800364a: bf00 nop + 800364c: 3714 adds r7, #20 + 800364e: 46bd mov sp, r7 + 8003650: bc80 pop {r7} + 8003652: 4770 bx lr + +08003654 : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8003654: b480 push {r7} + 8003656: b087 sub sp, #28 + 8003658: af00 add r7, sp, #0 + 800365a: 60f8 str r0, [r7, #12] + 800365c: 60b9 str r1, [r7, #8] + 800365e: 607a str r2, [r7, #4] + 8003660: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8003662: 68fb ldr r3, [r7, #12] + 8003664: 689b ldr r3, [r3, #8] + 8003666: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8003668: 697b ldr r3, [r7, #20] + 800366a: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800366e: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8003670: 683b ldr r3, [r7, #0] + 8003672: 021a lsls r2, r3, #8 + 8003674: 687b ldr r3, [r7, #4] + 8003676: 431a orrs r2, r3 + 8003678: 68bb ldr r3, [r7, #8] + 800367a: 4313 orrs r3, r2 + 800367c: 697a ldr r2, [r7, #20] + 800367e: 4313 orrs r3, r2 + 8003680: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8003682: 68fb ldr r3, [r7, #12] + 8003684: 697a ldr r2, [r7, #20] + 8003686: 609a str r2, [r3, #8] +} + 8003688: bf00 nop + 800368a: 371c adds r7, #28 + 800368c: 46bd mov sp, r7 + 800368e: bc80 pop {r7} + 8003690: 4770 bx lr + +08003692 : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8003692: b480 push {r7} + 8003694: b087 sub sp, #28 + 8003696: af00 add r7, sp, #0 + 8003698: 60f8 str r0, [r7, #12] + 800369a: 60b9 str r1, [r7, #8] + 800369c: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 800369e: 68bb ldr r3, [r7, #8] + 80036a0: f003 031f and.w r3, r3, #31 + 80036a4: 2201 movs r2, #1 + 80036a6: fa02 f303 lsl.w r3, r2, r3 + 80036aa: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 80036ac: 68fb ldr r3, [r7, #12] + 80036ae: 6a1a ldr r2, [r3, #32] + 80036b0: 697b ldr r3, [r7, #20] + 80036b2: 43db mvns r3, r3 + 80036b4: 401a ands r2, r3 + 80036b6: 68fb ldr r3, [r7, #12] + 80036b8: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 80036ba: 68fb ldr r3, [r7, #12] + 80036bc: 6a1a ldr r2, [r3, #32] + 80036be: 68bb ldr r3, [r7, #8] + 80036c0: f003 031f and.w r3, r3, #31 + 80036c4: 6879 ldr r1, [r7, #4] + 80036c6: fa01 f303 lsl.w r3, r1, r3 + 80036ca: 431a orrs r2, r3 + 80036cc: 68fb ldr r3, [r7, #12] + 80036ce: 621a str r2, [r3, #32] +} + 80036d0: bf00 nop + 80036d2: 371c adds r7, #28 + 80036d4: 46bd mov sp, r7 + 80036d6: bc80 pop {r7} + 80036d8: 4770 bx lr + ... + +080036dc : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 80036dc: b480 push {r7} + 80036de: b085 sub sp, #20 + 80036e0: af00 add r7, sp, #0 + 80036e2: 6078 str r0, [r7, #4] + 80036e4: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 80036e6: 687b ldr r3, [r7, #4] + 80036e8: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80036ec: 2b01 cmp r3, #1 + 80036ee: d101 bne.n 80036f4 + 80036f0: 2302 movs r3, #2 + 80036f2: e046 b.n 8003782 + 80036f4: 687b ldr r3, [r7, #4] + 80036f6: 2201 movs r2, #1 + 80036f8: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 80036fc: 687b ldr r3, [r7, #4] + 80036fe: 2202 movs r2, #2 + 8003700: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8003704: 687b ldr r3, [r7, #4] + 8003706: 681b ldr r3, [r3, #0] + 8003708: 685b ldr r3, [r3, #4] + 800370a: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 800370c: 687b ldr r3, [r7, #4] + 800370e: 681b ldr r3, [r3, #0] + 8003710: 689b ldr r3, [r3, #8] + 8003712: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8003714: 68fb ldr r3, [r7, #12] + 8003716: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800371a: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 800371c: 683b ldr r3, [r7, #0] + 800371e: 681b ldr r3, [r3, #0] + 8003720: 68fa ldr r2, [r7, #12] + 8003722: 4313 orrs r3, r2 + 8003724: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8003726: 687b ldr r3, [r7, #4] + 8003728: 681b ldr r3, [r3, #0] + 800372a: 68fa ldr r2, [r7, #12] + 800372c: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 800372e: 687b ldr r3, [r7, #4] + 8003730: 681b ldr r3, [r3, #0] + 8003732: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8003736: d00e beq.n 8003756 + 8003738: 687b ldr r3, [r7, #4] + 800373a: 681b ldr r3, [r3, #0] + 800373c: 4a13 ldr r2, [pc, #76] @ (800378c ) + 800373e: 4293 cmp r3, r2 + 8003740: d009 beq.n 8003756 + 8003742: 687b ldr r3, [r7, #4] + 8003744: 681b ldr r3, [r3, #0] + 8003746: 4a12 ldr r2, [pc, #72] @ (8003790 ) + 8003748: 4293 cmp r3, r2 + 800374a: d004 beq.n 8003756 + 800374c: 687b ldr r3, [r7, #4] + 800374e: 681b ldr r3, [r3, #0] + 8003750: 4a10 ldr r2, [pc, #64] @ (8003794 ) + 8003752: 4293 cmp r3, r2 + 8003754: d10c bne.n 8003770 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8003756: 68bb ldr r3, [r7, #8] + 8003758: f023 0380 bic.w r3, r3, #128 @ 0x80 + 800375c: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 800375e: 683b ldr r3, [r7, #0] + 8003760: 685b ldr r3, [r3, #4] + 8003762: 68ba ldr r2, [r7, #8] + 8003764: 4313 orrs r3, r2 + 8003766: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8003768: 687b ldr r3, [r7, #4] + 800376a: 681b ldr r3, [r3, #0] + 800376c: 68ba ldr r2, [r7, #8] + 800376e: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8003770: 687b ldr r3, [r7, #4] + 8003772: 2201 movs r2, #1 + 8003774: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8003778: 687b ldr r3, [r7, #4] + 800377a: 2200 movs r2, #0 + 800377c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 8003780: 2300 movs r3, #0 +} + 8003782: 4618 mov r0, r3 + 8003784: 3714 adds r7, #20 + 8003786: 46bd mov sp, r7 + 8003788: bc80 pop {r7} + 800378a: 4770 bx lr + 800378c: 40000400 .word 0x40000400 + 8003790: 40000800 .word 0x40000800 + 8003794: 40010800 .word 0x40010800 + +08003798 : + 8003798: 4603 mov r3, r0 + 800379a: 4402 add r2, r0 + 800379c: 4293 cmp r3, r2 + 800379e: d100 bne.n 80037a2 + 80037a0: 4770 bx lr + 80037a2: f803 1b01 strb.w r1, [r3], #1 + 80037a6: e7f9 b.n 800379c + +080037a8 <__libc_init_array>: + 80037a8: b570 push {r4, r5, r6, lr} + 80037aa: 2600 movs r6, #0 + 80037ac: 4d0c ldr r5, [pc, #48] @ (80037e0 <__libc_init_array+0x38>) + 80037ae: 4c0d ldr r4, [pc, #52] @ (80037e4 <__libc_init_array+0x3c>) + 80037b0: 1b64 subs r4, r4, r5 + 80037b2: 10a4 asrs r4, r4, #2 + 80037b4: 42a6 cmp r6, r4 + 80037b6: d109 bne.n 80037cc <__libc_init_array+0x24> + 80037b8: f000 f81a bl 80037f0 <_init> + 80037bc: 2600 movs r6, #0 + 80037be: 4d0a ldr r5, [pc, #40] @ (80037e8 <__libc_init_array+0x40>) + 80037c0: 4c0a ldr r4, [pc, #40] @ (80037ec <__libc_init_array+0x44>) + 80037c2: 1b64 subs r4, r4, r5 + 80037c4: 10a4 asrs r4, r4, #2 + 80037c6: 42a6 cmp r6, r4 + 80037c8: d105 bne.n 80037d6 <__libc_init_array+0x2e> + 80037ca: bd70 pop {r4, r5, r6, pc} + 80037cc: f855 3b04 ldr.w r3, [r5], #4 + 80037d0: 4798 blx r3 + 80037d2: 3601 adds r6, #1 + 80037d4: e7ee b.n 80037b4 <__libc_init_array+0xc> + 80037d6: f855 3b04 ldr.w r3, [r5], #4 + 80037da: 4798 blx r3 + 80037dc: 3601 adds r6, #1 + 80037de: e7f2 b.n 80037c6 <__libc_init_array+0x1e> + 80037e0: 0800383c .word 0x0800383c + 80037e4: 0800383c .word 0x0800383c + 80037e8: 0800383c .word 0x0800383c + 80037ec: 08003840 .word 0x08003840 + +080037f0 <_init>: + 80037f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80037f2: bf00 nop + 80037f4: bcf8 pop {r3, r4, r5, r6, r7} + 80037f6: bc08 pop {r3} + 80037f8: 469e mov lr, r3 + 80037fa: 4770 bx lr + +080037fc <_fini>: + 80037fc: b5f8 push {r3, r4, r5, r6, r7, lr} + 80037fe: bf00 nop + 8003800: bcf8 pop {r3, r4, r5, r6, r7} + 8003802: bc08 pop {r3} + 8003804: 469e mov lr, r3 + 8003806: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.map b/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.map new file mode 100644 index 0000000..c773832 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP3_PWM_MOTOR.map @@ -0,0 +1,3477 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + ./Core/Src/main.o (__aeabi_dmul) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + ./Core/Src/main.o (__aeabi_dadd) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + ./Core/Src/main.o (__aeabi_d2uiz) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x54 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_Delay + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c89 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85b03 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b98 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x85977 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aa7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x08000140 0x36c8 + 0x08000140 . = ALIGN (0x4) + *(.text) + .text 0x08000140 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x08000180 0x254 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + 0x08000180 __aeabi_dmul + 0x08000180 __muldf3 + .text 0x080003d4 0x378 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + 0x080003d4 __aeabi_drsub + 0x080003dc __subdf3 + 0x080003dc __aeabi_dsub + 0x080003e0 __aeabi_dadd + 0x080003e0 __adddf3 + 0x08000658 __aeabi_ui2d + 0x08000658 __floatunsidf + 0x08000678 __floatsidf + 0x08000678 __aeabi_i2d + 0x0800069c __extendsfdf2 + 0x0800069c __aeabi_f2d + 0x080006e0 __aeabi_ul2d + 0x080006e0 __floatundidf + 0x080006f0 __aeabi_l2d + 0x080006f0 __floatdidf + .text 0x0800074c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + 0x0800074c __fixunsdfsi + 0x0800074c __aeabi_d2uiz + .text 0x0800078c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800078c __aeabi_uldivmod + .text 0x080007bc 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080007bc __udivmoddi4 + .text 0x08000abc 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x08000abc __aeabi_ldiv0 + 0x08000abc __aeabi_idiv0 + *(.text*) + .text.affiche 0x08000ac0 0x88 ./Core/Src/main.o + 0x08000ac0 affiche + .text.main 0x08000b48 0x40 ./Core/Src/main.o + 0x08000b48 main + .text.SystemClock_Config + 0x08000b88 0x8c ./Core/Src/main.o + 0x08000b88 SystemClock_Config + .text.MX_SPI1_Init + 0x08000c14 0x6c ./Core/Src/main.o + .text.MX_TIM2_Init + 0x08000c80 0x98 ./Core/Src/main.o + .text.MX_TIM3_Init + 0x08000d18 0x100 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000e18 0xc4 ./Core/Src/main.o + *fill* 0x08000edc 0x4 + .text.HAL_TIM_PeriodElapsedCallback + 0x08000ee0 0xc8 ./Core/Src/main.o + 0x08000ee0 HAL_TIM_PeriodElapsedCallback + .text.Error_Handler + 0x08000fa8 0xc ./Core/Src/main.o + 0x08000fa8 Error_Handler + .text.HAL_MspInit + 0x08000fb4 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000fb4 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08001010 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08001010 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x08001098 0x80 ./Core/Src/stm32l1xx_hal_msp.o + 0x08001098 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08001118 0xac ./Core/Src/stm32l1xx_hal_msp.o + 0x08001118 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x080011c4 0x8 ./Core/Src/stm32l1xx_it.o + 0x080011c4 NMI_Handler + .text.HardFault_Handler + 0x080011cc 0x8 ./Core/Src/stm32l1xx_it.o + 0x080011cc HardFault_Handler + .text.MemManage_Handler + 0x080011d4 0x8 ./Core/Src/stm32l1xx_it.o + 0x080011d4 MemManage_Handler + .text.BusFault_Handler + 0x080011dc 0x8 ./Core/Src/stm32l1xx_it.o + 0x080011dc BusFault_Handler + .text.UsageFault_Handler + 0x080011e4 0x8 ./Core/Src/stm32l1xx_it.o + 0x080011e4 UsageFault_Handler + .text.SVC_Handler + 0x080011ec 0xc ./Core/Src/stm32l1xx_it.o + 0x080011ec SVC_Handler + .text.DebugMon_Handler + 0x080011f8 0xc ./Core/Src/stm32l1xx_it.o + 0x080011f8 DebugMon_Handler + .text.PendSV_Handler + 0x08001204 0xc ./Core/Src/stm32l1xx_it.o + 0x08001204 PendSV_Handler + .text.SysTick_Handler + 0x08001210 0xc ./Core/Src/stm32l1xx_it.o + 0x08001210 SysTick_Handler + .text.TIM2_IRQHandler + 0x0800121c 0x14 ./Core/Src/stm32l1xx_it.o + 0x0800121c TIM2_IRQHandler + .text.TIM3_IRQHandler + 0x08001230 0x14 ./Core/Src/stm32l1xx_it.o + 0x08001230 TIM3_IRQHandler + .text.EXTI15_10_IRQHandler + 0x08001244 0x18 ./Core/Src/stm32l1xx_it.o + 0x08001244 EXTI15_10_IRQHandler + .text.SystemInit + 0x0800125c 0xc ./Core/Src/system_stm32l1xx.o + 0x0800125c SystemInit + .text.Reset_Handler + 0x08001268 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08001268 Reset_Handler + .text.Default_Handler + 0x080012b0 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x080012b0 DMA2_Channel3_IRQHandler + 0x080012b0 EXTI2_IRQHandler + 0x080012b0 COMP_ACQ_IRQHandler + 0x080012b0 TIM10_IRQHandler + 0x080012b0 USB_HP_IRQHandler + 0x080012b0 TIM6_IRQHandler + 0x080012b0 PVD_IRQHandler + 0x080012b0 EXTI3_IRQHandler + 0x080012b0 EXTI0_IRQHandler + 0x080012b0 I2C2_EV_IRQHandler + 0x080012b0 SPI1_IRQHandler + 0x080012b0 USB_FS_WKUP_IRQHandler + 0x080012b0 DMA2_Channel2_IRQHandler + 0x080012b0 DMA1_Channel4_IRQHandler + 0x080012b0 ADC1_IRQHandler + 0x080012b0 USART3_IRQHandler + 0x080012b0 DMA1_Channel7_IRQHandler + 0x080012b0 LCD_IRQHandler + 0x080012b0 UART5_IRQHandler + 0x080012b0 TIM4_IRQHandler + 0x080012b0 DMA2_Channel1_IRQHandler + 0x080012b0 I2C1_EV_IRQHandler + 0x080012b0 DMA1_Channel6_IRQHandler + 0x080012b0 UART4_IRQHandler + 0x080012b0 DMA2_Channel4_IRQHandler + 0x080012b0 RCC_IRQHandler + 0x080012b0 DMA1_Channel1_IRQHandler + 0x080012b0 Default_Handler + 0x080012b0 TIM7_IRQHandler + 0x080012b0 TIM5_IRQHandler + 0x080012b0 EXTI9_5_IRQHandler + 0x080012b0 TIM9_IRQHandler + 0x080012b0 TAMPER_STAMP_IRQHandler + 0x080012b0 RTC_WKUP_IRQHandler + 0x080012b0 SPI2_IRQHandler + 0x080012b0 DMA2_Channel5_IRQHandler + 0x080012b0 DMA1_Channel5_IRQHandler + 0x080012b0 USB_LP_IRQHandler + 0x080012b0 EXTI4_IRQHandler + 0x080012b0 DMA1_Channel3_IRQHandler + 0x080012b0 COMP_IRQHandler + 0x080012b0 WWDG_IRQHandler + 0x080012b0 DAC_IRQHandler + 0x080012b0 EXTI1_IRQHandler + 0x080012b0 TIM11_IRQHandler + 0x080012b0 USART2_IRQHandler + 0x080012b0 I2C2_ER_IRQHandler + 0x080012b0 DMA1_Channel2_IRQHandler + 0x080012b0 FLASH_IRQHandler + 0x080012b0 USART1_IRQHandler + 0x080012b0 SPI3_IRQHandler + 0x080012b0 I2C1_ER_IRQHandler + 0x080012b0 RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x080012b2 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x080012b2 MAX7219_Init + .text.MAX7219_ShutdownStop + 0x080012dc 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x080012dc MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x080012ec 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x080012ec MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x080012fc 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x080012fc MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08001320 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08001320 MAX7219_Clear + .text.MAX7219_DisplayChar + 0x0800134c 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x0800134c MAX7219_DisplayChar + .text.MAX7219_Write + 0x08001378 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08001378 MAX7219_Write + .text.MAX7219_SendByte + 0x080013b4 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x080013d8 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x080013d8 HAL_Init + .text.HAL_InitTick + 0x08001408 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08001408 HAL_InitTick + .text.HAL_IncTick + 0x0800147c 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x0800147c HAL_IncTick + .text.HAL_GetTick + 0x080014a0 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x080014a0 HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x080014b4 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x080014fc 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08001518 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08001550 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x080015a4 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08001608 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x0800164c 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x0800164c HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08001662 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08001662 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x0800169a 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x0800169a HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x080016b6 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x080016b6 HAL_SYSTICK_Config + *fill* 0x080016ce 0x2 + .text.HAL_GPIO_Init + 0x080016d0 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x080016d0 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x080019f0 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x080019f0 HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x08001a20 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001a20 HAL_GPIO_EXTI_IRQHandler + .text.HAL_GPIO_EXTI_Callback + 0x08001a50 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001a50 HAL_GPIO_EXTI_Callback + .text.HAL_RCC_OscConfig + 0x08001a64 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001a64 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x080020c4 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080020c4 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x0800232c 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x0800232c HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x080024a8 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08002568 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08002568 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x0800267a 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x0800267a HAL_SPI_Transmit + *fill* 0x08002902 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08002904 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08002a14 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x08002abc 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002abc HAL_TIM_Base_Init + *fill* 0x08002b3a 0x2 + .text.HAL_TIM_Base_Start_IT + 0x08002b3c 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002b3c HAL_TIM_Base_Start_IT + .text.HAL_TIM_PWM_Init + 0x08002be0 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002be0 HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x08002c5e 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c5e HAL_TIM_PWM_MspInit + .text.HAL_TIM_PWM_Start + 0x08002c70 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002c70 HAL_TIM_PWM_Start + .text.HAL_TIM_IRQHandler + 0x08002d9c 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002d9c HAL_TIM_IRQHandler + .text.HAL_TIM_PWM_ConfigChannel + 0x08002f34 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002f34 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x080030b8 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080030b8 HAL_TIM_ConfigClockSource + .text.HAL_TIM_OC_DelayElapsedCallback + 0x08003246 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08003246 HAL_TIM_OC_DelayElapsedCallback + .text.HAL_TIM_IC_CaptureCallback + 0x08003258 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08003258 HAL_TIM_IC_CaptureCallback + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x0800326a 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800326a HAL_TIM_PWM_PulseFinishedCallback + .text.HAL_TIM_TriggerCallback + 0x0800327c 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800327c HAL_TIM_TriggerCallback + *fill* 0x0800328e 0x2 + .text.TIM_Base_SetConfig + 0x08003290 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x0800337c 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x080033f4 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x08003470 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x080034ea 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08003566 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x080035c2 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08003620 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08003654 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x08003692 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + *fill* 0x080036da 0x2 + .text.HAL_TIMEx_MasterConfigSynchronization + 0x080036dc 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x080036dc HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x08003798 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08003798 memset + .text.__libc_init_array + 0x080037a8 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x080037a8 __libc_init_array + *(.glue_7) + .glue_7 0x080037f0 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x080037f0 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x080037f0 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x080037f0 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x080037f0 _init + .init 0x080037f4 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x080037fc 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x080037fc _fini + .fini 0x08003800 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08003808 . = ALIGN (0x4) + 0x08003808 _etext = . + +.vfp11_veneer 0x08003808 0x0 + .vfp11_veneer 0x08003808 0x0 linker stubs + +.v4_bx 0x08003808 0x0 + .v4_bx 0x08003808 0x0 linker stubs + +.iplt 0x08003808 0x0 + .iplt 0x08003808 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08003808 0x2c + 0x08003808 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x08003808 0x9 ./Core/Src/system_stm32l1xx.o + 0x08003808 PLLMulTable + *fill* 0x08003811 0x3 + .rodata.AHBPrescTable + 0x08003814 0x10 ./Core/Src/system_stm32l1xx.o + 0x08003814 AHBPrescTable + .rodata.conv_7seg + 0x08003824 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08003824 conv_7seg + 0x08003834 . = ALIGN (0x4) + +.ARM.extab 0x08003834 0x0 + 0x08003834 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08003834 . = ALIGN (0x4) + +.ARM 0x08003834 0x8 + 0x08003834 . = ALIGN (0x4) + 0x08003834 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08003834 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x0800383c __exidx_end = . + 0x0800383c . = ALIGN (0x4) + +.preinit_array 0x0800383c 0x0 + 0x0800383c . = ALIGN (0x4) + 0x0800383c PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x0800383c PROVIDE (__preinit_array_end = .) + 0x0800383c . = ALIGN (0x4) + +.init_array 0x0800383c 0x4 + 0x0800383c . = ALIGN (0x4) + 0x0800383c PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x0800383c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08003840 PROVIDE (__init_array_end = .) + 0x08003840 . = ALIGN (0x4) + +.fini_array 0x08003840 0x4 + 0x08003840 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08003840 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08003844 . = ALIGN (0x4) + 0x08003844 _sidata = LOADADDR (.data) + +.rel.dyn 0x08003844 0x0 + .rel.iplt 0x08003844 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0x10 load address 0x08003844 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.sens 0x20000000 0x1 ./Core/Src/main.o + 0x20000000 sens + *fill* 0x20000001 0x3 + .data.SystemCoreClock + 0x20000004 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000004 SystemCoreClock + .data.uwTickPrio + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickPrio + .data.uwTickFreq + 0x2000000c 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x2000000c uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x20000010 . = ALIGN (0x4) + 0x20000010 _edata = . + +.igot.plt 0x20000010 0x0 load address 0x08003854 + .igot.plt 0x20000010 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x20000010 . = ALIGN (0x4) + +.bss 0x20000010 0xfc load address 0x08003854 + 0x20000010 _sbss = . + 0x20000010 __bss_start__ = _sbss + *(.bss) + .bss 0x20000010 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x2000002c 0x58 ./Core/Src/main.o + 0x2000002c hspi1 + .bss.htim2 0x20000084 0x40 ./Core/Src/main.o + 0x20000084 htim2 + .bss.htim3 0x200000c4 0x40 ./Core/Src/main.o + 0x200000c4 htim3 + .bss.angle 0x20000104 0x1 ./Core/Src/main.o + 0x20000104 angle + *fill* 0x20000105 0x3 + .bss.uwTick 0x20000108 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000108 uwTick + *(COMMON) + 0x2000010c . = ALIGN (0x4) + 0x2000010c _ebss = . + 0x2000010c __bss_end__ = _ebss + +._user_heap_stack + 0x2000010c 0x604 load address 0x08003854 + 0x20000110 . = ALIGN (0x8) + *fill* 0x2000010c 0x4 + [!provide] PROVIDE (end = .) + 0x20000110 PROVIDE (_end = .) + 0x20000310 . = (. + _Min_Heap_Size) + *fill* 0x20000110 0x200 + 0x20000710 . = (. + _Min_Stack_Size) + *fill* 0x20000310 0x400 + 0x20000710 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + .ARM.attributes + 0x000002fe 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + .ARM.attributes + 0x0000031b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + .ARM.attributes + 0x00000338 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x00000355 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x00000382 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x0000039f 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP3_PWM_MOTOR.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x9912 + .debug_info 0x00000000 0x12e3 ./Core/Src/main.o + .debug_info 0x000012e3 0xe30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00002113 0x6d6 ./Core/Src/stm32l1xx_it.o + .debug_info 0x000027e9 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x00002a65 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x00002a95 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x000032a3 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x00003992 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x00004677 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00004c29 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x000055c4 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x00006a9d 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x0000926a 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x19e3 + .debug_abbrev 0x00000000 0x30b ./Core/Src/main.o + .debug_abbrev 0x0000030b 0x1c2 ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x000004cd 0x190 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x0000065d 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x00000779 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x0000079d 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000986 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000bfb 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000f17 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x000010eb 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x000013a3 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x0000161d 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x0000187b 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xaa0 + .debug_aranges + 0x00000000 0x60 ./Core/Src/main.o + .debug_aranges + 0x00000060 0x48 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x000000a8 0x78 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000120 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000148 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000170 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001e8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002c8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003f0 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000448 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004d8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x000006a8 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a78 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x812 + .debug_rnglists + 0x00000000 0x49 ./Core/Src/main.o + .debug_rnglists + 0x00000049 0x34 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x0000007d 0x55 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000d2 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000ec 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x00000105 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000015a 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001fd 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002d6 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x00000315 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000382 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004f1 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x000007f8 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xaade + .debug_line 0x00000000 0x935 ./Core/Src/main.o + .debug_line 0x00000935 0x7ad ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x000010e2 0x7b8 ./Core/Src/stm32l1xx_it.o + .debug_line 0x0000189a 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001ffb 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00002074 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002883 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x0000320f 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003e6a 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x0000483a 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x00005789 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x000073d4 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a385 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x886db + .debug_str 0x00000000 0x886db ./Core/Src/main.o + 0x86825 (size before relaxing) + .debug_str 0x000886db 0x863df ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x000886db 0x85ded ./Core/Src/stm32l1xx_it.o + .debug_str 0x000886db 0x85904 ./Core/Src/system_stm32l1xx.o + .debug_str 0x000886db 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x000886db 0x85e60 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x000886db 0x8602c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x000886db 0x86138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x000886db 0x85a97 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x000886db 0x85dc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x000886db 0x86226 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x000886db 0x86c07 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x000886db 0x85dac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2cec + .debug_frame 0x00000000 0x13c ./Core/Src/main.o + .debug_frame 0x0000013c 0xec ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x00000228 0x158 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000380 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x000003d8 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000570 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x000008ac 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000d94 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000ee0 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x00001104 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x0000192c 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002ae0 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002b40 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002b60 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002b8c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_muldf3.o) + .debug_frame 0x00002bbc 0xac /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_addsubdf3.o) + .debug_frame 0x00002c68 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_arm_fixunsdfsi.o) + .debug_frame 0x00002c8c 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002cb8 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP4_GAMME.list b/TP4_INIT_TFT/Debug/TP4_GAMME.list new file mode 100644 index 0000000..512837e --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_GAMME.list @@ -0,0 +1,8029 @@ + +TP4_GAMME.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00002d68 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000002c 08002ea4 08002ea4 00003ea4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08002ed0 08002ed0 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08002ed0 08002ed0 00003ed0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 08002ed8 08002ed8 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08002ed8 08002ed8 00003ed8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08002edc 08002edc 00003edc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 08002ee0 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000000b8 2000000c 08002eec 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 200000c4 08002eec 000040c4 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 000090ef 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000018df 00000000 00000000 0000d124 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000ab0 00000000 00000000 0000ea08 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 0000081a 00000000 00000000 0000f4b8 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 0000fcd2 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000aad6 00000000 00000000 000252cb 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 0008863a 00000000 00000000 0002fda1 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b83db 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002c14 00000000 00000000 000b8420 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000bb034 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 08002e8c .word 0x08002e8c + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 08002e8c .word 0x08002e8c + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void DO() { + 80004b0: b580 push {r7, lr} + 80004b2: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 0); + 80004b4: 2100 movs r1, #0 + 80004b6: 2004 movs r0, #4 + 80004b8: f000 fbb6 bl 8000c28 + TIM3->PSC = ((16000000/524)/1600) - 1; + 80004bc: 4b02 ldr r3, [pc, #8] @ (80004c8 ) + 80004be: 2212 movs r2, #18 + 80004c0: 629a str r2, [r3, #40] @ 0x28 +} + 80004c2: bf00 nop + 80004c4: bd80 pop {r7, pc} + 80004c6: bf00 nop + 80004c8: 40000400 .word 0x40000400 + +080004cc : + +void RE() { + 80004cc: b580 push {r7, lr} + 80004ce: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 1); + 80004d0: 2101 movs r1, #1 + 80004d2: 2004 movs r0, #4 + 80004d4: f000 fba8 bl 8000c28 + TIM3->PSC = ((16000000/587)/1600) - 1; + 80004d8: 4b02 ldr r3, [pc, #8] @ (80004e4 ) + 80004da: 2210 movs r2, #16 + 80004dc: 629a str r2, [r3, #40] @ 0x28 +} + 80004de: bf00 nop + 80004e0: bd80 pop {r7, pc} + 80004e2: bf00 nop + 80004e4: 40000400 .word 0x40000400 + +080004e8 : + +void MI() { + 80004e8: b580 push {r7, lr} + 80004ea: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 2); + 80004ec: 2102 movs r1, #2 + 80004ee: 2004 movs r0, #4 + 80004f0: f000 fb9a bl 8000c28 + TIM3->PSC = ((16000000/662)/1600) - 1; + 80004f4: 4b02 ldr r3, [pc, #8] @ (8000500 ) + 80004f6: 220e movs r2, #14 + 80004f8: 629a str r2, [r3, #40] @ 0x28 +} + 80004fa: bf00 nop + 80004fc: bd80 pop {r7, pc} + 80004fe: bf00 nop + 8000500: 40000400 .word 0x40000400 + +08000504 : + +void FA() { + 8000504: b580 push {r7, lr} + 8000506: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 3); + 8000508: 2103 movs r1, #3 + 800050a: 2004 movs r0, #4 + 800050c: f000 fb8c bl 8000c28 + TIM3->PSC = ((16000000/701)/1600) - 1; + 8000510: 4b02 ldr r3, [pc, #8] @ (800051c ) + 8000512: 220d movs r2, #13 + 8000514: 629a str r2, [r3, #40] @ 0x28 +} + 8000516: bf00 nop + 8000518: bd80 pop {r7, pc} + 800051a: bf00 nop + 800051c: 40000400 .word 0x40000400 + +08000520 : + +void SOL() { + 8000520: b580 push {r7, lr} + 8000522: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 4); + 8000524: 2104 movs r1, #4 + 8000526: 2004 movs r0, #4 + 8000528: f000 fb7e bl 8000c28 + TIM3->PSC = ((16000000/787)/1600) - 1; + 800052c: 4b02 ldr r3, [pc, #8] @ (8000538 ) + 800052e: 220b movs r2, #11 + 8000530: 629a str r2, [r3, #40] @ 0x28 +} + 8000532: bf00 nop + 8000534: bd80 pop {r7, pc} + 8000536: bf00 nop + 8000538: 40000400 .word 0x40000400 + +0800053c : + +void LA() { + 800053c: b580 push {r7, lr} + 800053e: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 5); + 8000540: 2105 movs r1, #5 + 8000542: 2004 movs r0, #4 + 8000544: f000 fb70 bl 8000c28 + TIM3->PSC = ((16000000/878)/1600) - 1; + 8000548: 4b02 ldr r3, [pc, #8] @ (8000554 ) + 800054a: 220a movs r2, #10 + 800054c: 629a str r2, [r3, #40] @ 0x28 +} + 800054e: bf00 nop + 8000550: bd80 pop {r7, pc} + 8000552: bf00 nop + 8000554: 40000400 .word 0x40000400 + +08000558 : + +void SI() { + 8000558: b580 push {r7, lr} + 800055a: af00 add r7, sp, #0 + MAX7219_DisplayChar(4, 6); + 800055c: 2106 movs r1, #6 + 800055e: 2004 movs r0, #4 + 8000560: f000 fb62 bl 8000c28 + TIM3->PSC = ((16000000/1004)/1600) - 1; + 8000564: 4b02 ldr r3, [pc, #8] @ (8000570 ) + 8000566: 2208 movs r2, #8 + 8000568: 629a str r2, [r3, #40] @ 0x28 +} + 800056a: bf00 nop + 800056c: bd80 pop {r7, pc} + 800056e: bf00 nop + 8000570: 40000400 .word 0x40000400 + +08000574
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 8000574: b580 push {r7, lr} + 8000576: b082 sub sp, #8 + 8000578: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 800057a: f000 fb9b bl 8000cb4 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 800057e: f000 f85f bl 8000640 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 8000582: f000 f94d bl 8000820 + MX_SPI1_Init(); + 8000586: f000 f8a1 bl 80006cc + MX_TIM3_Init(); + 800058a: f000 f8d5 bl 8000738 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 800058e: f000 fafe bl 8000b8e + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + 8000592: 2100 movs r1, #0 + 8000594: 4829 ldr r0, [pc, #164] @ (800063c ) + 8000596: f001 ffa9 bl 80024ec + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 800059a: f000 fb2f bl 8000bfc + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + for (int i = 0; i < 7; i++) { + 800059e: 2300 movs r3, #0 + 80005a0: 607b str r3, [r7, #4] + 80005a2: e047 b.n 8000634 + if (i == 0) { // DO + 80005a4: 687b ldr r3, [r7, #4] + 80005a6: 2b00 cmp r3, #0 + 80005a8: d106 bne.n 80005b8 + DO(); + 80005aa: f7ff ff81 bl 80004b0 + HAL_Delay(500); + 80005ae: f44f 70fa mov.w r0, #500 @ 0x1f4 + 80005b2: f000 fbed bl 8000d90 + 80005b6: e03a b.n 800062e + } else if (i == 1) { // RE + 80005b8: 687b ldr r3, [r7, #4] + 80005ba: 2b01 cmp r3, #1 + 80005bc: d106 bne.n 80005cc + RE(); + 80005be: f7ff ff85 bl 80004cc + HAL_Delay(500); + 80005c2: f44f 70fa mov.w r0, #500 @ 0x1f4 + 80005c6: f000 fbe3 bl 8000d90 + 80005ca: e030 b.n 800062e + } else if (i == 2) { // MI + 80005cc: 687b ldr r3, [r7, #4] + 80005ce: 2b02 cmp r3, #2 + 80005d0: d106 bne.n 80005e0 + MI(); + 80005d2: f7ff ff89 bl 80004e8 + HAL_Delay(500); + 80005d6: f44f 70fa mov.w r0, #500 @ 0x1f4 + 80005da: f000 fbd9 bl 8000d90 + 80005de: e026 b.n 800062e + } else if (i == 3) { // FA + 80005e0: 687b ldr r3, [r7, #4] + 80005e2: 2b03 cmp r3, #3 + 80005e4: d106 bne.n 80005f4 + FA(); + 80005e6: f7ff ff8d bl 8000504 + HAL_Delay(500); + 80005ea: f44f 70fa mov.w r0, #500 @ 0x1f4 + 80005ee: f000 fbcf bl 8000d90 + 80005f2: e01c b.n 800062e + } else if (i == 4) { // SOL + 80005f4: 687b ldr r3, [r7, #4] + 80005f6: 2b04 cmp r3, #4 + 80005f8: d106 bne.n 8000608 + SOL(); + 80005fa: f7ff ff91 bl 8000520 + HAL_Delay(500); + 80005fe: f44f 70fa mov.w r0, #500 @ 0x1f4 + 8000602: f000 fbc5 bl 8000d90 + 8000606: e012 b.n 800062e + } else if (i == 5) { // LA + 8000608: 687b ldr r3, [r7, #4] + 800060a: 2b05 cmp r3, #5 + 800060c: d106 bne.n 800061c + LA(); + 800060e: f7ff ff95 bl 800053c + HAL_Delay(500); + 8000612: f44f 70fa mov.w r0, #500 @ 0x1f4 + 8000616: f000 fbbb bl 8000d90 + 800061a: e008 b.n 800062e + } else if (i == 6) { // SI + 800061c: 687b ldr r3, [r7, #4] + 800061e: 2b06 cmp r3, #6 + 8000620: d105 bne.n 800062e + SI(); + 8000622: f7ff ff99 bl 8000558 + HAL_Delay(500); + 8000626: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800062a: f000 fbb1 bl 8000d90 + for (int i = 0; i < 7; i++) { + 800062e: 687b ldr r3, [r7, #4] + 8000630: 3301 adds r3, #1 + 8000632: 607b str r3, [r7, #4] + 8000634: 687b ldr r3, [r7, #4] + 8000636: 2b06 cmp r3, #6 + 8000638: ddb4 ble.n 80005a4 + 800063a: e7b0 b.n 800059e + 800063c: 20000080 .word 0x20000080 + +08000640 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000640: b580 push {r7, lr} + 8000642: b092 sub sp, #72 @ 0x48 + 8000644: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000646: f107 0314 add.w r3, r7, #20 + 800064a: 2234 movs r2, #52 @ 0x34 + 800064c: 2100 movs r1, #0 + 800064e: 4618 mov r0, r3 + 8000650: f002 fbf0 bl 8002e34 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000654: 463b mov r3, r7 + 8000656: 2200 movs r2, #0 + 8000658: 601a str r2, [r3, #0] + 800065a: 605a str r2, [r3, #4] + 800065c: 609a str r2, [r3, #8] + 800065e: 60da str r2, [r3, #12] + 8000660: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000662: 4b19 ldr r3, [pc, #100] @ (80006c8 ) + 8000664: 681b ldr r3, [r3, #0] + 8000666: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 800066a: 4a17 ldr r2, [pc, #92] @ (80006c8 ) + 800066c: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000670: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000672: 2302 movs r3, #2 + 8000674: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000676: 2301 movs r3, #1 + 8000678: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 800067a: 2310 movs r3, #16 + 800067c: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 800067e: 2300 movs r3, #0 + 8000680: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000682: f107 0314 add.w r3, r7, #20 + 8000686: 4618 mov r0, r3 + 8000688: f000 fe7c bl 8001384 + 800068c: 4603 mov r3, r0 + 800068e: 2b00 cmp r3, #0 + 8000690: d001 beq.n 8000696 + { + Error_Handler(); + 8000692: f000 f94b bl 800092c + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000696: 230f movs r3, #15 + 8000698: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 800069a: 2301 movs r3, #1 + 800069c: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800069e: 2300 movs r3, #0 + 80006a0: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80006a2: 2300 movs r3, #0 + 80006a4: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80006a6: 2300 movs r3, #0 + 80006a8: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 80006aa: 463b mov r3, r7 + 80006ac: 2100 movs r1, #0 + 80006ae: 4618 mov r0, r3 + 80006b0: f001 f998 bl 80019e4 + 80006b4: 4603 mov r3, r0 + 80006b6: 2b00 cmp r3, #0 + 80006b8: d001 beq.n 80006be + { + Error_Handler(); + 80006ba: f000 f937 bl 800092c + } +} + 80006be: bf00 nop + 80006c0: 3748 adds r7, #72 @ 0x48 + 80006c2: 46bd mov sp, r7 + 80006c4: bd80 pop {r7, pc} + 80006c6: bf00 nop + 80006c8: 40007000 .word 0x40007000 + +080006cc : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 80006cc: b580 push {r7, lr} + 80006ce: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 80006d0: 4b17 ldr r3, [pc, #92] @ (8000730 ) + 80006d2: 4a18 ldr r2, [pc, #96] @ (8000734 ) + 80006d4: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 80006d6: 4b16 ldr r3, [pc, #88] @ (8000730 ) + 80006d8: f44f 7282 mov.w r2, #260 @ 0x104 + 80006dc: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 80006de: 4b14 ldr r3, [pc, #80] @ (8000730 ) + 80006e0: 2200 movs r2, #0 + 80006e2: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80006e4: 4b12 ldr r3, [pc, #72] @ (8000730 ) + 80006e6: 2200 movs r2, #0 + 80006e8: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 80006ea: 4b11 ldr r3, [pc, #68] @ (8000730 ) + 80006ec: 2200 movs r2, #0 + 80006ee: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 80006f0: 4b0f ldr r3, [pc, #60] @ (8000730 ) + 80006f2: 2200 movs r2, #0 + 80006f4: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 80006f6: 4b0e ldr r3, [pc, #56] @ (8000730 ) + 80006f8: f44f 7200 mov.w r2, #512 @ 0x200 + 80006fc: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 80006fe: 4b0c ldr r3, [pc, #48] @ (8000730 ) + 8000700: 2200 movs r2, #0 + 8000702: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 8000704: 4b0a ldr r3, [pc, #40] @ (8000730 ) + 8000706: 2200 movs r2, #0 + 8000708: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 800070a: 4b09 ldr r3, [pc, #36] @ (8000730 ) + 800070c: 2200 movs r2, #0 + 800070e: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8000710: 4b07 ldr r3, [pc, #28] @ (8000730 ) + 8000712: 2200 movs r2, #0 + 8000714: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 8000716: 4b06 ldr r3, [pc, #24] @ (8000730 ) + 8000718: 220a movs r2, #10 + 800071a: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 800071c: 4804 ldr r0, [pc, #16] @ (8000730 ) + 800071e: f001 fbb3 bl 8001e88 + 8000722: 4603 mov r3, r0 + 8000724: 2b00 cmp r3, #0 + 8000726: d001 beq.n 800072c + { + Error_Handler(); + 8000728: f000 f900 bl 800092c + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 800072c: bf00 nop + 800072e: bd80 pop {r7, pc} + 8000730: 20000028 .word 0x20000028 + 8000734: 40013000 .word 0x40013000 + +08000738 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 8000738: b580 push {r7, lr} + 800073a: b08a sub sp, #40 @ 0x28 + 800073c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800073e: f107 0318 add.w r3, r7, #24 + 8000742: 2200 movs r2, #0 + 8000744: 601a str r2, [r3, #0] + 8000746: 605a str r2, [r3, #4] + 8000748: 609a str r2, [r3, #8] + 800074a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800074c: f107 0310 add.w r3, r7, #16 + 8000750: 2200 movs r2, #0 + 8000752: 601a str r2, [r3, #0] + 8000754: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000756: 463b mov r3, r7 + 8000758: 2200 movs r2, #0 + 800075a: 601a str r2, [r3, #0] + 800075c: 605a str r2, [r3, #4] + 800075e: 609a str r2, [r3, #8] + 8000760: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 8000762: 4b2d ldr r3, [pc, #180] @ (8000818 ) + 8000764: 4a2d ldr r2, [pc, #180] @ (800081c ) + 8000766: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 19-1; + 8000768: 4b2b ldr r3, [pc, #172] @ (8000818 ) + 800076a: 2212 movs r2, #18 + 800076c: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 800076e: 4b2a ldr r3, [pc, #168] @ (8000818 ) + 8000770: 2200 movs r2, #0 + 8000772: 609a str r2, [r3, #8] + htim3.Init.Period = 1600-1; + 8000774: 4b28 ldr r3, [pc, #160] @ (8000818 ) + 8000776: f240 623f movw r2, #1599 @ 0x63f + 800077a: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 800077c: 4b26 ldr r3, [pc, #152] @ (8000818 ) + 800077e: 2200 movs r2, #0 + 8000780: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 8000782: 4b25 ldr r3, [pc, #148] @ (8000818 ) + 8000784: 2280 movs r2, #128 @ 0x80 + 8000786: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 8000788: 4823 ldr r0, [pc, #140] @ (8000818 ) + 800078a: f001 fe27 bl 80023dc + 800078e: 4603 mov r3, r0 + 8000790: 2b00 cmp r3, #0 + 8000792: d001 beq.n 8000798 + { + Error_Handler(); + 8000794: f000 f8ca bl 800092c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000798: f44f 5380 mov.w r3, #4096 @ 0x1000 + 800079c: 61bb str r3, [r7, #24] + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 800079e: f107 0318 add.w r3, r7, #24 + 80007a2: 4619 mov r1, r3 + 80007a4: 481c ldr r0, [pc, #112] @ (8000818 ) + 80007a6: f001 fff9 bl 800279c + 80007aa: 4603 mov r3, r0 + 80007ac: 2b00 cmp r3, #0 + 80007ae: d001 beq.n 80007b4 + { + Error_Handler(); + 80007b0: f000 f8bc bl 800092c + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 80007b4: 4818 ldr r0, [pc, #96] @ (8000818 ) + 80007b6: f001 fe50 bl 800245a + 80007ba: 4603 mov r3, r0 + 80007bc: 2b00 cmp r3, #0 + 80007be: d001 beq.n 80007c4 + { + Error_Handler(); + 80007c0: f000 f8b4 bl 800092c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 80007c4: 2300 movs r3, #0 + 80007c6: 613b str r3, [r7, #16] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 80007c8: 2300 movs r3, #0 + 80007ca: 617b str r3, [r7, #20] + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 80007cc: f107 0310 add.w r3, r7, #16 + 80007d0: 4619 mov r1, r3 + 80007d2: 4811 ldr r0, [pc, #68] @ (8000818 ) + 80007d4: f002 fad0 bl 8002d78 + 80007d8: 4603 mov r3, r0 + 80007da: 2b00 cmp r3, #0 + 80007dc: d001 beq.n 80007e2 + { + Error_Handler(); + 80007de: f000 f8a5 bl 800092c + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80007e2: 2360 movs r3, #96 @ 0x60 + 80007e4: 603b str r3, [r7, #0] + sConfigOC.Pulse = 800-1; + 80007e6: f240 331f movw r3, #799 @ 0x31f + 80007ea: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 80007ec: 2300 movs r3, #0 + 80007ee: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 80007f0: 2300 movs r3, #0 + 80007f2: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 80007f4: 463b mov r3, r7 + 80007f6: 2200 movs r2, #0 + 80007f8: 4619 mov r1, r3 + 80007fa: 4807 ldr r0, [pc, #28] @ (8000818 ) + 80007fc: f001 ff0c bl 8002618 + 8000800: 4603 mov r3, r0 + 8000802: 2b00 cmp r3, #0 + 8000804: d001 beq.n 800080a + { + Error_Handler(); + 8000806: f000 f891 bl 800092c + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 800080a: 4803 ldr r0, [pc, #12] @ (8000818 ) + 800080c: f000 f924 bl 8000a58 + +} + 8000810: bf00 nop + 8000812: 3728 adds r7, #40 @ 0x28 + 8000814: 46bd mov sp, r7 + 8000816: bd80 pop {r7, pc} + 8000818: 20000080 .word 0x20000080 + 800081c: 40000400 .word 0x40000400 + +08000820 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000820: b580 push {r7, lr} + 8000822: b088 sub sp, #32 + 8000824: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000826: f107 030c add.w r3, r7, #12 + 800082a: 2200 movs r2, #0 + 800082c: 601a str r2, [r3, #0] + 800082e: 605a str r2, [r3, #4] + 8000830: 609a str r2, [r3, #8] + 8000832: 60da str r2, [r3, #12] + 8000834: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000836: 4b39 ldr r3, [pc, #228] @ (800091c ) + 8000838: 69db ldr r3, [r3, #28] + 800083a: 4a38 ldr r2, [pc, #224] @ (800091c ) + 800083c: f043 0304 orr.w r3, r3, #4 + 8000840: 61d3 str r3, [r2, #28] + 8000842: 4b36 ldr r3, [pc, #216] @ (800091c ) + 8000844: 69db ldr r3, [r3, #28] + 8000846: f003 0304 and.w r3, r3, #4 + 800084a: 60bb str r3, [r7, #8] + 800084c: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800084e: 4b33 ldr r3, [pc, #204] @ (800091c ) + 8000850: 69db ldr r3, [r3, #28] + 8000852: 4a32 ldr r2, [pc, #200] @ (800091c ) + 8000854: f043 0301 orr.w r3, r3, #1 + 8000858: 61d3 str r3, [r2, #28] + 800085a: 4b30 ldr r3, [pc, #192] @ (800091c ) + 800085c: 69db ldr r3, [r3, #28] + 800085e: f003 0301 and.w r3, r3, #1 + 8000862: 607b str r3, [r7, #4] + 8000864: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000866: 4b2d ldr r3, [pc, #180] @ (800091c ) + 8000868: 69db ldr r3, [r3, #28] + 800086a: 4a2c ldr r2, [pc, #176] @ (800091c ) + 800086c: f043 0302 orr.w r3, r3, #2 + 8000870: 61d3 str r3, [r2, #28] + 8000872: 4b2a ldr r3, [pc, #168] @ (800091c ) + 8000874: 69db ldr r3, [r3, #28] + 8000876: f003 0302 and.w r3, r3, #2 + 800087a: 603b str r3, [r7, #0] + 800087c: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 800087e: 2200 movs r2, #0 + 8000880: 2101 movs r1, #1 + 8000882: 4827 ldr r0, [pc, #156] @ (8000920 ) + 8000884: f000 fd44 bl 8001310 + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 8000888: 2301 movs r3, #1 + 800088a: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 800088c: 2301 movs r3, #1 + 800088e: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000890: 2300 movs r3, #0 + 8000892: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000894: 2300 movs r3, #0 + 8000896: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000898: f107 030c add.w r3, r7, #12 + 800089c: 4619 mov r1, r3 + 800089e: 4820 ldr r0, [pc, #128] @ (8000920 ) + 80008a0: f000 fba6 bl 8000ff0 + + /*Configure GPIO pin : PB15 */ + GPIO_InitStruct.Pin = GPIO_PIN_15; + 80008a4: f44f 4300 mov.w r3, #32768 @ 0x8000 + 80008a8: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008aa: 2302 movs r3, #2 + 80008ac: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008ae: 2300 movs r3, #0 + 80008b0: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008b2: 2300 movs r3, #0 + 80008b4: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + 80008b6: 2303 movs r3, #3 + 80008b8: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 80008ba: f107 030c add.w r3, r7, #12 + 80008be: 4619 mov r1, r3 + 80008c0: 4818 ldr r0, [pc, #96] @ (8000924 ) + 80008c2: f000 fb95 bl 8000ff0 + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 80008c6: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 80008ca: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 80008cc: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 80008d0: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008d2: 2300 movs r3, #0 + 80008d4: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80008d6: f107 030c add.w r3, r7, #12 + 80008da: 4619 mov r1, r3 + 80008dc: 4812 ldr r0, [pc, #72] @ (8000928 ) + 80008de: f000 fb87 bl 8000ff0 + + /*Configure GPIO pin : PB7 */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + 80008e2: 2380 movs r3, #128 @ 0x80 + 80008e4: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008e6: 2302 movs r3, #2 + 80008e8: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008ea: 2300 movs r3, #0 + 80008ec: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008ee: 2300 movs r3, #0 + 80008f0: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + 80008f2: 2302 movs r3, #2 + 80008f4: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 80008f6: f107 030c add.w r3, r7, #12 + 80008fa: 4619 mov r1, r3 + 80008fc: 4809 ldr r0, [pc, #36] @ (8000924 ) + 80008fe: f000 fb77 bl 8000ff0 + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 8000902: 2200 movs r2, #0 + 8000904: 2100 movs r1, #0 + 8000906: 2028 movs r0, #40 @ 0x28 + 8000908: f000 fb3b bl 8000f82 + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 800090c: 2028 movs r0, #40 @ 0x28 + 800090e: f000 fb54 bl 8000fba + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 8000912: bf00 nop + 8000914: 3720 adds r7, #32 + 8000916: 46bd mov sp, r7 + 8000918: bd80 pop {r7, pc} + 800091a: bf00 nop + 800091c: 40023800 .word 0x40023800 + 8000920: 40020800 .word 0x40020800 + 8000924: 40020400 .word 0x40020400 + 8000928: 40020000 .word 0x40020000 + +0800092c : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 800092c: b480 push {r7} + 800092e: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 8000930: b672 cpsid i +} + 8000932: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000934: bf00 nop + 8000936: e7fd b.n 8000934 + +08000938 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000938: b480 push {r7} + 800093a: b085 sub sp, #20 + 800093c: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 800093e: 4b14 ldr r3, [pc, #80] @ (8000990 ) + 8000940: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000942: 4a13 ldr r2, [pc, #76] @ (8000990 ) + 8000944: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000948: 6253 str r3, [r2, #36] @ 0x24 + 800094a: 4b11 ldr r3, [pc, #68] @ (8000990 ) + 800094c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800094e: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 8000952: 60fb str r3, [r7, #12] + 8000954: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000956: 4b0e ldr r3, [pc, #56] @ (8000990 ) + 8000958: 6a1b ldr r3, [r3, #32] + 800095a: 4a0d ldr r2, [pc, #52] @ (8000990 ) + 800095c: f043 0301 orr.w r3, r3, #1 + 8000960: 6213 str r3, [r2, #32] + 8000962: 4b0b ldr r3, [pc, #44] @ (8000990 ) + 8000964: 6a1b ldr r3, [r3, #32] + 8000966: f003 0301 and.w r3, r3, #1 + 800096a: 60bb str r3, [r7, #8] + 800096c: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800096e: 4b08 ldr r3, [pc, #32] @ (8000990 ) + 8000970: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000972: 4a07 ldr r2, [pc, #28] @ (8000990 ) + 8000974: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000978: 6253 str r3, [r2, #36] @ 0x24 + 800097a: 4b05 ldr r3, [pc, #20] @ (8000990 ) + 800097c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800097e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000982: 607b str r3, [r7, #4] + 8000984: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000986: bf00 nop + 8000988: 3714 adds r7, #20 + 800098a: 46bd mov sp, r7 + 800098c: bc80 pop {r7} + 800098e: 4770 bx lr + 8000990: 40023800 .word 0x40023800 + +08000994 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 8000994: b580 push {r7, lr} + 8000996: b08a sub sp, #40 @ 0x28 + 8000998: af00 add r7, sp, #0 + 800099a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800099c: f107 0314 add.w r3, r7, #20 + 80009a0: 2200 movs r2, #0 + 80009a2: 601a str r2, [r3, #0] + 80009a4: 605a str r2, [r3, #4] + 80009a6: 609a str r2, [r3, #8] + 80009a8: 60da str r2, [r3, #12] + 80009aa: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 80009ac: 687b ldr r3, [r7, #4] + 80009ae: 681b ldr r3, [r3, #0] + 80009b0: 4a17 ldr r2, [pc, #92] @ (8000a10 ) + 80009b2: 4293 cmp r3, r2 + 80009b4: d127 bne.n 8000a06 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 80009b6: 4b17 ldr r3, [pc, #92] @ (8000a14 ) + 80009b8: 6a1b ldr r3, [r3, #32] + 80009ba: 4a16 ldr r2, [pc, #88] @ (8000a14 ) + 80009bc: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 80009c0: 6213 str r3, [r2, #32] + 80009c2: 4b14 ldr r3, [pc, #80] @ (8000a14 ) + 80009c4: 6a1b ldr r3, [r3, #32] + 80009c6: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80009ca: 613b str r3, [r7, #16] + 80009cc: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80009ce: 4b11 ldr r3, [pc, #68] @ (8000a14 ) + 80009d0: 69db ldr r3, [r3, #28] + 80009d2: 4a10 ldr r2, [pc, #64] @ (8000a14 ) + 80009d4: f043 0301 orr.w r3, r3, #1 + 80009d8: 61d3 str r3, [r2, #28] + 80009da: 4b0e ldr r3, [pc, #56] @ (8000a14 ) + 80009dc: 69db ldr r3, [r3, #28] + 80009de: f003 0301 and.w r3, r3, #1 + 80009e2: 60fb str r3, [r7, #12] + 80009e4: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 80009e6: 23e0 movs r3, #224 @ 0xe0 + 80009e8: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80009ea: 2302 movs r3, #2 + 80009ec: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80009ee: 2300 movs r3, #0 + 80009f0: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 80009f2: 2303 movs r3, #3 + 80009f4: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 80009f6: 2305 movs r3, #5 + 80009f8: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80009fa: f107 0314 add.w r3, r7, #20 + 80009fe: 4619 mov r1, r3 + 8000a00: 4805 ldr r0, [pc, #20] @ (8000a18 ) + 8000a02: f000 faf5 bl 8000ff0 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 8000a06: bf00 nop + 8000a08: 3728 adds r7, #40 @ 0x28 + 8000a0a: 46bd mov sp, r7 + 8000a0c: bd80 pop {r7, pc} + 8000a0e: bf00 nop + 8000a10: 40013000 .word 0x40013000 + 8000a14: 40023800 .word 0x40023800 + 8000a18: 40020000 .word 0x40020000 + +08000a1c : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 8000a1c: b480 push {r7} + 8000a1e: b085 sub sp, #20 + 8000a20: af00 add r7, sp, #0 + 8000a22: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM3) + 8000a24: 687b ldr r3, [r7, #4] + 8000a26: 681b ldr r3, [r3, #0] + 8000a28: 4a09 ldr r2, [pc, #36] @ (8000a50 ) + 8000a2a: 4293 cmp r3, r2 + 8000a2c: d10b bne.n 8000a46 + { + /* USER CODE BEGIN TIM3_MspInit 0 */ + + /* USER CODE END TIM3_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM3_CLK_ENABLE(); + 8000a2e: 4b09 ldr r3, [pc, #36] @ (8000a54 ) + 8000a30: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000a32: 4a08 ldr r2, [pc, #32] @ (8000a54 ) + 8000a34: f043 0302 orr.w r3, r3, #2 + 8000a38: 6253 str r3, [r2, #36] @ 0x24 + 8000a3a: 4b06 ldr r3, [pc, #24] @ (8000a54 ) + 8000a3c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000a3e: f003 0302 and.w r3, r3, #2 + 8000a42: 60fb str r3, [r7, #12] + 8000a44: 68fb ldr r3, [r7, #12] + + /* USER CODE END TIM3_MspInit 1 */ + + } + +} + 8000a46: bf00 nop + 8000a48: 3714 adds r7, #20 + 8000a4a: 46bd mov sp, r7 + 8000a4c: bc80 pop {r7} + 8000a4e: 4770 bx lr + 8000a50: 40000400 .word 0x40000400 + 8000a54: 40023800 .word 0x40023800 + +08000a58 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000a58: b580 push {r7, lr} + 8000a5a: b088 sub sp, #32 + 8000a5c: af00 add r7, sp, #0 + 8000a5e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000a60: f107 030c add.w r3, r7, #12 + 8000a64: 2200 movs r2, #0 + 8000a66: 601a str r2, [r3, #0] + 8000a68: 605a str r2, [r3, #4] + 8000a6a: 609a str r2, [r3, #8] + 8000a6c: 60da str r2, [r3, #12] + 8000a6e: 611a str r2, [r3, #16] + if(htim->Instance==TIM3) + 8000a70: 687b ldr r3, [r7, #4] + 8000a72: 681b ldr r3, [r3, #0] + 8000a74: 4a11 ldr r2, [pc, #68] @ (8000abc ) + 8000a76: 4293 cmp r3, r2 + 8000a78: d11b bne.n 8000ab2 + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000a7a: 4b11 ldr r3, [pc, #68] @ (8000ac0 ) + 8000a7c: 69db ldr r3, [r3, #28] + 8000a7e: 4a10 ldr r2, [pc, #64] @ (8000ac0 ) + 8000a80: f043 0304 orr.w r3, r3, #4 + 8000a84: 61d3 str r3, [r2, #28] + 8000a86: 4b0e ldr r3, [pc, #56] @ (8000ac0 ) + 8000a88: 69db ldr r3, [r3, #28] + 8000a8a: f003 0304 and.w r3, r3, #4 + 8000a8e: 60bb str r3, [r7, #8] + 8000a90: 68bb ldr r3, [r7, #8] + /**TIM3 GPIO Configuration + PC6 ------> TIM3_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + 8000a92: 2340 movs r3, #64 @ 0x40 + 8000a94: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000a96: 2302 movs r3, #2 + 8000a98: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000a9a: 2300 movs r3, #0 + 8000a9c: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000a9e: 2300 movs r3, #0 + 8000aa0: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + 8000aa2: 2302 movs r3, #2 + 8000aa4: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000aa6: f107 030c add.w r3, r7, #12 + 8000aaa: 4619 mov r1, r3 + 8000aac: 4805 ldr r0, [pc, #20] @ (8000ac4 ) + 8000aae: f000 fa9f bl 8000ff0 + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + +} + 8000ab2: bf00 nop + 8000ab4: 3720 adds r7, #32 + 8000ab6: 46bd mov sp, r7 + 8000ab8: bd80 pop {r7, pc} + 8000aba: bf00 nop + 8000abc: 40000400 .word 0x40000400 + 8000ac0: 40023800 .word 0x40023800 + 8000ac4: 40020800 .word 0x40020800 + +08000ac8 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000ac8: b480 push {r7} + 8000aca: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 8000acc: bf00 nop + 8000ace: e7fd b.n 8000acc + +08000ad0 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000ad0: b480 push {r7} + 8000ad2: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000ad4: bf00 nop + 8000ad6: e7fd b.n 8000ad4 + +08000ad8 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000ad8: b480 push {r7} + 8000ada: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000adc: bf00 nop + 8000ade: e7fd b.n 8000adc + +08000ae0 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000ae0: b480 push {r7} + 8000ae2: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000ae4: bf00 nop + 8000ae6: e7fd b.n 8000ae4 + +08000ae8 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000ae8: b480 push {r7} + 8000aea: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000aec: bf00 nop + 8000aee: e7fd b.n 8000aec + +08000af0 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000af0: b480 push {r7} + 8000af2: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000af4: bf00 nop + 8000af6: 46bd mov sp, r7 + 8000af8: bc80 pop {r7} + 8000afa: 4770 bx lr + +08000afc : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000afc: b480 push {r7} + 8000afe: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000b00: bf00 nop + 8000b02: 46bd mov sp, r7 + 8000b04: bc80 pop {r7} + 8000b06: 4770 bx lr + +08000b08 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000b08: b480 push {r7} + 8000b0a: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000b0c: bf00 nop + 8000b0e: 46bd mov sp, r7 + 8000b10: bc80 pop {r7} + 8000b12: 4770 bx lr + +08000b14 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000b14: b580 push {r7, lr} + 8000b16: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000b18: f000 f91e bl 8000d58 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000b1c: bf00 nop + 8000b1e: bd80 pop {r7, pc} + +08000b20 : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 8000b20: b580 push {r7, lr} + 8000b22: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 8000b24: f44f 6000 mov.w r0, #2048 @ 0x800 + 8000b28: f000 fc0a bl 8001340 + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 8000b2c: f44f 5080 mov.w r0, #4096 @ 0x1000 + 8000b30: f000 fc06 bl 8001340 + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8000b34: bf00 nop + 8000b36: bd80 pop {r7, pc} + +08000b38 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000b38: b480 push {r7} + 8000b3a: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000b3c: bf00 nop + 8000b3e: 46bd mov sp, r7 + 8000b40: bc80 pop {r7} + 8000b42: 4770 bx lr + +08000b44 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000b44: f7ff fff8 bl 8000b38 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000b48: 480b ldr r0, [pc, #44] @ (8000b78 ) + ldr r1, =_edata + 8000b4a: 490c ldr r1, [pc, #48] @ (8000b7c ) + ldr r2, =_sidata + 8000b4c: 4a0c ldr r2, [pc, #48] @ (8000b80 ) + movs r3, #0 + 8000b4e: 2300 movs r3, #0 + b LoopCopyDataInit + 8000b50: e002 b.n 8000b58 + +08000b52 : + +CopyDataInit: + ldr r4, [r2, r3] + 8000b52: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000b54: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000b56: 3304 adds r3, #4 + +08000b58 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000b58: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000b5a: 428c cmp r4, r1 + bcc CopyDataInit + 8000b5c: d3f9 bcc.n 8000b52 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000b5e: 4a09 ldr r2, [pc, #36] @ (8000b84 ) + ldr r4, =_ebss + 8000b60: 4c09 ldr r4, [pc, #36] @ (8000b88 ) + movs r3, #0 + 8000b62: 2300 movs r3, #0 + b LoopFillZerobss + 8000b64: e001 b.n 8000b6a + +08000b66 : + +FillZerobss: + str r3, [r2] + 8000b66: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000b68: 3204 adds r2, #4 + +08000b6a : + +LoopFillZerobss: + cmp r2, r4 + 8000b6a: 42a2 cmp r2, r4 + bcc FillZerobss + 8000b6c: d3fb bcc.n 8000b66 + +/* Call static constructors */ + bl __libc_init_array + 8000b6e: f002 f969 bl 8002e44 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000b72: f7ff fcff bl 8000574
+ bx lr + 8000b76: 4770 bx lr + ldr r0, =_sdata + 8000b78: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000b7c: 2000000c .word 0x2000000c + ldr r2, =_sidata + 8000b80: 08002ee0 .word 0x08002ee0 + ldr r2, =_sbss + 8000b84: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000b88: 200000c4 .word 0x200000c4 + +08000b8c : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000b8c: e7fe b.n 8000b8c + +08000b8e : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000b8e: b580 push {r7, lr} + 8000b90: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 8000b92: 2107 movs r1, #7 + 8000b94: 200b movs r0, #11 + 8000b96: f000 f85d bl 8000c54 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000b9a: 2100 movs r1, #0 + 8000b9c: 2009 movs r0, #9 + 8000b9e: f000 f859 bl 8000c54 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000ba2: f000 f809 bl 8000bb8 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000ba6: f000 f80f bl 8000bc8 + MAX7219_Clear(); // clear all digits + 8000baa: f000 f827 bl 8000bfc + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000bae: 200f movs r0, #15 + 8000bb0: f000 f812 bl 8000bd8 +} + 8000bb4: bf00 nop + 8000bb6: bd80 pop {r7, pc} + +08000bb8 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000bb8: b580 push {r7, lr} + 8000bba: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000bbc: 2101 movs r1, #1 + 8000bbe: 200c movs r0, #12 + 8000bc0: f000 f848 bl 8000c54 +} + 8000bc4: bf00 nop + 8000bc6: bd80 pop {r7, pc} + +08000bc8 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000bc8: b580 push {r7, lr} + 8000bca: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000bcc: 2100 movs r1, #0 + 8000bce: 200f movs r0, #15 + 8000bd0: f000 f840 bl 8000c54 +} + 8000bd4: bf00 nop + 8000bd6: bd80 pop {r7, pc} + +08000bd8 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000bd8: b580 push {r7, lr} + 8000bda: b082 sub sp, #8 + 8000bdc: af00 add r7, sp, #0 + 8000bde: 4603 mov r3, r0 + 8000be0: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000be2: 79fb ldrb r3, [r7, #7] + 8000be4: f003 030f and.w r3, r3, #15 + 8000be8: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000bea: 79fb ldrb r3, [r7, #7] + 8000bec: 4619 mov r1, r3 + 8000bee: 200a movs r0, #10 + 8000bf0: f000 f830 bl 8000c54 +} + 8000bf4: bf00 nop + 8000bf6: 3708 adds r7, #8 + 8000bf8: 46bd mov sp, r7 + 8000bfa: bd80 pop {r7, pc} + +08000bfc : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000bfc: b580 push {r7, lr} + 8000bfe: b082 sub sp, #8 + 8000c00: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000c02: 2300 movs r3, #0 + 8000c04: 71fb strb r3, [r7, #7] + 8000c06: e007 b.n 8000c18 + MAX7219_Write(i, 0x00); // turn all segments off + 8000c08: 79fb ldrb r3, [r7, #7] + 8000c0a: 2100 movs r1, #0 + 8000c0c: 4618 mov r0, r3 + 8000c0e: f000 f821 bl 8000c54 + for (i=0; i < 8; i++) + 8000c12: 79fb ldrb r3, [r7, #7] + 8000c14: 3301 adds r3, #1 + 8000c16: 71fb strb r3, [r7, #7] + 8000c18: 79fb ldrb r3, [r7, #7] + 8000c1a: 2b07 cmp r3, #7 + 8000c1c: d9f4 bls.n 8000c08 +} + 8000c1e: bf00 nop + 8000c20: bf00 nop + 8000c22: 3708 adds r7, #8 + 8000c24: 46bd mov sp, r7 + 8000c26: bd80 pop {r7, pc} + +08000c28 : +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + 8000c28: b580 push {r7, lr} + 8000c2a: b082 sub sp, #8 + 8000c2c: af00 add r7, sp, #0 + 8000c2e: 4603 mov r3, r0 + 8000c30: 460a mov r2, r1 + 8000c32: 71fb strb r3, [r7, #7] + 8000c34: 4613 mov r3, r2 + 8000c36: 71bb strb r3, [r7, #6] + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); + 8000c38: 79bb ldrb r3, [r7, #6] + 8000c3a: 4a05 ldr r2, [pc, #20] @ (8000c50 ) + 8000c3c: 5cd2 ldrb r2, [r2, r3] + 8000c3e: 79fb ldrb r3, [r7, #7] + 8000c40: 4611 mov r1, r2 + 8000c42: 4618 mov r0, r3 + 8000c44: f000 f806 bl 8000c54 +} + 8000c48: bf00 nop + 8000c4a: 3708 adds r7, #8 + 8000c4c: 46bd mov sp, r7 + 8000c4e: bd80 pop {r7, pc} + 8000c50: 08002ec0 .word 0x08002ec0 + +08000c54 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000c54: b580 push {r7, lr} + 8000c56: b082 sub sp, #8 + 8000c58: af00 add r7, sp, #0 + 8000c5a: 4603 mov r3, r0 + 8000c5c: 460a mov r2, r1 + 8000c5e: 71fb strb r3, [r7, #7] + 8000c60: 4613 mov r3, r2 + 8000c62: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000c64: 4b09 ldr r3, [pc, #36] @ (8000c8c ) + 8000c66: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000c6a: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000c6c: 79fb ldrb r3, [r7, #7] + 8000c6e: 4618 mov r0, r3 + 8000c70: f000 f80e bl 8000c90 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000c74: 79bb ldrb r3, [r7, #6] + 8000c76: 4618 mov r0, r3 + 8000c78: f000 f80a bl 8000c90 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000c7c: 4b03 ldr r3, [pc, #12] @ (8000c8c ) + 8000c7e: 2201 movs r2, #1 + 8000c80: 619a str r2, [r3, #24] + } + 8000c82: bf00 nop + 8000c84: 3708 adds r7, #8 + 8000c86: 46bd mov sp, r7 + 8000c88: bd80 pop {r7, pc} + 8000c8a: bf00 nop + 8000c8c: 40020800 .word 0x40020800 + +08000c90 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000c90: b580 push {r7, lr} + 8000c92: b082 sub sp, #8 + 8000c94: af00 add r7, sp, #0 + 8000c96: 4603 mov r3, r0 + 8000c98: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000c9a: 1df9 adds r1, r7, #7 + 8000c9c: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000ca0: 2201 movs r2, #1 + 8000ca2: 4803 ldr r0, [pc, #12] @ (8000cb0 ) + 8000ca4: f001 f979 bl 8001f9a + +} + 8000ca8: bf00 nop + 8000caa: 3708 adds r7, #8 + 8000cac: 46bd mov sp, r7 + 8000cae: bd80 pop {r7, pc} + 8000cb0: 20000028 .word 0x20000028 + +08000cb4 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000cb4: b580 push {r7, lr} + 8000cb6: b082 sub sp, #8 + 8000cb8: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000cba: 2300 movs r3, #0 + 8000cbc: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000cbe: 2003 movs r0, #3 + 8000cc0: f000 f954 bl 8000f6c + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000cc4: 200f movs r0, #15 + 8000cc6: f000 f80d bl 8000ce4 + 8000cca: 4603 mov r3, r0 + 8000ccc: 2b00 cmp r3, #0 + 8000cce: d002 beq.n 8000cd6 + { + status = HAL_ERROR; + 8000cd0: 2301 movs r3, #1 + 8000cd2: 71fb strb r3, [r7, #7] + 8000cd4: e001 b.n 8000cda + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000cd6: f7ff fe2f bl 8000938 + } + + /* Return function status */ + return status; + 8000cda: 79fb ldrb r3, [r7, #7] +} + 8000cdc: 4618 mov r0, r3 + 8000cde: 3708 adds r7, #8 + 8000ce0: 46bd mov sp, r7 + 8000ce2: bd80 pop {r7, pc} + +08000ce4 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000ce4: b580 push {r7, lr} + 8000ce6: b084 sub sp, #16 + 8000ce8: af00 add r7, sp, #0 + 8000cea: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000cec: 2300 movs r3, #0 + 8000cee: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000cf0: 4b16 ldr r3, [pc, #88] @ (8000d4c ) + 8000cf2: 681b ldr r3, [r3, #0] + 8000cf4: 2b00 cmp r3, #0 + 8000cf6: d022 beq.n 8000d3e + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000cf8: 4b15 ldr r3, [pc, #84] @ (8000d50 ) + 8000cfa: 681a ldr r2, [r3, #0] + 8000cfc: 4b13 ldr r3, [pc, #76] @ (8000d4c ) + 8000cfe: 681b ldr r3, [r3, #0] + 8000d00: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000d04: fbb1 f3f3 udiv r3, r1, r3 + 8000d08: fbb2 f3f3 udiv r3, r2, r3 + 8000d0c: 4618 mov r0, r3 + 8000d0e: f000 f962 bl 8000fd6 + 8000d12: 4603 mov r3, r0 + 8000d14: 2b00 cmp r3, #0 + 8000d16: d10f bne.n 8000d38 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000d18: 687b ldr r3, [r7, #4] + 8000d1a: 2b0f cmp r3, #15 + 8000d1c: d809 bhi.n 8000d32 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000d1e: 2200 movs r2, #0 + 8000d20: 6879 ldr r1, [r7, #4] + 8000d22: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000d26: f000 f92c bl 8000f82 + uwTickPrio = TickPriority; + 8000d2a: 4a0a ldr r2, [pc, #40] @ (8000d54 ) + 8000d2c: 687b ldr r3, [r7, #4] + 8000d2e: 6013 str r3, [r2, #0] + 8000d30: e007 b.n 8000d42 + } + else + { + status = HAL_ERROR; + 8000d32: 2301 movs r3, #1 + 8000d34: 73fb strb r3, [r7, #15] + 8000d36: e004 b.n 8000d42 + } + } + else + { + status = HAL_ERROR; + 8000d38: 2301 movs r3, #1 + 8000d3a: 73fb strb r3, [r7, #15] + 8000d3c: e001 b.n 8000d42 + } + } + else + { + status = HAL_ERROR; + 8000d3e: 2301 movs r3, #1 + 8000d40: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000d42: 7bfb ldrb r3, [r7, #15] +} + 8000d44: 4618 mov r0, r3 + 8000d46: 3710 adds r7, #16 + 8000d48: 46bd mov sp, r7 + 8000d4a: bd80 pop {r7, pc} + 8000d4c: 20000008 .word 0x20000008 + 8000d50: 20000000 .word 0x20000000 + 8000d54: 20000004 .word 0x20000004 + +08000d58 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000d58: b480 push {r7} + 8000d5a: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000d5c: 4b05 ldr r3, [pc, #20] @ (8000d74 ) + 8000d5e: 681a ldr r2, [r3, #0] + 8000d60: 4b05 ldr r3, [pc, #20] @ (8000d78 ) + 8000d62: 681b ldr r3, [r3, #0] + 8000d64: 4413 add r3, r2 + 8000d66: 4a03 ldr r2, [pc, #12] @ (8000d74 ) + 8000d68: 6013 str r3, [r2, #0] +} + 8000d6a: bf00 nop + 8000d6c: 46bd mov sp, r7 + 8000d6e: bc80 pop {r7} + 8000d70: 4770 bx lr + 8000d72: bf00 nop + 8000d74: 200000c0 .word 0x200000c0 + 8000d78: 20000008 .word 0x20000008 + +08000d7c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000d7c: b480 push {r7} + 8000d7e: af00 add r7, sp, #0 + return uwTick; + 8000d80: 4b02 ldr r3, [pc, #8] @ (8000d8c ) + 8000d82: 681b ldr r3, [r3, #0] +} + 8000d84: 4618 mov r0, r3 + 8000d86: 46bd mov sp, r7 + 8000d88: bc80 pop {r7} + 8000d8a: 4770 bx lr + 8000d8c: 200000c0 .word 0x200000c0 + +08000d90 : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 8000d90: b580 push {r7, lr} + 8000d92: b084 sub sp, #16 + 8000d94: af00 add r7, sp, #0 + 8000d96: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000d98: f7ff fff0 bl 8000d7c + 8000d9c: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 8000d9e: 687b ldr r3, [r7, #4] + 8000da0: 60fb str r3, [r7, #12] + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + 8000da2: 68fb ldr r3, [r7, #12] + 8000da4: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8000da8: d004 beq.n 8000db4 + { + wait += (uint32_t)(uwTickFreq); + 8000daa: 4b09 ldr r3, [pc, #36] @ (8000dd0 ) + 8000dac: 681b ldr r3, [r3, #0] + 8000dae: 68fa ldr r2, [r7, #12] + 8000db0: 4413 add r3, r2 + 8000db2: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8000db4: bf00 nop + 8000db6: f7ff ffe1 bl 8000d7c + 8000dba: 4602 mov r2, r0 + 8000dbc: 68bb ldr r3, [r7, #8] + 8000dbe: 1ad3 subs r3, r2, r3 + 8000dc0: 68fa ldr r2, [r7, #12] + 8000dc2: 429a cmp r2, r3 + 8000dc4: d8f7 bhi.n 8000db6 + { + } +} + 8000dc6: bf00 nop + 8000dc8: bf00 nop + 8000dca: 3710 adds r7, #16 + 8000dcc: 46bd mov sp, r7 + 8000dce: bd80 pop {r7, pc} + 8000dd0: 20000008 .word 0x20000008 + +08000dd4 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000dd4: b480 push {r7} + 8000dd6: b085 sub sp, #20 + 8000dd8: af00 add r7, sp, #0 + 8000dda: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000ddc: 687b ldr r3, [r7, #4] + 8000dde: f003 0307 and.w r3, r3, #7 + 8000de2: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000de4: 4b0c ldr r3, [pc, #48] @ (8000e18 <__NVIC_SetPriorityGrouping+0x44>) + 8000de6: 68db ldr r3, [r3, #12] + 8000de8: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000dea: 68ba ldr r2, [r7, #8] + 8000dec: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000df0: 4013 ands r3, r2 + 8000df2: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000df4: 68fb ldr r3, [r7, #12] + 8000df6: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000df8: 68bb ldr r3, [r7, #8] + 8000dfa: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000dfc: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000e00: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000e04: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000e06: 4a04 ldr r2, [pc, #16] @ (8000e18 <__NVIC_SetPriorityGrouping+0x44>) + 8000e08: 68bb ldr r3, [r7, #8] + 8000e0a: 60d3 str r3, [r2, #12] +} + 8000e0c: bf00 nop + 8000e0e: 3714 adds r7, #20 + 8000e10: 46bd mov sp, r7 + 8000e12: bc80 pop {r7} + 8000e14: 4770 bx lr + 8000e16: bf00 nop + 8000e18: e000ed00 .word 0xe000ed00 + +08000e1c <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000e1c: b480 push {r7} + 8000e1e: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000e20: 4b04 ldr r3, [pc, #16] @ (8000e34 <__NVIC_GetPriorityGrouping+0x18>) + 8000e22: 68db ldr r3, [r3, #12] + 8000e24: 0a1b lsrs r3, r3, #8 + 8000e26: f003 0307 and.w r3, r3, #7 +} + 8000e2a: 4618 mov r0, r3 + 8000e2c: 46bd mov sp, r7 + 8000e2e: bc80 pop {r7} + 8000e30: 4770 bx lr + 8000e32: bf00 nop + 8000e34: e000ed00 .word 0xe000ed00 + +08000e38 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000e38: b480 push {r7} + 8000e3a: b083 sub sp, #12 + 8000e3c: af00 add r7, sp, #0 + 8000e3e: 4603 mov r3, r0 + 8000e40: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000e42: f997 3007 ldrsb.w r3, [r7, #7] + 8000e46: 2b00 cmp r3, #0 + 8000e48: db0b blt.n 8000e62 <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000e4a: 79fb ldrb r3, [r7, #7] + 8000e4c: f003 021f and.w r2, r3, #31 + 8000e50: 4906 ldr r1, [pc, #24] @ (8000e6c <__NVIC_EnableIRQ+0x34>) + 8000e52: f997 3007 ldrsb.w r3, [r7, #7] + 8000e56: 095b lsrs r3, r3, #5 + 8000e58: 2001 movs r0, #1 + 8000e5a: fa00 f202 lsl.w r2, r0, r2 + 8000e5e: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000e62: bf00 nop + 8000e64: 370c adds r7, #12 + 8000e66: 46bd mov sp, r7 + 8000e68: bc80 pop {r7} + 8000e6a: 4770 bx lr + 8000e6c: e000e100 .word 0xe000e100 + +08000e70 <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000e70: b480 push {r7} + 8000e72: b083 sub sp, #12 + 8000e74: af00 add r7, sp, #0 + 8000e76: 4603 mov r3, r0 + 8000e78: 6039 str r1, [r7, #0] + 8000e7a: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000e7c: f997 3007 ldrsb.w r3, [r7, #7] + 8000e80: 2b00 cmp r3, #0 + 8000e82: db0a blt.n 8000e9a <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000e84: 683b ldr r3, [r7, #0] + 8000e86: b2da uxtb r2, r3 + 8000e88: 490c ldr r1, [pc, #48] @ (8000ebc <__NVIC_SetPriority+0x4c>) + 8000e8a: f997 3007 ldrsb.w r3, [r7, #7] + 8000e8e: 0112 lsls r2, r2, #4 + 8000e90: b2d2 uxtb r2, r2 + 8000e92: 440b add r3, r1 + 8000e94: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000e98: e00a b.n 8000eb0 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000e9a: 683b ldr r3, [r7, #0] + 8000e9c: b2da uxtb r2, r3 + 8000e9e: 4908 ldr r1, [pc, #32] @ (8000ec0 <__NVIC_SetPriority+0x50>) + 8000ea0: 79fb ldrb r3, [r7, #7] + 8000ea2: f003 030f and.w r3, r3, #15 + 8000ea6: 3b04 subs r3, #4 + 8000ea8: 0112 lsls r2, r2, #4 + 8000eaa: b2d2 uxtb r2, r2 + 8000eac: 440b add r3, r1 + 8000eae: 761a strb r2, [r3, #24] +} + 8000eb0: bf00 nop + 8000eb2: 370c adds r7, #12 + 8000eb4: 46bd mov sp, r7 + 8000eb6: bc80 pop {r7} + 8000eb8: 4770 bx lr + 8000eba: bf00 nop + 8000ebc: e000e100 .word 0xe000e100 + 8000ec0: e000ed00 .word 0xe000ed00 + +08000ec4 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000ec4: b480 push {r7} + 8000ec6: b089 sub sp, #36 @ 0x24 + 8000ec8: af00 add r7, sp, #0 + 8000eca: 60f8 str r0, [r7, #12] + 8000ecc: 60b9 str r1, [r7, #8] + 8000ece: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000ed0: 68fb ldr r3, [r7, #12] + 8000ed2: f003 0307 and.w r3, r3, #7 + 8000ed6: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000ed8: 69fb ldr r3, [r7, #28] + 8000eda: f1c3 0307 rsb r3, r3, #7 + 8000ede: 2b04 cmp r3, #4 + 8000ee0: bf28 it cs + 8000ee2: 2304 movcs r3, #4 + 8000ee4: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000ee6: 69fb ldr r3, [r7, #28] + 8000ee8: 3304 adds r3, #4 + 8000eea: 2b06 cmp r3, #6 + 8000eec: d902 bls.n 8000ef4 + 8000eee: 69fb ldr r3, [r7, #28] + 8000ef0: 3b03 subs r3, #3 + 8000ef2: e000 b.n 8000ef6 + 8000ef4: 2300 movs r3, #0 + 8000ef6: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000ef8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000efc: 69bb ldr r3, [r7, #24] + 8000efe: fa02 f303 lsl.w r3, r2, r3 + 8000f02: 43da mvns r2, r3 + 8000f04: 68bb ldr r3, [r7, #8] + 8000f06: 401a ands r2, r3 + 8000f08: 697b ldr r3, [r7, #20] + 8000f0a: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000f0c: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000f10: 697b ldr r3, [r7, #20] + 8000f12: fa01 f303 lsl.w r3, r1, r3 + 8000f16: 43d9 mvns r1, r3 + 8000f18: 687b ldr r3, [r7, #4] + 8000f1a: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000f1c: 4313 orrs r3, r2 + ); +} + 8000f1e: 4618 mov r0, r3 + 8000f20: 3724 adds r7, #36 @ 0x24 + 8000f22: 46bd mov sp, r7 + 8000f24: bc80 pop {r7} + 8000f26: 4770 bx lr + +08000f28 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000f28: b580 push {r7, lr} + 8000f2a: b082 sub sp, #8 + 8000f2c: af00 add r7, sp, #0 + 8000f2e: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000f30: 687b ldr r3, [r7, #4] + 8000f32: 3b01 subs r3, #1 + 8000f34: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000f38: d301 bcc.n 8000f3e + { + return (1UL); /* Reload value impossible */ + 8000f3a: 2301 movs r3, #1 + 8000f3c: e00f b.n 8000f5e + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000f3e: 4a0a ldr r2, [pc, #40] @ (8000f68 ) + 8000f40: 687b ldr r3, [r7, #4] + 8000f42: 3b01 subs r3, #1 + 8000f44: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000f46: 210f movs r1, #15 + 8000f48: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000f4c: f7ff ff90 bl 8000e70 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000f50: 4b05 ldr r3, [pc, #20] @ (8000f68 ) + 8000f52: 2200 movs r2, #0 + 8000f54: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000f56: 4b04 ldr r3, [pc, #16] @ (8000f68 ) + 8000f58: 2207 movs r2, #7 + 8000f5a: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000f5c: 2300 movs r3, #0 +} + 8000f5e: 4618 mov r0, r3 + 8000f60: 3708 adds r7, #8 + 8000f62: 46bd mov sp, r7 + 8000f64: bd80 pop {r7, pc} + 8000f66: bf00 nop + 8000f68: e000e010 .word 0xe000e010 + +08000f6c : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000f6c: b580 push {r7, lr} + 8000f6e: b082 sub sp, #8 + 8000f70: af00 add r7, sp, #0 + 8000f72: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000f74: 6878 ldr r0, [r7, #4] + 8000f76: f7ff ff2d bl 8000dd4 <__NVIC_SetPriorityGrouping> +} + 8000f7a: bf00 nop + 8000f7c: 3708 adds r7, #8 + 8000f7e: 46bd mov sp, r7 + 8000f80: bd80 pop {r7, pc} + +08000f82 : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000f82: b580 push {r7, lr} + 8000f84: b086 sub sp, #24 + 8000f86: af00 add r7, sp, #0 + 8000f88: 4603 mov r3, r0 + 8000f8a: 60b9 str r1, [r7, #8] + 8000f8c: 607a str r2, [r7, #4] + 8000f8e: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000f90: 2300 movs r3, #0 + 8000f92: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000f94: f7ff ff42 bl 8000e1c <__NVIC_GetPriorityGrouping> + 8000f98: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000f9a: 687a ldr r2, [r7, #4] + 8000f9c: 68b9 ldr r1, [r7, #8] + 8000f9e: 6978 ldr r0, [r7, #20] + 8000fa0: f7ff ff90 bl 8000ec4 + 8000fa4: 4602 mov r2, r0 + 8000fa6: f997 300f ldrsb.w r3, [r7, #15] + 8000faa: 4611 mov r1, r2 + 8000fac: 4618 mov r0, r3 + 8000fae: f7ff ff5f bl 8000e70 <__NVIC_SetPriority> +} + 8000fb2: bf00 nop + 8000fb4: 3718 adds r7, #24 + 8000fb6: 46bd mov sp, r7 + 8000fb8: bd80 pop {r7, pc} + +08000fba : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000fba: b580 push {r7, lr} + 8000fbc: b082 sub sp, #8 + 8000fbe: af00 add r7, sp, #0 + 8000fc0: 4603 mov r3, r0 + 8000fc2: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000fc4: f997 3007 ldrsb.w r3, [r7, #7] + 8000fc8: 4618 mov r0, r3 + 8000fca: f7ff ff35 bl 8000e38 <__NVIC_EnableIRQ> +} + 8000fce: bf00 nop + 8000fd0: 3708 adds r7, #8 + 8000fd2: 46bd mov sp, r7 + 8000fd4: bd80 pop {r7, pc} + +08000fd6 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000fd6: b580 push {r7, lr} + 8000fd8: b082 sub sp, #8 + 8000fda: af00 add r7, sp, #0 + 8000fdc: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000fde: 6878 ldr r0, [r7, #4] + 8000fe0: f7ff ffa2 bl 8000f28 + 8000fe4: 4603 mov r3, r0 +} + 8000fe6: 4618 mov r0, r3 + 8000fe8: 3708 adds r7, #8 + 8000fea: 46bd mov sp, r7 + 8000fec: bd80 pop {r7, pc} + ... + +08000ff0 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000ff0: b480 push {r7} + 8000ff2: b087 sub sp, #28 + 8000ff4: af00 add r7, sp, #0 + 8000ff6: 6078 str r0, [r7, #4] + 8000ff8: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000ffa: 2300 movs r3, #0 + 8000ffc: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000ffe: 2300 movs r3, #0 + 8001000: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8001002: 2300 movs r3, #0 + 8001004: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8001006: e160 b.n 80012ca + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8001008: 683b ldr r3, [r7, #0] + 800100a: 681a ldr r2, [r3, #0] + 800100c: 2101 movs r1, #1 + 800100e: 697b ldr r3, [r7, #20] + 8001010: fa01 f303 lsl.w r3, r1, r3 + 8001014: 4013 ands r3, r2 + 8001016: 60fb str r3, [r7, #12] + + if (iocurrent) + 8001018: 68fb ldr r3, [r7, #12] + 800101a: 2b00 cmp r3, #0 + 800101c: f000 8152 beq.w 80012c4 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001020: 683b ldr r3, [r7, #0] + 8001022: 685b ldr r3, [r3, #4] + 8001024: f003 0303 and.w r3, r3, #3 + 8001028: 2b01 cmp r3, #1 + 800102a: d005 beq.n 8001038 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 800102c: 683b ldr r3, [r7, #0] + 800102e: 685b ldr r3, [r3, #4] + 8001030: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001034: 2b02 cmp r3, #2 + 8001036: d130 bne.n 800109a + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8001038: 687b ldr r3, [r7, #4] + 800103a: 689b ldr r3, [r3, #8] + 800103c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 800103e: 697b ldr r3, [r7, #20] + 8001040: 005b lsls r3, r3, #1 + 8001042: 2203 movs r2, #3 + 8001044: fa02 f303 lsl.w r3, r2, r3 + 8001048: 43db mvns r3, r3 + 800104a: 693a ldr r2, [r7, #16] + 800104c: 4013 ands r3, r2 + 800104e: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8001050: 683b ldr r3, [r7, #0] + 8001052: 68da ldr r2, [r3, #12] + 8001054: 697b ldr r3, [r7, #20] + 8001056: 005b lsls r3, r3, #1 + 8001058: fa02 f303 lsl.w r3, r2, r3 + 800105c: 693a ldr r2, [r7, #16] + 800105e: 4313 orrs r3, r2 + 8001060: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8001062: 687b ldr r3, [r7, #4] + 8001064: 693a ldr r2, [r7, #16] + 8001066: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001068: 687b ldr r3, [r7, #4] + 800106a: 685b ldr r3, [r3, #4] + 800106c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 800106e: 2201 movs r2, #1 + 8001070: 697b ldr r3, [r7, #20] + 8001072: fa02 f303 lsl.w r3, r2, r3 + 8001076: 43db mvns r3, r3 + 8001078: 693a ldr r2, [r7, #16] + 800107a: 4013 ands r3, r2 + 800107c: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800107e: 683b ldr r3, [r7, #0] + 8001080: 685b ldr r3, [r3, #4] + 8001082: 091b lsrs r3, r3, #4 + 8001084: f003 0201 and.w r2, r3, #1 + 8001088: 697b ldr r3, [r7, #20] + 800108a: fa02 f303 lsl.w r3, r2, r3 + 800108e: 693a ldr r2, [r7, #16] + 8001090: 4313 orrs r3, r2 + 8001092: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8001094: 687b ldr r3, [r7, #4] + 8001096: 693a ldr r2, [r7, #16] + 8001098: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 800109a: 683b ldr r3, [r7, #0] + 800109c: 685b ldr r3, [r3, #4] + 800109e: f003 0303 and.w r3, r3, #3 + 80010a2: 2b03 cmp r3, #3 + 80010a4: d017 beq.n 80010d6 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 80010a6: 687b ldr r3, [r7, #4] + 80010a8: 68db ldr r3, [r3, #12] + 80010aa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 80010ac: 697b ldr r3, [r7, #20] + 80010ae: 005b lsls r3, r3, #1 + 80010b0: 2203 movs r2, #3 + 80010b2: fa02 f303 lsl.w r3, r2, r3 + 80010b6: 43db mvns r3, r3 + 80010b8: 693a ldr r2, [r7, #16] + 80010ba: 4013 ands r3, r2 + 80010bc: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 80010be: 683b ldr r3, [r7, #0] + 80010c0: 689a ldr r2, [r3, #8] + 80010c2: 697b ldr r3, [r7, #20] + 80010c4: 005b lsls r3, r3, #1 + 80010c6: fa02 f303 lsl.w r3, r2, r3 + 80010ca: 693a ldr r2, [r7, #16] + 80010cc: 4313 orrs r3, r2 + 80010ce: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 80010d0: 687b ldr r3, [r7, #4] + 80010d2: 693a ldr r2, [r7, #16] + 80010d4: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 80010d6: 683b ldr r3, [r7, #0] + 80010d8: 685b ldr r3, [r3, #4] + 80010da: f003 0303 and.w r3, r3, #3 + 80010de: 2b02 cmp r3, #2 + 80010e0: d123 bne.n 800112a + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 80010e2: 697b ldr r3, [r7, #20] + 80010e4: 08da lsrs r2, r3, #3 + 80010e6: 687b ldr r3, [r7, #4] + 80010e8: 3208 adds r2, #8 + 80010ea: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80010ee: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 80010f0: 697b ldr r3, [r7, #20] + 80010f2: f003 0307 and.w r3, r3, #7 + 80010f6: 009b lsls r3, r3, #2 + 80010f8: 220f movs r2, #15 + 80010fa: fa02 f303 lsl.w r3, r2, r3 + 80010fe: 43db mvns r3, r3 + 8001100: 693a ldr r2, [r7, #16] + 8001102: 4013 ands r3, r2 + 8001104: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8001106: 683b ldr r3, [r7, #0] + 8001108: 691a ldr r2, [r3, #16] + 800110a: 697b ldr r3, [r7, #20] + 800110c: f003 0307 and.w r3, r3, #7 + 8001110: 009b lsls r3, r3, #2 + 8001112: fa02 f303 lsl.w r3, r2, r3 + 8001116: 693a ldr r2, [r7, #16] + 8001118: 4313 orrs r3, r2 + 800111a: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 800111c: 697b ldr r3, [r7, #20] + 800111e: 08da lsrs r2, r3, #3 + 8001120: 687b ldr r3, [r7, #4] + 8001122: 3208 adds r2, #8 + 8001124: 6939 ldr r1, [r7, #16] + 8001126: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 800112a: 687b ldr r3, [r7, #4] + 800112c: 681b ldr r3, [r3, #0] + 800112e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8001130: 697b ldr r3, [r7, #20] + 8001132: 005b lsls r3, r3, #1 + 8001134: 2203 movs r2, #3 + 8001136: fa02 f303 lsl.w r3, r2, r3 + 800113a: 43db mvns r3, r3 + 800113c: 693a ldr r2, [r7, #16] + 800113e: 4013 ands r3, r2 + 8001140: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8001142: 683b ldr r3, [r7, #0] + 8001144: 685b ldr r3, [r3, #4] + 8001146: f003 0203 and.w r2, r3, #3 + 800114a: 697b ldr r3, [r7, #20] + 800114c: 005b lsls r3, r3, #1 + 800114e: fa02 f303 lsl.w r3, r2, r3 + 8001152: 693a ldr r2, [r7, #16] + 8001154: 4313 orrs r3, r2 + 8001156: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001158: 687b ldr r3, [r7, #4] + 800115a: 693a ldr r2, [r7, #16] + 800115c: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 800115e: 683b ldr r3, [r7, #0] + 8001160: 685b ldr r3, [r3, #4] + 8001162: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8001166: 2b00 cmp r3, #0 + 8001168: f000 80ac beq.w 80012c4 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 800116c: 4b5e ldr r3, [pc, #376] @ (80012e8 ) + 800116e: 6a1b ldr r3, [r3, #32] + 8001170: 4a5d ldr r2, [pc, #372] @ (80012e8 ) + 8001172: f043 0301 orr.w r3, r3, #1 + 8001176: 6213 str r3, [r2, #32] + 8001178: 4b5b ldr r3, [pc, #364] @ (80012e8 ) + 800117a: 6a1b ldr r3, [r3, #32] + 800117c: f003 0301 and.w r3, r3, #1 + 8001180: 60bb str r3, [r7, #8] + 8001182: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8001184: 4a59 ldr r2, [pc, #356] @ (80012ec ) + 8001186: 697b ldr r3, [r7, #20] + 8001188: 089b lsrs r3, r3, #2 + 800118a: 3302 adds r3, #2 + 800118c: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001190: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8001192: 697b ldr r3, [r7, #20] + 8001194: f003 0303 and.w r3, r3, #3 + 8001198: 009b lsls r3, r3, #2 + 800119a: 220f movs r2, #15 + 800119c: fa02 f303 lsl.w r3, r2, r3 + 80011a0: 43db mvns r3, r3 + 80011a2: 693a ldr r2, [r7, #16] + 80011a4: 4013 ands r3, r2 + 80011a6: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 80011a8: 687b ldr r3, [r7, #4] + 80011aa: 4a51 ldr r2, [pc, #324] @ (80012f0 ) + 80011ac: 4293 cmp r3, r2 + 80011ae: d025 beq.n 80011fc + 80011b0: 687b ldr r3, [r7, #4] + 80011b2: 4a50 ldr r2, [pc, #320] @ (80012f4 ) + 80011b4: 4293 cmp r3, r2 + 80011b6: d01f beq.n 80011f8 + 80011b8: 687b ldr r3, [r7, #4] + 80011ba: 4a4f ldr r2, [pc, #316] @ (80012f8 ) + 80011bc: 4293 cmp r3, r2 + 80011be: d019 beq.n 80011f4 + 80011c0: 687b ldr r3, [r7, #4] + 80011c2: 4a4e ldr r2, [pc, #312] @ (80012fc ) + 80011c4: 4293 cmp r3, r2 + 80011c6: d013 beq.n 80011f0 + 80011c8: 687b ldr r3, [r7, #4] + 80011ca: 4a4d ldr r2, [pc, #308] @ (8001300 ) + 80011cc: 4293 cmp r3, r2 + 80011ce: d00d beq.n 80011ec + 80011d0: 687b ldr r3, [r7, #4] + 80011d2: 4a4c ldr r2, [pc, #304] @ (8001304 ) + 80011d4: 4293 cmp r3, r2 + 80011d6: d007 beq.n 80011e8 + 80011d8: 687b ldr r3, [r7, #4] + 80011da: 4a4b ldr r2, [pc, #300] @ (8001308 ) + 80011dc: 4293 cmp r3, r2 + 80011de: d101 bne.n 80011e4 + 80011e0: 2306 movs r3, #6 + 80011e2: e00c b.n 80011fe + 80011e4: 2307 movs r3, #7 + 80011e6: e00a b.n 80011fe + 80011e8: 2305 movs r3, #5 + 80011ea: e008 b.n 80011fe + 80011ec: 2304 movs r3, #4 + 80011ee: e006 b.n 80011fe + 80011f0: 2303 movs r3, #3 + 80011f2: e004 b.n 80011fe + 80011f4: 2302 movs r3, #2 + 80011f6: e002 b.n 80011fe + 80011f8: 2301 movs r3, #1 + 80011fa: e000 b.n 80011fe + 80011fc: 2300 movs r3, #0 + 80011fe: 697a ldr r2, [r7, #20] + 8001200: f002 0203 and.w r2, r2, #3 + 8001204: 0092 lsls r2, r2, #2 + 8001206: 4093 lsls r3, r2 + 8001208: 693a ldr r2, [r7, #16] + 800120a: 4313 orrs r3, r2 + 800120c: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 800120e: 4937 ldr r1, [pc, #220] @ (80012ec ) + 8001210: 697b ldr r3, [r7, #20] + 8001212: 089b lsrs r3, r3, #2 + 8001214: 3302 adds r3, #2 + 8001216: 693a ldr r2, [r7, #16] + 8001218: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 800121c: 4b3b ldr r3, [pc, #236] @ (800130c ) + 800121e: 689b ldr r3, [r3, #8] + 8001220: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001222: 68fb ldr r3, [r7, #12] + 8001224: 43db mvns r3, r3 + 8001226: 693a ldr r2, [r7, #16] + 8001228: 4013 ands r3, r2 + 800122a: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 800122c: 683b ldr r3, [r7, #0] + 800122e: 685b ldr r3, [r3, #4] + 8001230: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001234: 2b00 cmp r3, #0 + 8001236: d003 beq.n 8001240 + { + SET_BIT(temp, iocurrent); + 8001238: 693a ldr r2, [r7, #16] + 800123a: 68fb ldr r3, [r7, #12] + 800123c: 4313 orrs r3, r2 + 800123e: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001240: 4a32 ldr r2, [pc, #200] @ (800130c ) + 8001242: 693b ldr r3, [r7, #16] + 8001244: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8001246: 4b31 ldr r3, [pc, #196] @ (800130c ) + 8001248: 68db ldr r3, [r3, #12] + 800124a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800124c: 68fb ldr r3, [r7, #12] + 800124e: 43db mvns r3, r3 + 8001250: 693a ldr r2, [r7, #16] + 8001252: 4013 ands r3, r2 + 8001254: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001256: 683b ldr r3, [r7, #0] + 8001258: 685b ldr r3, [r3, #4] + 800125a: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 800125e: 2b00 cmp r3, #0 + 8001260: d003 beq.n 800126a + { + SET_BIT(temp, iocurrent); + 8001262: 693a ldr r2, [r7, #16] + 8001264: 68fb ldr r3, [r7, #12] + 8001266: 4313 orrs r3, r2 + 8001268: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 800126a: 4a28 ldr r2, [pc, #160] @ (800130c ) + 800126c: 693b ldr r3, [r7, #16] + 800126e: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8001270: 4b26 ldr r3, [pc, #152] @ (800130c ) + 8001272: 685b ldr r3, [r3, #4] + 8001274: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001276: 68fb ldr r3, [r7, #12] + 8001278: 43db mvns r3, r3 + 800127a: 693a ldr r2, [r7, #16] + 800127c: 4013 ands r3, r2 + 800127e: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001280: 683b ldr r3, [r7, #0] + 8001282: 685b ldr r3, [r3, #4] + 8001284: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001288: 2b00 cmp r3, #0 + 800128a: d003 beq.n 8001294 + { + SET_BIT(temp, iocurrent); + 800128c: 693a ldr r2, [r7, #16] + 800128e: 68fb ldr r3, [r7, #12] + 8001290: 4313 orrs r3, r2 + 8001292: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8001294: 4a1d ldr r2, [pc, #116] @ (800130c ) + 8001296: 693b ldr r3, [r7, #16] + 8001298: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 800129a: 4b1c ldr r3, [pc, #112] @ (800130c ) + 800129c: 681b ldr r3, [r3, #0] + 800129e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80012a0: 68fb ldr r3, [r7, #12] + 80012a2: 43db mvns r3, r3 + 80012a4: 693a ldr r2, [r7, #16] + 80012a6: 4013 ands r3, r2 + 80012a8: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 80012aa: 683b ldr r3, [r7, #0] + 80012ac: 685b ldr r3, [r3, #4] + 80012ae: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80012b2: 2b00 cmp r3, #0 + 80012b4: d003 beq.n 80012be + { + SET_BIT(temp, iocurrent); + 80012b6: 693a ldr r2, [r7, #16] + 80012b8: 68fb ldr r3, [r7, #12] + 80012ba: 4313 orrs r3, r2 + 80012bc: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 80012be: 4a13 ldr r2, [pc, #76] @ (800130c ) + 80012c0: 693b ldr r3, [r7, #16] + 80012c2: 6013 str r3, [r2, #0] + } + } + + position++; + 80012c4: 697b ldr r3, [r7, #20] + 80012c6: 3301 adds r3, #1 + 80012c8: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80012ca: 683b ldr r3, [r7, #0] + 80012cc: 681a ldr r2, [r3, #0] + 80012ce: 697b ldr r3, [r7, #20] + 80012d0: fa22 f303 lsr.w r3, r2, r3 + 80012d4: 2b00 cmp r3, #0 + 80012d6: f47f ae97 bne.w 8001008 + } +} + 80012da: bf00 nop + 80012dc: bf00 nop + 80012de: 371c adds r7, #28 + 80012e0: 46bd mov sp, r7 + 80012e2: bc80 pop {r7} + 80012e4: 4770 bx lr + 80012e6: bf00 nop + 80012e8: 40023800 .word 0x40023800 + 80012ec: 40010000 .word 0x40010000 + 80012f0: 40020000 .word 0x40020000 + 80012f4: 40020400 .word 0x40020400 + 80012f8: 40020800 .word 0x40020800 + 80012fc: 40020c00 .word 0x40020c00 + 8001300: 40021000 .word 0x40021000 + 8001304: 40021400 .word 0x40021400 + 8001308: 40021800 .word 0x40021800 + 800130c: 40010400 .word 0x40010400 + +08001310 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 8001310: b480 push {r7} + 8001312: b083 sub sp, #12 + 8001314: af00 add r7, sp, #0 + 8001316: 6078 str r0, [r7, #4] + 8001318: 460b mov r3, r1 + 800131a: 807b strh r3, [r7, #2] + 800131c: 4613 mov r3, r2 + 800131e: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8001320: 787b ldrb r3, [r7, #1] + 8001322: 2b00 cmp r3, #0 + 8001324: d003 beq.n 800132e + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001326: 887a ldrh r2, [r7, #2] + 8001328: 687b ldr r3, [r7, #4] + 800132a: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 800132c: e003 b.n 8001336 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 800132e: 887b ldrh r3, [r7, #2] + 8001330: 041a lsls r2, r3, #16 + 8001332: 687b ldr r3, [r7, #4] + 8001334: 619a str r2, [r3, #24] +} + 8001336: bf00 nop + 8001338: 370c adds r7, #12 + 800133a: 46bd mov sp, r7 + 800133c: bc80 pop {r7} + 800133e: 4770 bx lr + +08001340 : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 8001340: b580 push {r7, lr} + 8001342: b082 sub sp, #8 + 8001344: af00 add r7, sp, #0 + 8001346: 4603 mov r3, r0 + 8001348: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 800134a: 4b08 ldr r3, [pc, #32] @ (800136c ) + 800134c: 695a ldr r2, [r3, #20] + 800134e: 88fb ldrh r3, [r7, #6] + 8001350: 4013 ands r3, r2 + 8001352: 2b00 cmp r3, #0 + 8001354: d006 beq.n 8001364 + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 8001356: 4a05 ldr r2, [pc, #20] @ (800136c ) + 8001358: 88fb ldrh r3, [r7, #6] + 800135a: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 800135c: 88fb ldrh r3, [r7, #6] + 800135e: 4618 mov r0, r3 + 8001360: f000 f806 bl 8001370 + } +} + 8001364: bf00 nop + 8001366: 3708 adds r7, #8 + 8001368: 46bd mov sp, r7 + 800136a: bd80 pop {r7, pc} + 800136c: 40010400 .word 0x40010400 + +08001370 : + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 8001370: b480 push {r7} + 8001372: b083 sub sp, #12 + 8001374: af00 add r7, sp, #0 + 8001376: 4603 mov r3, r0 + 8001378: 80fb strh r3, [r7, #6] + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + 800137a: bf00 nop + 800137c: 370c adds r7, #12 + 800137e: 46bd mov sp, r7 + 8001380: bc80 pop {r7} + 8001382: 4770 bx lr + +08001384 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8001384: b580 push {r7, lr} + 8001386: b088 sub sp, #32 + 8001388: af00 add r7, sp, #0 + 800138a: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 800138c: 687b ldr r3, [r7, #4] + 800138e: 2b00 cmp r3, #0 + 8001390: d101 bne.n 8001396 + { + return HAL_ERROR; + 8001392: 2301 movs r3, #1 + 8001394: e31d b.n 80019d2 + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8001396: 4b94 ldr r3, [pc, #592] @ (80015e8 ) + 8001398: 689b ldr r3, [r3, #8] + 800139a: f003 030c and.w r3, r3, #12 + 800139e: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 80013a0: 4b91 ldr r3, [pc, #580] @ (80015e8 ) + 80013a2: 689b ldr r3, [r3, #8] + 80013a4: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80013a8: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 80013aa: 687b ldr r3, [r7, #4] + 80013ac: 681b ldr r3, [r3, #0] + 80013ae: f003 0301 and.w r3, r3, #1 + 80013b2: 2b00 cmp r3, #0 + 80013b4: d07b beq.n 80014ae + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 80013b6: 69bb ldr r3, [r7, #24] + 80013b8: 2b08 cmp r3, #8 + 80013ba: d006 beq.n 80013ca + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 80013bc: 69bb ldr r3, [r7, #24] + 80013be: 2b0c cmp r3, #12 + 80013c0: d10f bne.n 80013e2 + 80013c2: 697b ldr r3, [r7, #20] + 80013c4: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80013c8: d10b bne.n 80013e2 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80013ca: 4b87 ldr r3, [pc, #540] @ (80015e8 ) + 80013cc: 681b ldr r3, [r3, #0] + 80013ce: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80013d2: 2b00 cmp r3, #0 + 80013d4: d06a beq.n 80014ac + 80013d6: 687b ldr r3, [r7, #4] + 80013d8: 685b ldr r3, [r3, #4] + 80013da: 2b00 cmp r3, #0 + 80013dc: d166 bne.n 80014ac + { + return HAL_ERROR; + 80013de: 2301 movs r3, #1 + 80013e0: e2f7 b.n 80019d2 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80013e2: 687b ldr r3, [r7, #4] + 80013e4: 685b ldr r3, [r3, #4] + 80013e6: 2b01 cmp r3, #1 + 80013e8: d106 bne.n 80013f8 + 80013ea: 4b7f ldr r3, [pc, #508] @ (80015e8 ) + 80013ec: 681b ldr r3, [r3, #0] + 80013ee: 4a7e ldr r2, [pc, #504] @ (80015e8 ) + 80013f0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80013f4: 6013 str r3, [r2, #0] + 80013f6: e02d b.n 8001454 + 80013f8: 687b ldr r3, [r7, #4] + 80013fa: 685b ldr r3, [r3, #4] + 80013fc: 2b00 cmp r3, #0 + 80013fe: d10c bne.n 800141a + 8001400: 4b79 ldr r3, [pc, #484] @ (80015e8 ) + 8001402: 681b ldr r3, [r3, #0] + 8001404: 4a78 ldr r2, [pc, #480] @ (80015e8 ) + 8001406: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800140a: 6013 str r3, [r2, #0] + 800140c: 4b76 ldr r3, [pc, #472] @ (80015e8 ) + 800140e: 681b ldr r3, [r3, #0] + 8001410: 4a75 ldr r2, [pc, #468] @ (80015e8 ) + 8001412: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001416: 6013 str r3, [r2, #0] + 8001418: e01c b.n 8001454 + 800141a: 687b ldr r3, [r7, #4] + 800141c: 685b ldr r3, [r3, #4] + 800141e: 2b05 cmp r3, #5 + 8001420: d10c bne.n 800143c + 8001422: 4b71 ldr r3, [pc, #452] @ (80015e8 ) + 8001424: 681b ldr r3, [r3, #0] + 8001426: 4a70 ldr r2, [pc, #448] @ (80015e8 ) + 8001428: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 800142c: 6013 str r3, [r2, #0] + 800142e: 4b6e ldr r3, [pc, #440] @ (80015e8 ) + 8001430: 681b ldr r3, [r3, #0] + 8001432: 4a6d ldr r2, [pc, #436] @ (80015e8 ) + 8001434: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001438: 6013 str r3, [r2, #0] + 800143a: e00b b.n 8001454 + 800143c: 4b6a ldr r3, [pc, #424] @ (80015e8 ) + 800143e: 681b ldr r3, [r3, #0] + 8001440: 4a69 ldr r2, [pc, #420] @ (80015e8 ) + 8001442: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001446: 6013 str r3, [r2, #0] + 8001448: 4b67 ldr r3, [pc, #412] @ (80015e8 ) + 800144a: 681b ldr r3, [r3, #0] + 800144c: 4a66 ldr r2, [pc, #408] @ (80015e8 ) + 800144e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001452: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8001454: 687b ldr r3, [r7, #4] + 8001456: 685b ldr r3, [r3, #4] + 8001458: 2b00 cmp r3, #0 + 800145a: d013 beq.n 8001484 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800145c: f7ff fc8e bl 8000d7c + 8001460: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001462: e008 b.n 8001476 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001464: f7ff fc8a bl 8000d7c + 8001468: 4602 mov r2, r0 + 800146a: 693b ldr r3, [r7, #16] + 800146c: 1ad3 subs r3, r2, r3 + 800146e: 2b64 cmp r3, #100 @ 0x64 + 8001470: d901 bls.n 8001476 + { + return HAL_TIMEOUT; + 8001472: 2303 movs r3, #3 + 8001474: e2ad b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001476: 4b5c ldr r3, [pc, #368] @ (80015e8 ) + 8001478: 681b ldr r3, [r3, #0] + 800147a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800147e: 2b00 cmp r3, #0 + 8001480: d0f0 beq.n 8001464 + 8001482: e014 b.n 80014ae + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001484: f7ff fc7a bl 8000d7c + 8001488: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800148a: e008 b.n 800149e + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 800148c: f7ff fc76 bl 8000d7c + 8001490: 4602 mov r2, r0 + 8001492: 693b ldr r3, [r7, #16] + 8001494: 1ad3 subs r3, r2, r3 + 8001496: 2b64 cmp r3, #100 @ 0x64 + 8001498: d901 bls.n 800149e + { + return HAL_TIMEOUT; + 800149a: 2303 movs r3, #3 + 800149c: e299 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800149e: 4b52 ldr r3, [pc, #328] @ (80015e8 ) + 80014a0: 681b ldr r3, [r3, #0] + 80014a2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80014a6: 2b00 cmp r3, #0 + 80014a8: d1f0 bne.n 800148c + 80014aa: e000 b.n 80014ae + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80014ac: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80014ae: 687b ldr r3, [r7, #4] + 80014b0: 681b ldr r3, [r3, #0] + 80014b2: f003 0302 and.w r3, r3, #2 + 80014b6: 2b00 cmp r3, #0 + 80014b8: d05a beq.n 8001570 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 80014ba: 69bb ldr r3, [r7, #24] + 80014bc: 2b04 cmp r3, #4 + 80014be: d005 beq.n 80014cc + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 80014c0: 69bb ldr r3, [r7, #24] + 80014c2: 2b0c cmp r3, #12 + 80014c4: d119 bne.n 80014fa + 80014c6: 697b ldr r3, [r7, #20] + 80014c8: 2b00 cmp r3, #0 + 80014ca: d116 bne.n 80014fa + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80014cc: 4b46 ldr r3, [pc, #280] @ (80015e8 ) + 80014ce: 681b ldr r3, [r3, #0] + 80014d0: f003 0302 and.w r3, r3, #2 + 80014d4: 2b00 cmp r3, #0 + 80014d6: d005 beq.n 80014e4 + 80014d8: 687b ldr r3, [r7, #4] + 80014da: 68db ldr r3, [r3, #12] + 80014dc: 2b01 cmp r3, #1 + 80014de: d001 beq.n 80014e4 + { + return HAL_ERROR; + 80014e0: 2301 movs r3, #1 + 80014e2: e276 b.n 80019d2 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80014e4: 4b40 ldr r3, [pc, #256] @ (80015e8 ) + 80014e6: 685b ldr r3, [r3, #4] + 80014e8: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80014ec: 687b ldr r3, [r7, #4] + 80014ee: 691b ldr r3, [r3, #16] + 80014f0: 021b lsls r3, r3, #8 + 80014f2: 493d ldr r1, [pc, #244] @ (80015e8 ) + 80014f4: 4313 orrs r3, r2 + 80014f6: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80014f8: e03a b.n 8001570 + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 80014fa: 687b ldr r3, [r7, #4] + 80014fc: 68db ldr r3, [r3, #12] + 80014fe: 2b00 cmp r3, #0 + 8001500: d020 beq.n 8001544 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 8001502: 4b3a ldr r3, [pc, #232] @ (80015ec ) + 8001504: 2201 movs r2, #1 + 8001506: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001508: f7ff fc38 bl 8000d7c + 800150c: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800150e: e008 b.n 8001522 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001510: f7ff fc34 bl 8000d7c + 8001514: 4602 mov r2, r0 + 8001516: 693b ldr r3, [r7, #16] + 8001518: 1ad3 subs r3, r2, r3 + 800151a: 2b02 cmp r3, #2 + 800151c: d901 bls.n 8001522 + { + return HAL_TIMEOUT; + 800151e: 2303 movs r3, #3 + 8001520: e257 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001522: 4b31 ldr r3, [pc, #196] @ (80015e8 ) + 8001524: 681b ldr r3, [r3, #0] + 8001526: f003 0302 and.w r3, r3, #2 + 800152a: 2b00 cmp r3, #0 + 800152c: d0f0 beq.n 8001510 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800152e: 4b2e ldr r3, [pc, #184] @ (80015e8 ) + 8001530: 685b ldr r3, [r3, #4] + 8001532: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001536: 687b ldr r3, [r7, #4] + 8001538: 691b ldr r3, [r3, #16] + 800153a: 021b lsls r3, r3, #8 + 800153c: 492a ldr r1, [pc, #168] @ (80015e8 ) + 800153e: 4313 orrs r3, r2 + 8001540: 604b str r3, [r1, #4] + 8001542: e015 b.n 8001570 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8001544: 4b29 ldr r3, [pc, #164] @ (80015ec ) + 8001546: 2200 movs r2, #0 + 8001548: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800154a: f7ff fc17 bl 8000d7c + 800154e: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001550: e008 b.n 8001564 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 8001552: f7ff fc13 bl 8000d7c + 8001556: 4602 mov r2, r0 + 8001558: 693b ldr r3, [r7, #16] + 800155a: 1ad3 subs r3, r2, r3 + 800155c: 2b02 cmp r3, #2 + 800155e: d901 bls.n 8001564 + { + return HAL_TIMEOUT; + 8001560: 2303 movs r3, #3 + 8001562: e236 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001564: 4b20 ldr r3, [pc, #128] @ (80015e8 ) + 8001566: 681b ldr r3, [r3, #0] + 8001568: f003 0302 and.w r3, r3, #2 + 800156c: 2b00 cmp r3, #0 + 800156e: d1f0 bne.n 8001552 + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 8001570: 687b ldr r3, [r7, #4] + 8001572: 681b ldr r3, [r3, #0] + 8001574: f003 0310 and.w r3, r3, #16 + 8001578: 2b00 cmp r3, #0 + 800157a: f000 80b8 beq.w 80016ee + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 800157e: 69bb ldr r3, [r7, #24] + 8001580: 2b00 cmp r3, #0 + 8001582: d170 bne.n 8001666 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 8001584: 4b18 ldr r3, [pc, #96] @ (80015e8 ) + 8001586: 681b ldr r3, [r3, #0] + 8001588: f403 7300 and.w r3, r3, #512 @ 0x200 + 800158c: 2b00 cmp r3, #0 + 800158e: d005 beq.n 800159c + 8001590: 687b ldr r3, [r7, #4] + 8001592: 699b ldr r3, [r3, #24] + 8001594: 2b00 cmp r3, #0 + 8001596: d101 bne.n 800159c + { + return HAL_ERROR; + 8001598: 2301 movs r3, #1 + 800159a: e21a b.n 80019d2 + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 800159c: 687b ldr r3, [r7, #4] + 800159e: 6a1a ldr r2, [r3, #32] + 80015a0: 4b11 ldr r3, [pc, #68] @ (80015e8 ) + 80015a2: 685b ldr r3, [r3, #4] + 80015a4: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80015a8: 429a cmp r2, r3 + 80015aa: d921 bls.n 80015f0 + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80015ac: 687b ldr r3, [r7, #4] + 80015ae: 6a1b ldr r3, [r3, #32] + 80015b0: 4618 mov r0, r3 + 80015b2: f000 fc09 bl 8001dc8 + 80015b6: 4603 mov r3, r0 + 80015b8: 2b00 cmp r3, #0 + 80015ba: d001 beq.n 80015c0 + { + return HAL_ERROR; + 80015bc: 2301 movs r3, #1 + 80015be: e208 b.n 80019d2 + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80015c0: 4b09 ldr r3, [pc, #36] @ (80015e8 ) + 80015c2: 685b ldr r3, [r3, #4] + 80015c4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80015c8: 687b ldr r3, [r7, #4] + 80015ca: 6a1b ldr r3, [r3, #32] + 80015cc: 4906 ldr r1, [pc, #24] @ (80015e8 ) + 80015ce: 4313 orrs r3, r2 + 80015d0: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80015d2: 4b05 ldr r3, [pc, #20] @ (80015e8 ) + 80015d4: 685b ldr r3, [r3, #4] + 80015d6: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80015da: 687b ldr r3, [r7, #4] + 80015dc: 69db ldr r3, [r3, #28] + 80015de: 061b lsls r3, r3, #24 + 80015e0: 4901 ldr r1, [pc, #4] @ (80015e8 ) + 80015e2: 4313 orrs r3, r2 + 80015e4: 604b str r3, [r1, #4] + 80015e6: e020 b.n 800162a + 80015e8: 40023800 .word 0x40023800 + 80015ec: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80015f0: 4b99 ldr r3, [pc, #612] @ (8001858 ) + 80015f2: 685b ldr r3, [r3, #4] + 80015f4: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80015f8: 687b ldr r3, [r7, #4] + 80015fa: 6a1b ldr r3, [r3, #32] + 80015fc: 4996 ldr r1, [pc, #600] @ (8001858 ) + 80015fe: 4313 orrs r3, r2 + 8001600: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001602: 4b95 ldr r3, [pc, #596] @ (8001858 ) + 8001604: 685b ldr r3, [r3, #4] + 8001606: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 800160a: 687b ldr r3, [r7, #4] + 800160c: 69db ldr r3, [r3, #28] + 800160e: 061b lsls r3, r3, #24 + 8001610: 4991 ldr r1, [pc, #580] @ (8001858 ) + 8001612: 4313 orrs r3, r2 + 8001614: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001616: 687b ldr r3, [r7, #4] + 8001618: 6a1b ldr r3, [r3, #32] + 800161a: 4618 mov r0, r3 + 800161c: f000 fbd4 bl 8001dc8 + 8001620: 4603 mov r3, r0 + 8001622: 2b00 cmp r3, #0 + 8001624: d001 beq.n 800162a + { + return HAL_ERROR; + 8001626: 2301 movs r3, #1 + 8001628: e1d3 b.n 80019d2 + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800162a: 687b ldr r3, [r7, #4] + 800162c: 6a1b ldr r3, [r3, #32] + 800162e: 0b5b lsrs r3, r3, #13 + 8001630: 3301 adds r3, #1 + 8001632: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001636: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 800163a: 4a87 ldr r2, [pc, #540] @ (8001858 ) + 800163c: 6892 ldr r2, [r2, #8] + 800163e: 0912 lsrs r2, r2, #4 + 8001640: f002 020f and.w r2, r2, #15 + 8001644: 4985 ldr r1, [pc, #532] @ (800185c ) + 8001646: 5c8a ldrb r2, [r1, r2] + 8001648: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 800164a: 4a85 ldr r2, [pc, #532] @ (8001860 ) + 800164c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 800164e: 4b85 ldr r3, [pc, #532] @ (8001864 ) + 8001650: 681b ldr r3, [r3, #0] + 8001652: 4618 mov r0, r3 + 8001654: f7ff fb46 bl 8000ce4 + 8001658: 4603 mov r3, r0 + 800165a: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 800165c: 7bfb ldrb r3, [r7, #15] + 800165e: 2b00 cmp r3, #0 + 8001660: d045 beq.n 80016ee + { + return status; + 8001662: 7bfb ldrb r3, [r7, #15] + 8001664: e1b5 b.n 80019d2 + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8001666: 687b ldr r3, [r7, #4] + 8001668: 699b ldr r3, [r3, #24] + 800166a: 2b00 cmp r3, #0 + 800166c: d029 beq.n 80016c2 + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 800166e: 4b7e ldr r3, [pc, #504] @ (8001868 ) + 8001670: 2201 movs r2, #1 + 8001672: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001674: f7ff fb82 bl 8000d7c + 8001678: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800167a: e008 b.n 800168e + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 800167c: f7ff fb7e bl 8000d7c + 8001680: 4602 mov r2, r0 + 8001682: 693b ldr r3, [r7, #16] + 8001684: 1ad3 subs r3, r2, r3 + 8001686: 2b02 cmp r3, #2 + 8001688: d901 bls.n 800168e + { + return HAL_TIMEOUT; + 800168a: 2303 movs r3, #3 + 800168c: e1a1 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800168e: 4b72 ldr r3, [pc, #456] @ (8001858 ) + 8001690: 681b ldr r3, [r3, #0] + 8001692: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001696: 2b00 cmp r3, #0 + 8001698: d0f0 beq.n 800167c + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800169a: 4b6f ldr r3, [pc, #444] @ (8001858 ) + 800169c: 685b ldr r3, [r3, #4] + 800169e: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80016a2: 687b ldr r3, [r7, #4] + 80016a4: 6a1b ldr r3, [r3, #32] + 80016a6: 496c ldr r1, [pc, #432] @ (8001858 ) + 80016a8: 4313 orrs r3, r2 + 80016aa: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80016ac: 4b6a ldr r3, [pc, #424] @ (8001858 ) + 80016ae: 685b ldr r3, [r3, #4] + 80016b0: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80016b4: 687b ldr r3, [r7, #4] + 80016b6: 69db ldr r3, [r3, #28] + 80016b8: 061b lsls r3, r3, #24 + 80016ba: 4967 ldr r1, [pc, #412] @ (8001858 ) + 80016bc: 4313 orrs r3, r2 + 80016be: 604b str r3, [r1, #4] + 80016c0: e015 b.n 80016ee + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 80016c2: 4b69 ldr r3, [pc, #420] @ (8001868 ) + 80016c4: 2200 movs r2, #0 + 80016c6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80016c8: f7ff fb58 bl 8000d7c + 80016cc: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80016ce: e008 b.n 80016e2 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80016d0: f7ff fb54 bl 8000d7c + 80016d4: 4602 mov r2, r0 + 80016d6: 693b ldr r3, [r7, #16] + 80016d8: 1ad3 subs r3, r2, r3 + 80016da: 2b02 cmp r3, #2 + 80016dc: d901 bls.n 80016e2 + { + return HAL_TIMEOUT; + 80016de: 2303 movs r3, #3 + 80016e0: e177 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80016e2: 4b5d ldr r3, [pc, #372] @ (8001858 ) + 80016e4: 681b ldr r3, [r3, #0] + 80016e6: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016ea: 2b00 cmp r3, #0 + 80016ec: d1f0 bne.n 80016d0 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 80016ee: 687b ldr r3, [r7, #4] + 80016f0: 681b ldr r3, [r3, #0] + 80016f2: f003 0308 and.w r3, r3, #8 + 80016f6: 2b00 cmp r3, #0 + 80016f8: d030 beq.n 800175c + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 80016fa: 687b ldr r3, [r7, #4] + 80016fc: 695b ldr r3, [r3, #20] + 80016fe: 2b00 cmp r3, #0 + 8001700: d016 beq.n 8001730 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8001702: 4b5a ldr r3, [pc, #360] @ (800186c ) + 8001704: 2201 movs r2, #1 + 8001706: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001708: f7ff fb38 bl 8000d7c + 800170c: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800170e: e008 b.n 8001722 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 8001710: f7ff fb34 bl 8000d7c + 8001714: 4602 mov r2, r0 + 8001716: 693b ldr r3, [r7, #16] + 8001718: 1ad3 subs r3, r2, r3 + 800171a: 2b02 cmp r3, #2 + 800171c: d901 bls.n 8001722 + { + return HAL_TIMEOUT; + 800171e: 2303 movs r3, #3 + 8001720: e157 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8001722: 4b4d ldr r3, [pc, #308] @ (8001858 ) + 8001724: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001726: f003 0302 and.w r3, r3, #2 + 800172a: 2b00 cmp r3, #0 + 800172c: d0f0 beq.n 8001710 + 800172e: e015 b.n 800175c + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8001730: 4b4e ldr r3, [pc, #312] @ (800186c ) + 8001732: 2200 movs r2, #0 + 8001734: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001736: f7ff fb21 bl 8000d7c + 800173a: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 800173c: e008 b.n 8001750 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800173e: f7ff fb1d bl 8000d7c + 8001742: 4602 mov r2, r0 + 8001744: 693b ldr r3, [r7, #16] + 8001746: 1ad3 subs r3, r2, r3 + 8001748: 2b02 cmp r3, #2 + 800174a: d901 bls.n 8001750 + { + return HAL_TIMEOUT; + 800174c: 2303 movs r3, #3 + 800174e: e140 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001750: 4b41 ldr r3, [pc, #260] @ (8001858 ) + 8001752: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001754: f003 0302 and.w r3, r3, #2 + 8001758: 2b00 cmp r3, #0 + 800175a: d1f0 bne.n 800173e + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 800175c: 687b ldr r3, [r7, #4] + 800175e: 681b ldr r3, [r3, #0] + 8001760: f003 0304 and.w r3, r3, #4 + 8001764: 2b00 cmp r3, #0 + 8001766: f000 80b5 beq.w 80018d4 + { + FlagStatus pwrclkchanged = RESET; + 800176a: 2300 movs r3, #0 + 800176c: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 800176e: 4b3a ldr r3, [pc, #232] @ (8001858 ) + 8001770: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001772: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001776: 2b00 cmp r3, #0 + 8001778: d10d bne.n 8001796 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 800177a: 4b37 ldr r3, [pc, #220] @ (8001858 ) + 800177c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800177e: 4a36 ldr r2, [pc, #216] @ (8001858 ) + 8001780: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001784: 6253 str r3, [r2, #36] @ 0x24 + 8001786: 4b34 ldr r3, [pc, #208] @ (8001858 ) + 8001788: 6a5b ldr r3, [r3, #36] @ 0x24 + 800178a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800178e: 60bb str r3, [r7, #8] + 8001790: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8001792: 2301 movs r3, #1 + 8001794: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001796: 4b36 ldr r3, [pc, #216] @ (8001870 ) + 8001798: 681b ldr r3, [r3, #0] + 800179a: f403 7380 and.w r3, r3, #256 @ 0x100 + 800179e: 2b00 cmp r3, #0 + 80017a0: d118 bne.n 80017d4 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80017a2: 4b33 ldr r3, [pc, #204] @ (8001870 ) + 80017a4: 681b ldr r3, [r3, #0] + 80017a6: 4a32 ldr r2, [pc, #200] @ (8001870 ) + 80017a8: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80017ac: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80017ae: f7ff fae5 bl 8000d7c + 80017b2: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80017b4: e008 b.n 80017c8 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80017b6: f7ff fae1 bl 8000d7c + 80017ba: 4602 mov r2, r0 + 80017bc: 693b ldr r3, [r7, #16] + 80017be: 1ad3 subs r3, r2, r3 + 80017c0: 2b64 cmp r3, #100 @ 0x64 + 80017c2: d901 bls.n 80017c8 + { + return HAL_TIMEOUT; + 80017c4: 2303 movs r3, #3 + 80017c6: e104 b.n 80019d2 + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80017c8: 4b29 ldr r3, [pc, #164] @ (8001870 ) + 80017ca: 681b ldr r3, [r3, #0] + 80017cc: f403 7380 and.w r3, r3, #256 @ 0x100 + 80017d0: 2b00 cmp r3, #0 + 80017d2: d0f0 beq.n 80017b6 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 80017d4: 687b ldr r3, [r7, #4] + 80017d6: 689b ldr r3, [r3, #8] + 80017d8: 2b01 cmp r3, #1 + 80017da: d106 bne.n 80017ea + 80017dc: 4b1e ldr r3, [pc, #120] @ (8001858 ) + 80017de: 6b5b ldr r3, [r3, #52] @ 0x34 + 80017e0: 4a1d ldr r2, [pc, #116] @ (8001858 ) + 80017e2: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80017e6: 6353 str r3, [r2, #52] @ 0x34 + 80017e8: e02d b.n 8001846 + 80017ea: 687b ldr r3, [r7, #4] + 80017ec: 689b ldr r3, [r3, #8] + 80017ee: 2b00 cmp r3, #0 + 80017f0: d10c bne.n 800180c + 80017f2: 4b19 ldr r3, [pc, #100] @ (8001858 ) + 80017f4: 6b5b ldr r3, [r3, #52] @ 0x34 + 80017f6: 4a18 ldr r2, [pc, #96] @ (8001858 ) + 80017f8: f423 7380 bic.w r3, r3, #256 @ 0x100 + 80017fc: 6353 str r3, [r2, #52] @ 0x34 + 80017fe: 4b16 ldr r3, [pc, #88] @ (8001858 ) + 8001800: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001802: 4a15 ldr r2, [pc, #84] @ (8001858 ) + 8001804: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001808: 6353 str r3, [r2, #52] @ 0x34 + 800180a: e01c b.n 8001846 + 800180c: 687b ldr r3, [r7, #4] + 800180e: 689b ldr r3, [r3, #8] + 8001810: 2b05 cmp r3, #5 + 8001812: d10c bne.n 800182e + 8001814: 4b10 ldr r3, [pc, #64] @ (8001858 ) + 8001816: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001818: 4a0f ldr r2, [pc, #60] @ (8001858 ) + 800181a: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 800181e: 6353 str r3, [r2, #52] @ 0x34 + 8001820: 4b0d ldr r3, [pc, #52] @ (8001858 ) + 8001822: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001824: 4a0c ldr r2, [pc, #48] @ (8001858 ) + 8001826: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800182a: 6353 str r3, [r2, #52] @ 0x34 + 800182c: e00b b.n 8001846 + 800182e: 4b0a ldr r3, [pc, #40] @ (8001858 ) + 8001830: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001832: 4a09 ldr r2, [pc, #36] @ (8001858 ) + 8001834: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001838: 6353 str r3, [r2, #52] @ 0x34 + 800183a: 4b07 ldr r3, [pc, #28] @ (8001858 ) + 800183c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800183e: 4a06 ldr r2, [pc, #24] @ (8001858 ) + 8001840: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001844: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8001846: 687b ldr r3, [r7, #4] + 8001848: 689b ldr r3, [r3, #8] + 800184a: 2b00 cmp r3, #0 + 800184c: d024 beq.n 8001898 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800184e: f7ff fa95 bl 8000d7c + 8001852: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001854: e019 b.n 800188a + 8001856: bf00 nop + 8001858: 40023800 .word 0x40023800 + 800185c: 08002eb0 .word 0x08002eb0 + 8001860: 20000000 .word 0x20000000 + 8001864: 20000004 .word 0x20000004 + 8001868: 42470020 .word 0x42470020 + 800186c: 42470680 .word 0x42470680 + 8001870: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001874: f7ff fa82 bl 8000d7c + 8001878: 4602 mov r2, r0 + 800187a: 693b ldr r3, [r7, #16] + 800187c: 1ad3 subs r3, r2, r3 + 800187e: f241 3288 movw r2, #5000 @ 0x1388 + 8001882: 4293 cmp r3, r2 + 8001884: d901 bls.n 800188a + { + return HAL_TIMEOUT; + 8001886: 2303 movs r3, #3 + 8001888: e0a3 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 800188a: 4b54 ldr r3, [pc, #336] @ (80019dc ) + 800188c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800188e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001892: 2b00 cmp r3, #0 + 8001894: d0ee beq.n 8001874 + 8001896: e014 b.n 80018c2 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001898: f7ff fa70 bl 8000d7c + 800189c: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 800189e: e00a b.n 80018b6 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80018a0: f7ff fa6c bl 8000d7c + 80018a4: 4602 mov r2, r0 + 80018a6: 693b ldr r3, [r7, #16] + 80018a8: 1ad3 subs r3, r2, r3 + 80018aa: f241 3288 movw r2, #5000 @ 0x1388 + 80018ae: 4293 cmp r3, r2 + 80018b0: d901 bls.n 80018b6 + { + return HAL_TIMEOUT; + 80018b2: 2303 movs r3, #3 + 80018b4: e08d b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80018b6: 4b49 ldr r3, [pc, #292] @ (80019dc ) + 80018b8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80018ba: f403 7300 and.w r3, r3, #512 @ 0x200 + 80018be: 2b00 cmp r3, #0 + 80018c0: d1ee bne.n 80018a0 + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 80018c2: 7ffb ldrb r3, [r7, #31] + 80018c4: 2b01 cmp r3, #1 + 80018c6: d105 bne.n 80018d4 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80018c8: 4b44 ldr r3, [pc, #272] @ (80019dc ) + 80018ca: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018cc: 4a43 ldr r2, [pc, #268] @ (80019dc ) + 80018ce: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80018d2: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80018d4: 687b ldr r3, [r7, #4] + 80018d6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018d8: 2b00 cmp r3, #0 + 80018da: d079 beq.n 80019d0 + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80018dc: 69bb ldr r3, [r7, #24] + 80018de: 2b0c cmp r3, #12 + 80018e0: d056 beq.n 8001990 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 80018e2: 687b ldr r3, [r7, #4] + 80018e4: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018e6: 2b02 cmp r3, #2 + 80018e8: d13b bne.n 8001962 + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80018ea: 4b3d ldr r3, [pc, #244] @ (80019e0 ) + 80018ec: 2200 movs r2, #0 + 80018ee: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80018f0: f7ff fa44 bl 8000d7c + 80018f4: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80018f6: e008 b.n 800190a + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80018f8: f7ff fa40 bl 8000d7c + 80018fc: 4602 mov r2, r0 + 80018fe: 693b ldr r3, [r7, #16] + 8001900: 1ad3 subs r3, r2, r3 + 8001902: 2b02 cmp r3, #2 + 8001904: d901 bls.n 800190a + { + return HAL_TIMEOUT; + 8001906: 2303 movs r3, #3 + 8001908: e063 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800190a: 4b34 ldr r3, [pc, #208] @ (80019dc ) + 800190c: 681b ldr r3, [r3, #0] + 800190e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001912: 2b00 cmp r3, #0 + 8001914: d1f0 bne.n 80018f8 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8001916: 4b31 ldr r3, [pc, #196] @ (80019dc ) + 8001918: 689b ldr r3, [r3, #8] + 800191a: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 800191e: 687b ldr r3, [r7, #4] + 8001920: 6a99 ldr r1, [r3, #40] @ 0x28 + 8001922: 687b ldr r3, [r7, #4] + 8001924: 6adb ldr r3, [r3, #44] @ 0x2c + 8001926: 4319 orrs r1, r3 + 8001928: 687b ldr r3, [r7, #4] + 800192a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800192c: 430b orrs r3, r1 + 800192e: 492b ldr r1, [pc, #172] @ (80019dc ) + 8001930: 4313 orrs r3, r2 + 8001932: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8001934: 4b2a ldr r3, [pc, #168] @ (80019e0 ) + 8001936: 2201 movs r2, #1 + 8001938: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800193a: f7ff fa1f bl 8000d7c + 800193e: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001940: e008 b.n 8001954 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001942: f7ff fa1b bl 8000d7c + 8001946: 4602 mov r2, r0 + 8001948: 693b ldr r3, [r7, #16] + 800194a: 1ad3 subs r3, r2, r3 + 800194c: 2b02 cmp r3, #2 + 800194e: d901 bls.n 8001954 + { + return HAL_TIMEOUT; + 8001950: 2303 movs r3, #3 + 8001952: e03e b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001954: 4b21 ldr r3, [pc, #132] @ (80019dc ) + 8001956: 681b ldr r3, [r3, #0] + 8001958: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800195c: 2b00 cmp r3, #0 + 800195e: d0f0 beq.n 8001942 + 8001960: e036 b.n 80019d0 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001962: 4b1f ldr r3, [pc, #124] @ (80019e0 ) + 8001964: 2200 movs r2, #0 + 8001966: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001968: f7ff fa08 bl 8000d7c + 800196c: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800196e: e008 b.n 8001982 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001970: f7ff fa04 bl 8000d7c + 8001974: 4602 mov r2, r0 + 8001976: 693b ldr r3, [r7, #16] + 8001978: 1ad3 subs r3, r2, r3 + 800197a: 2b02 cmp r3, #2 + 800197c: d901 bls.n 8001982 + { + return HAL_TIMEOUT; + 800197e: 2303 movs r3, #3 + 8001980: e027 b.n 80019d2 + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001982: 4b16 ldr r3, [pc, #88] @ (80019dc ) + 8001984: 681b ldr r3, [r3, #0] + 8001986: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800198a: 2b00 cmp r3, #0 + 800198c: d1f0 bne.n 8001970 + 800198e: e01f b.n 80019d0 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8001990: 687b ldr r3, [r7, #4] + 8001992: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001994: 2b01 cmp r3, #1 + 8001996: d101 bne.n 800199c + { + return HAL_ERROR; + 8001998: 2301 movs r3, #1 + 800199a: e01a b.n 80019d2 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 800199c: 4b0f ldr r3, [pc, #60] @ (80019dc ) + 800199e: 689b ldr r3, [r3, #8] + 80019a0: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80019a2: 697b ldr r3, [r7, #20] + 80019a4: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 80019a8: 687b ldr r3, [r7, #4] + 80019aa: 6a9b ldr r3, [r3, #40] @ 0x28 + 80019ac: 429a cmp r2, r3 + 80019ae: d10d bne.n 80019cc + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80019b0: 697b ldr r3, [r7, #20] + 80019b2: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 80019b6: 687b ldr r3, [r7, #4] + 80019b8: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80019ba: 429a cmp r2, r3 + 80019bc: d106 bne.n 80019cc + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 80019be: 697b ldr r3, [r7, #20] + 80019c0: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 80019c4: 687b ldr r3, [r7, #4] + 80019c6: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80019c8: 429a cmp r2, r3 + 80019ca: d001 beq.n 80019d0 + { + return HAL_ERROR; + 80019cc: 2301 movs r3, #1 + 80019ce: e000 b.n 80019d2 + } + } + } + } + + return HAL_OK; + 80019d0: 2300 movs r3, #0 +} + 80019d2: 4618 mov r0, r3 + 80019d4: 3720 adds r7, #32 + 80019d6: 46bd mov sp, r7 + 80019d8: bd80 pop {r7, pc} + 80019da: bf00 nop + 80019dc: 40023800 .word 0x40023800 + 80019e0: 42470060 .word 0x42470060 + +080019e4 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 80019e4: b580 push {r7, lr} + 80019e6: b084 sub sp, #16 + 80019e8: af00 add r7, sp, #0 + 80019ea: 6078 str r0, [r7, #4] + 80019ec: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 80019ee: 687b ldr r3, [r7, #4] + 80019f0: 2b00 cmp r3, #0 + 80019f2: d101 bne.n 80019f8 + { + return HAL_ERROR; + 80019f4: 2301 movs r3, #1 + 80019f6: e11a b.n 8001c2e + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 80019f8: 4b8f ldr r3, [pc, #572] @ (8001c38 ) + 80019fa: 681b ldr r3, [r3, #0] + 80019fc: f003 0301 and.w r3, r3, #1 + 8001a00: 683a ldr r2, [r7, #0] + 8001a02: 429a cmp r2, r3 + 8001a04: d919 bls.n 8001a3a + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001a06: 683b ldr r3, [r7, #0] + 8001a08: 2b01 cmp r3, #1 + 8001a0a: d105 bne.n 8001a18 + 8001a0c: 4b8a ldr r3, [pc, #552] @ (8001c38 ) + 8001a0e: 681b ldr r3, [r3, #0] + 8001a10: 4a89 ldr r2, [pc, #548] @ (8001c38 ) + 8001a12: f043 0304 orr.w r3, r3, #4 + 8001a16: 6013 str r3, [r2, #0] + 8001a18: 4b87 ldr r3, [pc, #540] @ (8001c38 ) + 8001a1a: 681b ldr r3, [r3, #0] + 8001a1c: f023 0201 bic.w r2, r3, #1 + 8001a20: 4985 ldr r1, [pc, #532] @ (8001c38 ) + 8001a22: 683b ldr r3, [r7, #0] + 8001a24: 4313 orrs r3, r2 + 8001a26: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001a28: 4b83 ldr r3, [pc, #524] @ (8001c38 ) + 8001a2a: 681b ldr r3, [r3, #0] + 8001a2c: f003 0301 and.w r3, r3, #1 + 8001a30: 683a ldr r2, [r7, #0] + 8001a32: 429a cmp r2, r3 + 8001a34: d001 beq.n 8001a3a + { + return HAL_ERROR; + 8001a36: 2301 movs r3, #1 + 8001a38: e0f9 b.n 8001c2e + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001a3a: 687b ldr r3, [r7, #4] + 8001a3c: 681b ldr r3, [r3, #0] + 8001a3e: f003 0302 and.w r3, r3, #2 + 8001a42: 2b00 cmp r3, #0 + 8001a44: d008 beq.n 8001a58 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8001a46: 4b7d ldr r3, [pc, #500] @ (8001c3c ) + 8001a48: 689b ldr r3, [r3, #8] + 8001a4a: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001a4e: 687b ldr r3, [r7, #4] + 8001a50: 689b ldr r3, [r3, #8] + 8001a52: 497a ldr r1, [pc, #488] @ (8001c3c ) + 8001a54: 4313 orrs r3, r2 + 8001a56: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001a58: 687b ldr r3, [r7, #4] + 8001a5a: 681b ldr r3, [r3, #0] + 8001a5c: f003 0301 and.w r3, r3, #1 + 8001a60: 2b00 cmp r3, #0 + 8001a62: f000 808e beq.w 8001b82 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001a66: 687b ldr r3, [r7, #4] + 8001a68: 685b ldr r3, [r3, #4] + 8001a6a: 2b02 cmp r3, #2 + 8001a6c: d107 bne.n 8001a7e + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001a6e: 4b73 ldr r3, [pc, #460] @ (8001c3c ) + 8001a70: 681b ldr r3, [r3, #0] + 8001a72: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001a76: 2b00 cmp r3, #0 + 8001a78: d121 bne.n 8001abe + { + return HAL_ERROR; + 8001a7a: 2301 movs r3, #1 + 8001a7c: e0d7 b.n 8001c2e + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001a7e: 687b ldr r3, [r7, #4] + 8001a80: 685b ldr r3, [r3, #4] + 8001a82: 2b03 cmp r3, #3 + 8001a84: d107 bne.n 8001a96 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001a86: 4b6d ldr r3, [pc, #436] @ (8001c3c ) + 8001a88: 681b ldr r3, [r3, #0] + 8001a8a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001a8e: 2b00 cmp r3, #0 + 8001a90: d115 bne.n 8001abe + { + return HAL_ERROR; + 8001a92: 2301 movs r3, #1 + 8001a94: e0cb b.n 8001c2e + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001a96: 687b ldr r3, [r7, #4] + 8001a98: 685b ldr r3, [r3, #4] + 8001a9a: 2b01 cmp r3, #1 + 8001a9c: d107 bne.n 8001aae + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001a9e: 4b67 ldr r3, [pc, #412] @ (8001c3c ) + 8001aa0: 681b ldr r3, [r3, #0] + 8001aa2: f003 0302 and.w r3, r3, #2 + 8001aa6: 2b00 cmp r3, #0 + 8001aa8: d109 bne.n 8001abe + { + return HAL_ERROR; + 8001aaa: 2301 movs r3, #1 + 8001aac: e0bf b.n 8001c2e + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001aae: 4b63 ldr r3, [pc, #396] @ (8001c3c ) + 8001ab0: 681b ldr r3, [r3, #0] + 8001ab2: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001ab6: 2b00 cmp r3, #0 + 8001ab8: d101 bne.n 8001abe + { + return HAL_ERROR; + 8001aba: 2301 movs r3, #1 + 8001abc: e0b7 b.n 8001c2e + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8001abe: 4b5f ldr r3, [pc, #380] @ (8001c3c ) + 8001ac0: 689b ldr r3, [r3, #8] + 8001ac2: f023 0203 bic.w r2, r3, #3 + 8001ac6: 687b ldr r3, [r7, #4] + 8001ac8: 685b ldr r3, [r3, #4] + 8001aca: 495c ldr r1, [pc, #368] @ (8001c3c ) + 8001acc: 4313 orrs r3, r2 + 8001ace: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001ad0: f7ff f954 bl 8000d7c + 8001ad4: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001ad6: 687b ldr r3, [r7, #4] + 8001ad8: 685b ldr r3, [r3, #4] + 8001ada: 2b02 cmp r3, #2 + 8001adc: d112 bne.n 8001b04 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001ade: e00a b.n 8001af6 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001ae0: f7ff f94c bl 8000d7c + 8001ae4: 4602 mov r2, r0 + 8001ae6: 68fb ldr r3, [r7, #12] + 8001ae8: 1ad3 subs r3, r2, r3 + 8001aea: f241 3288 movw r2, #5000 @ 0x1388 + 8001aee: 4293 cmp r3, r2 + 8001af0: d901 bls.n 8001af6 + { + return HAL_TIMEOUT; + 8001af2: 2303 movs r3, #3 + 8001af4: e09b b.n 8001c2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001af6: 4b51 ldr r3, [pc, #324] @ (8001c3c ) + 8001af8: 689b ldr r3, [r3, #8] + 8001afa: f003 030c and.w r3, r3, #12 + 8001afe: 2b08 cmp r3, #8 + 8001b00: d1ee bne.n 8001ae0 + 8001b02: e03e b.n 8001b82 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001b04: 687b ldr r3, [r7, #4] + 8001b06: 685b ldr r3, [r3, #4] + 8001b08: 2b03 cmp r3, #3 + 8001b0a: d112 bne.n 8001b32 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001b0c: e00a b.n 8001b24 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b0e: f7ff f935 bl 8000d7c + 8001b12: 4602 mov r2, r0 + 8001b14: 68fb ldr r3, [r7, #12] + 8001b16: 1ad3 subs r3, r2, r3 + 8001b18: f241 3288 movw r2, #5000 @ 0x1388 + 8001b1c: 4293 cmp r3, r2 + 8001b1e: d901 bls.n 8001b24 + { + return HAL_TIMEOUT; + 8001b20: 2303 movs r3, #3 + 8001b22: e084 b.n 8001c2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001b24: 4b45 ldr r3, [pc, #276] @ (8001c3c ) + 8001b26: 689b ldr r3, [r3, #8] + 8001b28: f003 030c and.w r3, r3, #12 + 8001b2c: 2b0c cmp r3, #12 + 8001b2e: d1ee bne.n 8001b0e + 8001b30: e027 b.n 8001b82 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001b32: 687b ldr r3, [r7, #4] + 8001b34: 685b ldr r3, [r3, #4] + 8001b36: 2b01 cmp r3, #1 + 8001b38: d11d bne.n 8001b76 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001b3a: e00a b.n 8001b52 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b3c: f7ff f91e bl 8000d7c + 8001b40: 4602 mov r2, r0 + 8001b42: 68fb ldr r3, [r7, #12] + 8001b44: 1ad3 subs r3, r2, r3 + 8001b46: f241 3288 movw r2, #5000 @ 0x1388 + 8001b4a: 4293 cmp r3, r2 + 8001b4c: d901 bls.n 8001b52 + { + return HAL_TIMEOUT; + 8001b4e: 2303 movs r3, #3 + 8001b50: e06d b.n 8001c2e + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001b52: 4b3a ldr r3, [pc, #232] @ (8001c3c ) + 8001b54: 689b ldr r3, [r3, #8] + 8001b56: f003 030c and.w r3, r3, #12 + 8001b5a: 2b04 cmp r3, #4 + 8001b5c: d1ee bne.n 8001b3c + 8001b5e: e010 b.n 8001b82 + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b60: f7ff f90c bl 8000d7c + 8001b64: 4602 mov r2, r0 + 8001b66: 68fb ldr r3, [r7, #12] + 8001b68: 1ad3 subs r3, r2, r3 + 8001b6a: f241 3288 movw r2, #5000 @ 0x1388 + 8001b6e: 4293 cmp r3, r2 + 8001b70: d901 bls.n 8001b76 + { + return HAL_TIMEOUT; + 8001b72: 2303 movs r3, #3 + 8001b74: e05b b.n 8001c2e + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8001b76: 4b31 ldr r3, [pc, #196] @ (8001c3c ) + 8001b78: 689b ldr r3, [r3, #8] + 8001b7a: f003 030c and.w r3, r3, #12 + 8001b7e: 2b00 cmp r3, #0 + 8001b80: d1ee bne.n 8001b60 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8001b82: 4b2d ldr r3, [pc, #180] @ (8001c38 ) + 8001b84: 681b ldr r3, [r3, #0] + 8001b86: f003 0301 and.w r3, r3, #1 + 8001b8a: 683a ldr r2, [r7, #0] + 8001b8c: 429a cmp r2, r3 + 8001b8e: d219 bcs.n 8001bc4 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001b90: 683b ldr r3, [r7, #0] + 8001b92: 2b01 cmp r3, #1 + 8001b94: d105 bne.n 8001ba2 + 8001b96: 4b28 ldr r3, [pc, #160] @ (8001c38 ) + 8001b98: 681b ldr r3, [r3, #0] + 8001b9a: 4a27 ldr r2, [pc, #156] @ (8001c38 ) + 8001b9c: f043 0304 orr.w r3, r3, #4 + 8001ba0: 6013 str r3, [r2, #0] + 8001ba2: 4b25 ldr r3, [pc, #148] @ (8001c38 ) + 8001ba4: 681b ldr r3, [r3, #0] + 8001ba6: f023 0201 bic.w r2, r3, #1 + 8001baa: 4923 ldr r1, [pc, #140] @ (8001c38 ) + 8001bac: 683b ldr r3, [r7, #0] + 8001bae: 4313 orrs r3, r2 + 8001bb0: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001bb2: 4b21 ldr r3, [pc, #132] @ (8001c38 ) + 8001bb4: 681b ldr r3, [r3, #0] + 8001bb6: f003 0301 and.w r3, r3, #1 + 8001bba: 683a ldr r2, [r7, #0] + 8001bbc: 429a cmp r2, r3 + 8001bbe: d001 beq.n 8001bc4 + { + return HAL_ERROR; + 8001bc0: 2301 movs r3, #1 + 8001bc2: e034 b.n 8001c2e + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001bc4: 687b ldr r3, [r7, #4] + 8001bc6: 681b ldr r3, [r3, #0] + 8001bc8: f003 0304 and.w r3, r3, #4 + 8001bcc: 2b00 cmp r3, #0 + 8001bce: d008 beq.n 8001be2 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001bd0: 4b1a ldr r3, [pc, #104] @ (8001c3c ) + 8001bd2: 689b ldr r3, [r3, #8] + 8001bd4: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001bd8: 687b ldr r3, [r7, #4] + 8001bda: 68db ldr r3, [r3, #12] + 8001bdc: 4917 ldr r1, [pc, #92] @ (8001c3c ) + 8001bde: 4313 orrs r3, r2 + 8001be0: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001be2: 687b ldr r3, [r7, #4] + 8001be4: 681b ldr r3, [r3, #0] + 8001be6: f003 0308 and.w r3, r3, #8 + 8001bea: 2b00 cmp r3, #0 + 8001bec: d009 beq.n 8001c02 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001bee: 4b13 ldr r3, [pc, #76] @ (8001c3c ) + 8001bf0: 689b ldr r3, [r3, #8] + 8001bf2: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001bf6: 687b ldr r3, [r7, #4] + 8001bf8: 691b ldr r3, [r3, #16] + 8001bfa: 00db lsls r3, r3, #3 + 8001bfc: 490f ldr r1, [pc, #60] @ (8001c3c ) + 8001bfe: 4313 orrs r3, r2 + 8001c00: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001c02: f000 f823 bl 8001c4c + 8001c06: 4602 mov r2, r0 + 8001c08: 4b0c ldr r3, [pc, #48] @ (8001c3c ) + 8001c0a: 689b ldr r3, [r3, #8] + 8001c0c: 091b lsrs r3, r3, #4 + 8001c0e: f003 030f and.w r3, r3, #15 + 8001c12: 490b ldr r1, [pc, #44] @ (8001c40 ) + 8001c14: 5ccb ldrb r3, [r1, r3] + 8001c16: fa22 f303 lsr.w r3, r2, r3 + 8001c1a: 4a0a ldr r2, [pc, #40] @ (8001c44 ) + 8001c1c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001c1e: 4b0a ldr r3, [pc, #40] @ (8001c48 ) + 8001c20: 681b ldr r3, [r3, #0] + 8001c22: 4618 mov r0, r3 + 8001c24: f7ff f85e bl 8000ce4 + 8001c28: 4603 mov r3, r0 + 8001c2a: 72fb strb r3, [r7, #11] + + return status; + 8001c2c: 7afb ldrb r3, [r7, #11] +} + 8001c2e: 4618 mov r0, r3 + 8001c30: 3710 adds r7, #16 + 8001c32: 46bd mov sp, r7 + 8001c34: bd80 pop {r7, pc} + 8001c36: bf00 nop + 8001c38: 40023c00 .word 0x40023c00 + 8001c3c: 40023800 .word 0x40023800 + 8001c40: 08002eb0 .word 0x08002eb0 + 8001c44: 20000000 .word 0x20000000 + 8001c48: 20000004 .word 0x20000004 + +08001c4c : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001c4c: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001c50: b08e sub sp, #56 @ 0x38 + 8001c52: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001c54: 4b58 ldr r3, [pc, #352] @ (8001db8 ) + 8001c56: 689b ldr r3, [r3, #8] + 8001c58: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001c5a: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c5c: f003 030c and.w r3, r3, #12 + 8001c60: 2b0c cmp r3, #12 + 8001c62: d00d beq.n 8001c80 + 8001c64: 2b0c cmp r3, #12 + 8001c66: f200 8092 bhi.w 8001d8e + 8001c6a: 2b04 cmp r3, #4 + 8001c6c: d002 beq.n 8001c74 + 8001c6e: 2b08 cmp r3, #8 + 8001c70: d003 beq.n 8001c7a + 8001c72: e08c b.n 8001d8e + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001c74: 4b51 ldr r3, [pc, #324] @ (8001dbc ) + 8001c76: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c78: e097 b.n 8001daa + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001c7a: 4b51 ldr r3, [pc, #324] @ (8001dc0 ) + 8001c7c: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c7e: e094 b.n 8001daa + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001c80: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c82: 0c9b lsrs r3, r3, #18 + 8001c84: f003 020f and.w r2, r3, #15 + 8001c88: 4b4e ldr r3, [pc, #312] @ (8001dc4 ) + 8001c8a: 5c9b ldrb r3, [r3, r2] + 8001c8c: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001c8e: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c90: 0d9b lsrs r3, r3, #22 + 8001c92: f003 0303 and.w r3, r3, #3 + 8001c96: 3301 adds r3, #1 + 8001c98: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001c9a: 4b47 ldr r3, [pc, #284] @ (8001db8 ) + 8001c9c: 689b ldr r3, [r3, #8] + 8001c9e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001ca2: 2b00 cmp r3, #0 + 8001ca4: d021 beq.n 8001cea + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001ca6: 6abb ldr r3, [r7, #40] @ 0x28 + 8001ca8: 2200 movs r2, #0 + 8001caa: 61bb str r3, [r7, #24] + 8001cac: 61fa str r2, [r7, #28] + 8001cae: 4b44 ldr r3, [pc, #272] @ (8001dc0 ) + 8001cb0: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001cb4: 464a mov r2, r9 + 8001cb6: fb03 f202 mul.w r2, r3, r2 + 8001cba: 2300 movs r3, #0 + 8001cbc: 4644 mov r4, r8 + 8001cbe: fb04 f303 mul.w r3, r4, r3 + 8001cc2: 4413 add r3, r2 + 8001cc4: 4a3e ldr r2, [pc, #248] @ (8001dc0 ) + 8001cc6: 4644 mov r4, r8 + 8001cc8: fba4 0102 umull r0, r1, r4, r2 + 8001ccc: 440b add r3, r1 + 8001cce: 4619 mov r1, r3 + 8001cd0: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001cd2: 2200 movs r2, #0 + 8001cd4: 613b str r3, [r7, #16] + 8001cd6: 617a str r2, [r7, #20] + 8001cd8: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001cdc: f7fe fa4e bl 800017c <__aeabi_uldivmod> + 8001ce0: 4602 mov r2, r0 + 8001ce2: 460b mov r3, r1 + 8001ce4: 4613 mov r3, r2 + 8001ce6: 637b str r3, [r7, #52] @ 0x34 + 8001ce8: e04e b.n 8001d88 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001cea: 6abb ldr r3, [r7, #40] @ 0x28 + 8001cec: 2200 movs r2, #0 + 8001cee: 469a mov sl, r3 + 8001cf0: 4693 mov fp, r2 + 8001cf2: 4652 mov r2, sl + 8001cf4: 465b mov r3, fp + 8001cf6: f04f 0000 mov.w r0, #0 + 8001cfa: f04f 0100 mov.w r1, #0 + 8001cfe: 0159 lsls r1, r3, #5 + 8001d00: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001d04: 0150 lsls r0, r2, #5 + 8001d06: 4602 mov r2, r0 + 8001d08: 460b mov r3, r1 + 8001d0a: ebb2 080a subs.w r8, r2, sl + 8001d0e: eb63 090b sbc.w r9, r3, fp + 8001d12: f04f 0200 mov.w r2, #0 + 8001d16: f04f 0300 mov.w r3, #0 + 8001d1a: ea4f 1389 mov.w r3, r9, lsl #6 + 8001d1e: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001d22: ea4f 1288 mov.w r2, r8, lsl #6 + 8001d26: ebb2 0408 subs.w r4, r2, r8 + 8001d2a: eb63 0509 sbc.w r5, r3, r9 + 8001d2e: f04f 0200 mov.w r2, #0 + 8001d32: f04f 0300 mov.w r3, #0 + 8001d36: 00eb lsls r3, r5, #3 + 8001d38: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001d3c: 00e2 lsls r2, r4, #3 + 8001d3e: 4614 mov r4, r2 + 8001d40: 461d mov r5, r3 + 8001d42: eb14 030a adds.w r3, r4, sl + 8001d46: 603b str r3, [r7, #0] + 8001d48: eb45 030b adc.w r3, r5, fp + 8001d4c: 607b str r3, [r7, #4] + 8001d4e: f04f 0200 mov.w r2, #0 + 8001d52: f04f 0300 mov.w r3, #0 + 8001d56: e9d7 4500 ldrd r4, r5, [r7] + 8001d5a: 4629 mov r1, r5 + 8001d5c: 028b lsls r3, r1, #10 + 8001d5e: 4620 mov r0, r4 + 8001d60: 4629 mov r1, r5 + 8001d62: 4604 mov r4, r0 + 8001d64: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001d68: 4601 mov r1, r0 + 8001d6a: 028a lsls r2, r1, #10 + 8001d6c: 4610 mov r0, r2 + 8001d6e: 4619 mov r1, r3 + 8001d70: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001d72: 2200 movs r2, #0 + 8001d74: 60bb str r3, [r7, #8] + 8001d76: 60fa str r2, [r7, #12] + 8001d78: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001d7c: f7fe f9fe bl 800017c <__aeabi_uldivmod> + 8001d80: 4602 mov r2, r0 + 8001d82: 460b mov r3, r1 + 8001d84: 4613 mov r3, r2 + 8001d86: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001d88: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001d8a: 633b str r3, [r7, #48] @ 0x30 + break; + 8001d8c: e00d b.n 8001daa + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001d8e: 4b0a ldr r3, [pc, #40] @ (8001db8 ) + 8001d90: 685b ldr r3, [r3, #4] + 8001d92: 0b5b lsrs r3, r3, #13 + 8001d94: f003 0307 and.w r3, r3, #7 + 8001d98: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001d9a: 6a3b ldr r3, [r7, #32] + 8001d9c: 3301 adds r3, #1 + 8001d9e: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001da2: fa02 f303 lsl.w r3, r2, r3 + 8001da6: 633b str r3, [r7, #48] @ 0x30 + break; + 8001da8: bf00 nop + } + } + return sysclockfreq; + 8001daa: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001dac: 4618 mov r0, r3 + 8001dae: 3738 adds r7, #56 @ 0x38 + 8001db0: 46bd mov sp, r7 + 8001db2: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001db6: bf00 nop + 8001db8: 40023800 .word 0x40023800 + 8001dbc: 00f42400 .word 0x00f42400 + 8001dc0: 016e3600 .word 0x016e3600 + 8001dc4: 08002ea4 .word 0x08002ea4 + +08001dc8 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001dc8: b480 push {r7} + 8001dca: b087 sub sp, #28 + 8001dcc: af00 add r7, sp, #0 + 8001dce: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001dd0: 2300 movs r3, #0 + 8001dd2: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001dd4: 4b29 ldr r3, [pc, #164] @ (8001e7c ) + 8001dd6: 689b ldr r3, [r3, #8] + 8001dd8: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001ddc: 2b00 cmp r3, #0 + 8001dde: d12c bne.n 8001e3a + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001de0: 4b26 ldr r3, [pc, #152] @ (8001e7c ) + 8001de2: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001de4: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001de8: 2b00 cmp r3, #0 + 8001dea: d005 beq.n 8001df8 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001dec: 4b24 ldr r3, [pc, #144] @ (8001e80 ) + 8001dee: 681b ldr r3, [r3, #0] + 8001df0: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001df4: 617b str r3, [r7, #20] + 8001df6: e016 b.n 8001e26 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001df8: 4b20 ldr r3, [pc, #128] @ (8001e7c ) + 8001dfa: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001dfc: 4a1f ldr r2, [pc, #124] @ (8001e7c ) + 8001dfe: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001e02: 6253 str r3, [r2, #36] @ 0x24 + 8001e04: 4b1d ldr r3, [pc, #116] @ (8001e7c ) + 8001e06: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e08: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001e0c: 60fb str r3, [r7, #12] + 8001e0e: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001e10: 4b1b ldr r3, [pc, #108] @ (8001e80 ) + 8001e12: 681b ldr r3, [r3, #0] + 8001e14: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001e18: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001e1a: 4b18 ldr r3, [pc, #96] @ (8001e7c ) + 8001e1c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e1e: 4a17 ldr r2, [pc, #92] @ (8001e7c ) + 8001e20: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001e24: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001e26: 697b ldr r3, [r7, #20] + 8001e28: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001e2c: d105 bne.n 8001e3a + 8001e2e: 687b ldr r3, [r7, #4] + 8001e30: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001e34: d101 bne.n 8001e3a + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001e36: 2301 movs r3, #1 + 8001e38: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001e3a: 693b ldr r3, [r7, #16] + 8001e3c: 2b01 cmp r3, #1 + 8001e3e: d105 bne.n 8001e4c + 8001e40: 4b10 ldr r3, [pc, #64] @ (8001e84 ) + 8001e42: 681b ldr r3, [r3, #0] + 8001e44: 4a0f ldr r2, [pc, #60] @ (8001e84 ) + 8001e46: f043 0304 orr.w r3, r3, #4 + 8001e4a: 6013 str r3, [r2, #0] + 8001e4c: 4b0d ldr r3, [pc, #52] @ (8001e84 ) + 8001e4e: 681b ldr r3, [r3, #0] + 8001e50: f023 0201 bic.w r2, r3, #1 + 8001e54: 490b ldr r1, [pc, #44] @ (8001e84 ) + 8001e56: 693b ldr r3, [r7, #16] + 8001e58: 4313 orrs r3, r2 + 8001e5a: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001e5c: 4b09 ldr r3, [pc, #36] @ (8001e84 ) + 8001e5e: 681b ldr r3, [r3, #0] + 8001e60: f003 0301 and.w r3, r3, #1 + 8001e64: 693a ldr r2, [r7, #16] + 8001e66: 429a cmp r2, r3 + 8001e68: d001 beq.n 8001e6e + { + return HAL_ERROR; + 8001e6a: 2301 movs r3, #1 + 8001e6c: e000 b.n 8001e70 + } + + return HAL_OK; + 8001e6e: 2300 movs r3, #0 +} + 8001e70: 4618 mov r0, r3 + 8001e72: 371c adds r7, #28 + 8001e74: 46bd mov sp, r7 + 8001e76: bc80 pop {r7} + 8001e78: 4770 bx lr + 8001e7a: bf00 nop + 8001e7c: 40023800 .word 0x40023800 + 8001e80: 40007000 .word 0x40007000 + 8001e84: 40023c00 .word 0x40023c00 + +08001e88 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001e88: b580 push {r7, lr} + 8001e8a: b082 sub sp, #8 + 8001e8c: af00 add r7, sp, #0 + 8001e8e: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001e90: 687b ldr r3, [r7, #4] + 8001e92: 2b00 cmp r3, #0 + 8001e94: d101 bne.n 8001e9a + { + return HAL_ERROR; + 8001e96: 2301 movs r3, #1 + 8001e98: e07b b.n 8001f92 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001e9a: 687b ldr r3, [r7, #4] + 8001e9c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e9e: 2b00 cmp r3, #0 + 8001ea0: d108 bne.n 8001eb4 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001ea2: 687b ldr r3, [r7, #4] + 8001ea4: 685b ldr r3, [r3, #4] + 8001ea6: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001eaa: d009 beq.n 8001ec0 + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001eac: 687b ldr r3, [r7, #4] + 8001eae: 2200 movs r2, #0 + 8001eb0: 61da str r2, [r3, #28] + 8001eb2: e005 b.n 8001ec0 + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001eb4: 687b ldr r3, [r7, #4] + 8001eb6: 2200 movs r2, #0 + 8001eb8: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001eba: 687b ldr r3, [r7, #4] + 8001ebc: 2200 movs r2, #0 + 8001ebe: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001ec0: 687b ldr r3, [r7, #4] + 8001ec2: 2200 movs r2, #0 + 8001ec4: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001ec6: 687b ldr r3, [r7, #4] + 8001ec8: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001ecc: b2db uxtb r3, r3 + 8001ece: 2b00 cmp r3, #0 + 8001ed0: d106 bne.n 8001ee0 + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001ed2: 687b ldr r3, [r7, #4] + 8001ed4: 2200 movs r2, #0 + 8001ed6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001eda: 6878 ldr r0, [r7, #4] + 8001edc: f7fe fd5a bl 8000994 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001ee0: 687b ldr r3, [r7, #4] + 8001ee2: 2202 movs r2, #2 + 8001ee4: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001ee8: 687b ldr r3, [r7, #4] + 8001eea: 681b ldr r3, [r3, #0] + 8001eec: 681a ldr r2, [r3, #0] + 8001eee: 687b ldr r3, [r7, #4] + 8001ef0: 681b ldr r3, [r3, #0] + 8001ef2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001ef6: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001ef8: 687b ldr r3, [r7, #4] + 8001efa: 685b ldr r3, [r3, #4] + 8001efc: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001f00: 687b ldr r3, [r7, #4] + 8001f02: 689b ldr r3, [r3, #8] + 8001f04: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001f08: 431a orrs r2, r3 + 8001f0a: 687b ldr r3, [r7, #4] + 8001f0c: 68db ldr r3, [r3, #12] + 8001f0e: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001f12: 431a orrs r2, r3 + 8001f14: 687b ldr r3, [r7, #4] + 8001f16: 691b ldr r3, [r3, #16] + 8001f18: f003 0302 and.w r3, r3, #2 + 8001f1c: 431a orrs r2, r3 + 8001f1e: 687b ldr r3, [r7, #4] + 8001f20: 695b ldr r3, [r3, #20] + 8001f22: f003 0301 and.w r3, r3, #1 + 8001f26: 431a orrs r2, r3 + 8001f28: 687b ldr r3, [r7, #4] + 8001f2a: 699b ldr r3, [r3, #24] + 8001f2c: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001f30: 431a orrs r2, r3 + 8001f32: 687b ldr r3, [r7, #4] + 8001f34: 69db ldr r3, [r3, #28] + 8001f36: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001f3a: 431a orrs r2, r3 + 8001f3c: 687b ldr r3, [r7, #4] + 8001f3e: 6a1b ldr r3, [r3, #32] + 8001f40: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001f44: ea42 0103 orr.w r1, r2, r3 + 8001f48: 687b ldr r3, [r7, #4] + 8001f4a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001f4c: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001f50: 687b ldr r3, [r7, #4] + 8001f52: 681b ldr r3, [r3, #0] + 8001f54: 430a orrs r2, r1 + 8001f56: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001f58: 687b ldr r3, [r7, #4] + 8001f5a: 699b ldr r3, [r3, #24] + 8001f5c: 0c1b lsrs r3, r3, #16 + 8001f5e: f003 0104 and.w r1, r3, #4 + 8001f62: 687b ldr r3, [r7, #4] + 8001f64: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f66: f003 0210 and.w r2, r3, #16 + 8001f6a: 687b ldr r3, [r7, #4] + 8001f6c: 681b ldr r3, [r3, #0] + 8001f6e: 430a orrs r2, r1 + 8001f70: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001f72: 687b ldr r3, [r7, #4] + 8001f74: 681b ldr r3, [r3, #0] + 8001f76: 69da ldr r2, [r3, #28] + 8001f78: 687b ldr r3, [r7, #4] + 8001f7a: 681b ldr r3, [r3, #0] + 8001f7c: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001f80: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001f82: 687b ldr r3, [r7, #4] + 8001f84: 2200 movs r2, #0 + 8001f86: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001f88: 687b ldr r3, [r7, #4] + 8001f8a: 2201 movs r2, #1 + 8001f8c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001f90: 2300 movs r3, #0 +} + 8001f92: 4618 mov r0, r3 + 8001f94: 3708 adds r7, #8 + 8001f96: 46bd mov sp, r7 + 8001f98: bd80 pop {r7, pc} + +08001f9a : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001f9a: b580 push {r7, lr} + 8001f9c: b088 sub sp, #32 + 8001f9e: af00 add r7, sp, #0 + 8001fa0: 60f8 str r0, [r7, #12] + 8001fa2: 60b9 str r1, [r7, #8] + 8001fa4: 603b str r3, [r7, #0] + 8001fa6: 4613 mov r3, r2 + 8001fa8: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001faa: f7fe fee7 bl 8000d7c + 8001fae: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001fb0: 88fb ldrh r3, [r7, #6] + 8001fb2: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001fb4: 68fb ldr r3, [r7, #12] + 8001fb6: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001fba: b2db uxtb r3, r3 + 8001fbc: 2b01 cmp r3, #1 + 8001fbe: d001 beq.n 8001fc4 + { + return HAL_BUSY; + 8001fc0: 2302 movs r3, #2 + 8001fc2: e12a b.n 800221a + } + + if ((pData == NULL) || (Size == 0U)) + 8001fc4: 68bb ldr r3, [r7, #8] + 8001fc6: 2b00 cmp r3, #0 + 8001fc8: d002 beq.n 8001fd0 + 8001fca: 88fb ldrh r3, [r7, #6] + 8001fcc: 2b00 cmp r3, #0 + 8001fce: d101 bne.n 8001fd4 + { + return HAL_ERROR; + 8001fd0: 2301 movs r3, #1 + 8001fd2: e122 b.n 800221a + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001fd4: 68fb ldr r3, [r7, #12] + 8001fd6: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001fda: 2b01 cmp r3, #1 + 8001fdc: d101 bne.n 8001fe2 + 8001fde: 2302 movs r3, #2 + 8001fe0: e11b b.n 800221a + 8001fe2: 68fb ldr r3, [r7, #12] + 8001fe4: 2201 movs r2, #1 + 8001fe6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001fea: 68fb ldr r3, [r7, #12] + 8001fec: 2203 movs r2, #3 + 8001fee: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001ff2: 68fb ldr r3, [r7, #12] + 8001ff4: 2200 movs r2, #0 + 8001ff6: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001ff8: 68fb ldr r3, [r7, #12] + 8001ffa: 68ba ldr r2, [r7, #8] + 8001ffc: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001ffe: 68fb ldr r3, [r7, #12] + 8002000: 88fa ldrh r2, [r7, #6] + 8002002: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8002004: 68fb ldr r3, [r7, #12] + 8002006: 88fa ldrh r2, [r7, #6] + 8002008: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 800200a: 68fb ldr r3, [r7, #12] + 800200c: 2200 movs r2, #0 + 800200e: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8002010: 68fb ldr r3, [r7, #12] + 8002012: 2200 movs r2, #0 + 8002014: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8002016: 68fb ldr r3, [r7, #12] + 8002018: 2200 movs r2, #0 + 800201a: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 800201c: 68fb ldr r3, [r7, #12] + 800201e: 2200 movs r2, #0 + 8002020: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8002022: 68fb ldr r3, [r7, #12] + 8002024: 2200 movs r2, #0 + 8002026: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002028: 68fb ldr r3, [r7, #12] + 800202a: 689b ldr r3, [r3, #8] + 800202c: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002030: d10f bne.n 8002052 + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8002032: 68fb ldr r3, [r7, #12] + 8002034: 681b ldr r3, [r3, #0] + 8002036: 681a ldr r2, [r3, #0] + 8002038: 68fb ldr r3, [r7, #12] + 800203a: 681b ldr r3, [r3, #0] + 800203c: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8002040: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8002042: 68fb ldr r3, [r7, #12] + 8002044: 681b ldr r3, [r3, #0] + 8002046: 681a ldr r2, [r3, #0] + 8002048: 68fb ldr r3, [r7, #12] + 800204a: 681b ldr r3, [r3, #0] + 800204c: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002050: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8002052: 68fb ldr r3, [r7, #12] + 8002054: 681b ldr r3, [r3, #0] + 8002056: 681b ldr r3, [r3, #0] + 8002058: f003 0340 and.w r3, r3, #64 @ 0x40 + 800205c: 2b40 cmp r3, #64 @ 0x40 + 800205e: d007 beq.n 8002070 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8002060: 68fb ldr r3, [r7, #12] + 8002062: 681b ldr r3, [r3, #0] + 8002064: 681a ldr r2, [r3, #0] + 8002066: 68fb ldr r3, [r7, #12] + 8002068: 681b ldr r3, [r3, #0] + 800206a: f042 0240 orr.w r2, r2, #64 @ 0x40 + 800206e: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8002070: 68fb ldr r3, [r7, #12] + 8002072: 68db ldr r3, [r3, #12] + 8002074: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8002078: d152 bne.n 8002120 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 800207a: 68fb ldr r3, [r7, #12] + 800207c: 685b ldr r3, [r3, #4] + 800207e: 2b00 cmp r3, #0 + 8002080: d002 beq.n 8002088 + 8002082: 8b7b ldrh r3, [r7, #26] + 8002084: 2b01 cmp r3, #1 + 8002086: d145 bne.n 8002114 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8002088: 68fb ldr r3, [r7, #12] + 800208a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800208c: 881a ldrh r2, [r3, #0] + 800208e: 68fb ldr r3, [r7, #12] + 8002090: 681b ldr r3, [r3, #0] + 8002092: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8002094: 68fb ldr r3, [r7, #12] + 8002096: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002098: 1c9a adds r2, r3, #2 + 800209a: 68fb ldr r3, [r7, #12] + 800209c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800209e: 68fb ldr r3, [r7, #12] + 80020a0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80020a2: b29b uxth r3, r3 + 80020a4: 3b01 subs r3, #1 + 80020a6: b29a uxth r2, r3 + 80020a8: 68fb ldr r3, [r7, #12] + 80020aa: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 80020ac: e032 b.n 8002114 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 80020ae: 68fb ldr r3, [r7, #12] + 80020b0: 681b ldr r3, [r3, #0] + 80020b2: 689b ldr r3, [r3, #8] + 80020b4: f003 0302 and.w r3, r3, #2 + 80020b8: 2b02 cmp r3, #2 + 80020ba: d112 bne.n 80020e2 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 80020bc: 68fb ldr r3, [r7, #12] + 80020be: 6b1b ldr r3, [r3, #48] @ 0x30 + 80020c0: 881a ldrh r2, [r3, #0] + 80020c2: 68fb ldr r3, [r7, #12] + 80020c4: 681b ldr r3, [r3, #0] + 80020c6: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80020c8: 68fb ldr r3, [r7, #12] + 80020ca: 6b1b ldr r3, [r3, #48] @ 0x30 + 80020cc: 1c9a adds r2, r3, #2 + 80020ce: 68fb ldr r3, [r7, #12] + 80020d0: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 80020d2: 68fb ldr r3, [r7, #12] + 80020d4: 8edb ldrh r3, [r3, #54] @ 0x36 + 80020d6: b29b uxth r3, r3 + 80020d8: 3b01 subs r3, #1 + 80020da: b29a uxth r2, r3 + 80020dc: 68fb ldr r3, [r7, #12] + 80020de: 86da strh r2, [r3, #54] @ 0x36 + 80020e0: e018 b.n 8002114 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 80020e2: f7fe fe4b bl 8000d7c + 80020e6: 4602 mov r2, r0 + 80020e8: 69fb ldr r3, [r7, #28] + 80020ea: 1ad3 subs r3, r2, r3 + 80020ec: 683a ldr r2, [r7, #0] + 80020ee: 429a cmp r2, r3 + 80020f0: d803 bhi.n 80020fa + 80020f2: 683b ldr r3, [r7, #0] + 80020f4: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80020f8: d102 bne.n 8002100 + 80020fa: 683b ldr r3, [r7, #0] + 80020fc: 2b00 cmp r3, #0 + 80020fe: d109 bne.n 8002114 + { + hspi->State = HAL_SPI_STATE_READY; + 8002100: 68fb ldr r3, [r7, #12] + 8002102: 2201 movs r2, #1 + 8002104: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8002108: 68fb ldr r3, [r7, #12] + 800210a: 2200 movs r2, #0 + 800210c: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8002110: 2303 movs r3, #3 + 8002112: e082 b.n 800221a + while (hspi->TxXferCount > 0U) + 8002114: 68fb ldr r3, [r7, #12] + 8002116: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002118: b29b uxth r3, r3 + 800211a: 2b00 cmp r3, #0 + 800211c: d1c7 bne.n 80020ae + 800211e: e053 b.n 80021c8 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8002120: 68fb ldr r3, [r7, #12] + 8002122: 685b ldr r3, [r3, #4] + 8002124: 2b00 cmp r3, #0 + 8002126: d002 beq.n 800212e + 8002128: 8b7b ldrh r3, [r7, #26] + 800212a: 2b01 cmp r3, #1 + 800212c: d147 bne.n 80021be + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 800212e: 68fb ldr r3, [r7, #12] + 8002130: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002132: 68fb ldr r3, [r7, #12] + 8002134: 681b ldr r3, [r3, #0] + 8002136: 330c adds r3, #12 + 8002138: 7812 ldrb r2, [r2, #0] + 800213a: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800213c: 68fb ldr r3, [r7, #12] + 800213e: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002140: 1c5a adds r2, r3, #1 + 8002142: 68fb ldr r3, [r7, #12] + 8002144: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002146: 68fb ldr r3, [r7, #12] + 8002148: 8edb ldrh r3, [r3, #54] @ 0x36 + 800214a: b29b uxth r3, r3 + 800214c: 3b01 subs r3, #1 + 800214e: b29a uxth r2, r3 + 8002150: 68fb ldr r3, [r7, #12] + 8002152: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8002154: e033 b.n 80021be + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8002156: 68fb ldr r3, [r7, #12] + 8002158: 681b ldr r3, [r3, #0] + 800215a: 689b ldr r3, [r3, #8] + 800215c: f003 0302 and.w r3, r3, #2 + 8002160: 2b02 cmp r3, #2 + 8002162: d113 bne.n 800218c + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8002164: 68fb ldr r3, [r7, #12] + 8002166: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002168: 68fb ldr r3, [r7, #12] + 800216a: 681b ldr r3, [r3, #0] + 800216c: 330c adds r3, #12 + 800216e: 7812 ldrb r2, [r2, #0] + 8002170: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8002172: 68fb ldr r3, [r7, #12] + 8002174: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002176: 1c5a adds r2, r3, #1 + 8002178: 68fb ldr r3, [r7, #12] + 800217a: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 800217c: 68fb ldr r3, [r7, #12] + 800217e: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002180: b29b uxth r3, r3 + 8002182: 3b01 subs r3, #1 + 8002184: b29a uxth r2, r3 + 8002186: 68fb ldr r3, [r7, #12] + 8002188: 86da strh r2, [r3, #54] @ 0x36 + 800218a: e018 b.n 80021be + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 800218c: f7fe fdf6 bl 8000d7c + 8002190: 4602 mov r2, r0 + 8002192: 69fb ldr r3, [r7, #28] + 8002194: 1ad3 subs r3, r2, r3 + 8002196: 683a ldr r2, [r7, #0] + 8002198: 429a cmp r2, r3 + 800219a: d803 bhi.n 80021a4 + 800219c: 683b ldr r3, [r7, #0] + 800219e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80021a2: d102 bne.n 80021aa + 80021a4: 683b ldr r3, [r7, #0] + 80021a6: 2b00 cmp r3, #0 + 80021a8: d109 bne.n 80021be + { + hspi->State = HAL_SPI_STATE_READY; + 80021aa: 68fb ldr r3, [r7, #12] + 80021ac: 2201 movs r2, #1 + 80021ae: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 80021b2: 68fb ldr r3, [r7, #12] + 80021b4: 2200 movs r2, #0 + 80021b6: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 80021ba: 2303 movs r3, #3 + 80021bc: e02d b.n 800221a + while (hspi->TxXferCount > 0U) + 80021be: 68fb ldr r3, [r7, #12] + 80021c0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80021c2: b29b uxth r3, r3 + 80021c4: 2b00 cmp r3, #0 + 80021c6: d1c6 bne.n 8002156 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 80021c8: 69fa ldr r2, [r7, #28] + 80021ca: 6839 ldr r1, [r7, #0] + 80021cc: 68f8 ldr r0, [r7, #12] + 80021ce: f000 f8b1 bl 8002334 + 80021d2: 4603 mov r3, r0 + 80021d4: 2b00 cmp r3, #0 + 80021d6: d002 beq.n 80021de + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80021d8: 68fb ldr r3, [r7, #12] + 80021da: 2220 movs r2, #32 + 80021dc: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 80021de: 68fb ldr r3, [r7, #12] + 80021e0: 689b ldr r3, [r3, #8] + 80021e2: 2b00 cmp r3, #0 + 80021e4: d10a bne.n 80021fc + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 80021e6: 2300 movs r3, #0 + 80021e8: 617b str r3, [r7, #20] + 80021ea: 68fb ldr r3, [r7, #12] + 80021ec: 681b ldr r3, [r3, #0] + 80021ee: 68db ldr r3, [r3, #12] + 80021f0: 617b str r3, [r7, #20] + 80021f2: 68fb ldr r3, [r7, #12] + 80021f4: 681b ldr r3, [r3, #0] + 80021f6: 689b ldr r3, [r3, #8] + 80021f8: 617b str r3, [r7, #20] + 80021fa: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 80021fc: 68fb ldr r3, [r7, #12] + 80021fe: 2201 movs r2, #1 + 8002200: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8002204: 68fb ldr r3, [r7, #12] + 8002206: 2200 movs r2, #0 + 8002208: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 800220c: 68fb ldr r3, [r7, #12] + 800220e: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002210: 2b00 cmp r3, #0 + 8002212: d001 beq.n 8002218 + { + return HAL_ERROR; + 8002214: 2301 movs r3, #1 + 8002216: e000 b.n 800221a + } + else + { + return HAL_OK; + 8002218: 2300 movs r3, #0 + } +} + 800221a: 4618 mov r0, r3 + 800221c: 3720 adds r7, #32 + 800221e: 46bd mov sp, r7 + 8002220: bd80 pop {r7, pc} + ... + +08002224 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8002224: b580 push {r7, lr} + 8002226: b088 sub sp, #32 + 8002228: af00 add r7, sp, #0 + 800222a: 60f8 str r0, [r7, #12] + 800222c: 60b9 str r1, [r7, #8] + 800222e: 603b str r3, [r7, #0] + 8002230: 4613 mov r3, r2 + 8002232: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8002234: f7fe fda2 bl 8000d7c + 8002238: 4602 mov r2, r0 + 800223a: 6abb ldr r3, [r7, #40] @ 0x28 + 800223c: 1a9b subs r3, r3, r2 + 800223e: 683a ldr r2, [r7, #0] + 8002240: 4413 add r3, r2 + 8002242: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8002244: f7fe fd9a bl 8000d7c + 8002248: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 800224a: 4b39 ldr r3, [pc, #228] @ (8002330 ) + 800224c: 681b ldr r3, [r3, #0] + 800224e: 015b lsls r3, r3, #5 + 8002250: 0d1b lsrs r3, r3, #20 + 8002252: 69fa ldr r2, [r7, #28] + 8002254: fb02 f303 mul.w r3, r2, r3 + 8002258: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 800225a: e054 b.n 8002306 + { + if (Timeout != HAL_MAX_DELAY) + 800225c: 683b ldr r3, [r7, #0] + 800225e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8002262: d050 beq.n 8002306 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8002264: f7fe fd8a bl 8000d7c + 8002268: 4602 mov r2, r0 + 800226a: 69bb ldr r3, [r7, #24] + 800226c: 1ad3 subs r3, r2, r3 + 800226e: 69fa ldr r2, [r7, #28] + 8002270: 429a cmp r2, r3 + 8002272: d902 bls.n 800227a + 8002274: 69fb ldr r3, [r7, #28] + 8002276: 2b00 cmp r3, #0 + 8002278: d13d bne.n 80022f6 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 800227a: 68fb ldr r3, [r7, #12] + 800227c: 681b ldr r3, [r3, #0] + 800227e: 685a ldr r2, [r3, #4] + 8002280: 68fb ldr r3, [r7, #12] + 8002282: 681b ldr r3, [r3, #0] + 8002284: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002288: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 800228a: 68fb ldr r3, [r7, #12] + 800228c: 685b ldr r3, [r3, #4] + 800228e: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002292: d111 bne.n 80022b8 + 8002294: 68fb ldr r3, [r7, #12] + 8002296: 689b ldr r3, [r3, #8] + 8002298: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800229c: d004 beq.n 80022a8 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 800229e: 68fb ldr r3, [r7, #12] + 80022a0: 689b ldr r3, [r3, #8] + 80022a2: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80022a6: d107 bne.n 80022b8 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80022a8: 68fb ldr r3, [r7, #12] + 80022aa: 681b ldr r3, [r3, #0] + 80022ac: 681a ldr r2, [r3, #0] + 80022ae: 68fb ldr r3, [r7, #12] + 80022b0: 681b ldr r3, [r3, #0] + 80022b2: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80022b6: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 80022b8: 68fb ldr r3, [r7, #12] + 80022ba: 6a9b ldr r3, [r3, #40] @ 0x28 + 80022bc: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80022c0: d10f bne.n 80022e2 + { + SPI_RESET_CRC(hspi); + 80022c2: 68fb ldr r3, [r7, #12] + 80022c4: 681b ldr r3, [r3, #0] + 80022c6: 681a ldr r2, [r3, #0] + 80022c8: 68fb ldr r3, [r7, #12] + 80022ca: 681b ldr r3, [r3, #0] + 80022cc: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 80022d0: 601a str r2, [r3, #0] + 80022d2: 68fb ldr r3, [r7, #12] + 80022d4: 681b ldr r3, [r3, #0] + 80022d6: 681a ldr r2, [r3, #0] + 80022d8: 68fb ldr r3, [r7, #12] + 80022da: 681b ldr r3, [r3, #0] + 80022dc: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 80022e0: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80022e2: 68fb ldr r3, [r7, #12] + 80022e4: 2201 movs r2, #1 + 80022e6: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80022ea: 68fb ldr r3, [r7, #12] + 80022ec: 2200 movs r2, #0 + 80022ee: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 80022f2: 2303 movs r3, #3 + 80022f4: e017 b.n 8002326 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 80022f6: 697b ldr r3, [r7, #20] + 80022f8: 2b00 cmp r3, #0 + 80022fa: d101 bne.n 8002300 + { + tmp_timeout = 0U; + 80022fc: 2300 movs r3, #0 + 80022fe: 61fb str r3, [r7, #28] + } + count--; + 8002300: 697b ldr r3, [r7, #20] + 8002302: 3b01 subs r3, #1 + 8002304: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8002306: 68fb ldr r3, [r7, #12] + 8002308: 681b ldr r3, [r3, #0] + 800230a: 689a ldr r2, [r3, #8] + 800230c: 68bb ldr r3, [r7, #8] + 800230e: 4013 ands r3, r2 + 8002310: 68ba ldr r2, [r7, #8] + 8002312: 429a cmp r2, r3 + 8002314: bf0c ite eq + 8002316: 2301 moveq r3, #1 + 8002318: 2300 movne r3, #0 + 800231a: b2db uxtb r3, r3 + 800231c: 461a mov r2, r3 + 800231e: 79fb ldrb r3, [r7, #7] + 8002320: 429a cmp r2, r3 + 8002322: d19b bne.n 800225c + } + } + + return HAL_OK; + 8002324: 2300 movs r3, #0 +} + 8002326: 4618 mov r0, r3 + 8002328: 3720 adds r7, #32 + 800232a: 46bd mov sp, r7 + 800232c: bd80 pop {r7, pc} + 800232e: bf00 nop + 8002330: 20000000 .word 0x20000000 + +08002334 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8002334: b580 push {r7, lr} + 8002336: b088 sub sp, #32 + 8002338: af02 add r7, sp, #8 + 800233a: 60f8 str r0, [r7, #12] + 800233c: 60b9 str r1, [r7, #8] + 800233e: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 8002340: 687b ldr r3, [r7, #4] + 8002342: 9300 str r3, [sp, #0] + 8002344: 68bb ldr r3, [r7, #8] + 8002346: 2201 movs r2, #1 + 8002348: 2102 movs r1, #2 + 800234a: 68f8 ldr r0, [r7, #12] + 800234c: f7ff ff6a bl 8002224 + 8002350: 4603 mov r3, r0 + 8002352: 2b00 cmp r3, #0 + 8002354: d007 beq.n 8002366 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002356: 68fb ldr r3, [r7, #12] + 8002358: 6d5b ldr r3, [r3, #84] @ 0x54 + 800235a: f043 0220 orr.w r2, r3, #32 + 800235e: 68fb ldr r3, [r7, #12] + 8002360: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002362: 2303 movs r3, #3 + 8002364: e032 b.n 80023cc + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8002366: 4b1b ldr r3, [pc, #108] @ (80023d4 ) + 8002368: 681b ldr r3, [r3, #0] + 800236a: 4a1b ldr r2, [pc, #108] @ (80023d8 ) + 800236c: fba2 2303 umull r2, r3, r2, r3 + 8002370: 0d5b lsrs r3, r3, #21 + 8002372: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8002376: fb02 f303 mul.w r3, r2, r3 + 800237a: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 800237c: 68fb ldr r3, [r7, #12] + 800237e: 685b ldr r3, [r3, #4] + 8002380: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002384: d112 bne.n 80023ac + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8002386: 687b ldr r3, [r7, #4] + 8002388: 9300 str r3, [sp, #0] + 800238a: 68bb ldr r3, [r7, #8] + 800238c: 2200 movs r2, #0 + 800238e: 2180 movs r1, #128 @ 0x80 + 8002390: 68f8 ldr r0, [r7, #12] + 8002392: f7ff ff47 bl 8002224 + 8002396: 4603 mov r3, r0 + 8002398: 2b00 cmp r3, #0 + 800239a: d016 beq.n 80023ca + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 800239c: 68fb ldr r3, [r7, #12] + 800239e: 6d5b ldr r3, [r3, #84] @ 0x54 + 80023a0: f043 0220 orr.w r2, r3, #32 + 80023a4: 68fb ldr r3, [r7, #12] + 80023a6: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80023a8: 2303 movs r3, #3 + 80023aa: e00f b.n 80023cc + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 80023ac: 697b ldr r3, [r7, #20] + 80023ae: 2b00 cmp r3, #0 + 80023b0: d00a beq.n 80023c8 + { + break; + } + count--; + 80023b2: 697b ldr r3, [r7, #20] + 80023b4: 3b01 subs r3, #1 + 80023b6: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 80023b8: 68fb ldr r3, [r7, #12] + 80023ba: 681b ldr r3, [r3, #0] + 80023bc: 689b ldr r3, [r3, #8] + 80023be: f003 0380 and.w r3, r3, #128 @ 0x80 + 80023c2: 2b80 cmp r3, #128 @ 0x80 + 80023c4: d0f2 beq.n 80023ac + 80023c6: e000 b.n 80023ca + break; + 80023c8: bf00 nop + } + + return HAL_OK; + 80023ca: 2300 movs r3, #0 +} + 80023cc: 4618 mov r0, r3 + 80023ce: 3718 adds r7, #24 + 80023d0: 46bd mov sp, r7 + 80023d2: bd80 pop {r7, pc} + 80023d4: 20000000 .word 0x20000000 + 80023d8: 165e9f81 .word 0x165e9f81 + +080023dc : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 80023dc: b580 push {r7, lr} + 80023de: b082 sub sp, #8 + 80023e0: af00 add r7, sp, #0 + 80023e2: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80023e4: 687b ldr r3, [r7, #4] + 80023e6: 2b00 cmp r3, #0 + 80023e8: d101 bne.n 80023ee + { + return HAL_ERROR; + 80023ea: 2301 movs r3, #1 + 80023ec: e031 b.n 8002452 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80023ee: 687b ldr r3, [r7, #4] + 80023f0: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 80023f4: b2db uxtb r3, r3 + 80023f6: 2b00 cmp r3, #0 + 80023f8: d106 bne.n 8002408 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 80023fa: 687b ldr r3, [r7, #4] + 80023fc: 2200 movs r2, #0 + 80023fe: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 8002402: 6878 ldr r0, [r7, #4] + 8002404: f7fe fb0a bl 8000a1c +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002408: 687b ldr r3, [r7, #4] + 800240a: 2202 movs r2, #2 + 800240c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8002410: 687b ldr r3, [r7, #4] + 8002412: 681a ldr r2, [r3, #0] + 8002414: 687b ldr r3, [r7, #4] + 8002416: 3304 adds r3, #4 + 8002418: 4619 mov r1, r3 + 800241a: 4610 mov r0, r2 + 800241c: f000 fa86 bl 800292c + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8002420: 687b ldr r3, [r7, #4] + 8002422: 2201 movs r2, #1 + 8002424: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002428: 687b ldr r3, [r7, #4] + 800242a: 2201 movs r2, #1 + 800242c: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002430: 687b ldr r3, [r7, #4] + 8002432: 2201 movs r2, #1 + 8002434: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002438: 687b ldr r3, [r7, #4] + 800243a: 2201 movs r2, #1 + 800243c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002440: 687b ldr r3, [r7, #4] + 8002442: 2201 movs r2, #1 + 8002444: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002448: 687b ldr r3, [r7, #4] + 800244a: 2201 movs r2, #1 + 800244c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 8002450: 2300 movs r3, #0 +} + 8002452: 4618 mov r0, r3 + 8002454: 3708 adds r7, #8 + 8002456: 46bd mov sp, r7 + 8002458: bd80 pop {r7, pc} + +0800245a : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 800245a: b580 push {r7, lr} + 800245c: b082 sub sp, #8 + 800245e: af00 add r7, sp, #0 + 8002460: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8002462: 687b ldr r3, [r7, #4] + 8002464: 2b00 cmp r3, #0 + 8002466: d101 bne.n 800246c + { + return HAL_ERROR; + 8002468: 2301 movs r3, #1 + 800246a: e031 b.n 80024d0 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 800246c: 687b ldr r3, [r7, #4] + 800246e: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002472: b2db uxtb r3, r3 + 8002474: 2b00 cmp r3, #0 + 8002476: d106 bne.n 8002486 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002478: 687b ldr r3, [r7, #4] + 800247a: 2200 movs r2, #0 + 800247c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 8002480: 6878 ldr r0, [r7, #4] + 8002482: f000 f829 bl 80024d8 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002486: 687b ldr r3, [r7, #4] + 8002488: 2202 movs r2, #2 + 800248a: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 800248e: 687b ldr r3, [r7, #4] + 8002490: 681a ldr r2, [r3, #0] + 8002492: 687b ldr r3, [r7, #4] + 8002494: 3304 adds r3, #4 + 8002496: 4619 mov r1, r3 + 8002498: 4610 mov r0, r2 + 800249a: f000 fa47 bl 800292c + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 800249e: 687b ldr r3, [r7, #4] + 80024a0: 2201 movs r2, #1 + 80024a2: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 80024a6: 687b ldr r3, [r7, #4] + 80024a8: 2201 movs r2, #1 + 80024aa: f883 203a strb.w r2, [r3, #58] @ 0x3a + 80024ae: 687b ldr r3, [r7, #4] + 80024b0: 2201 movs r2, #1 + 80024b2: f883 203b strb.w r2, [r3, #59] @ 0x3b + 80024b6: 687b ldr r3, [r7, #4] + 80024b8: 2201 movs r2, #1 + 80024ba: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80024be: 687b ldr r3, [r7, #4] + 80024c0: 2201 movs r2, #1 + 80024c2: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 80024c6: 687b ldr r3, [r7, #4] + 80024c8: 2201 movs r2, #1 + 80024ca: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 80024ce: 2300 movs r3, #0 +} + 80024d0: 4618 mov r0, r3 + 80024d2: 3708 adds r7, #8 + 80024d4: 46bd mov sp, r7 + 80024d6: bd80 pop {r7, pc} + +080024d8 : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 80024d8: b480 push {r7} + 80024da: b083 sub sp, #12 + 80024dc: af00 add r7, sp, #0 + 80024de: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 80024e0: bf00 nop + 80024e2: 370c adds r7, #12 + 80024e4: 46bd mov sp, r7 + 80024e6: bc80 pop {r7} + 80024e8: 4770 bx lr + ... + +080024ec : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 80024ec: b580 push {r7, lr} + 80024ee: b084 sub sp, #16 + 80024f0: af00 add r7, sp, #0 + 80024f2: 6078 str r0, [r7, #4] + 80024f4: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 80024f6: 683b ldr r3, [r7, #0] + 80024f8: 2b00 cmp r3, #0 + 80024fa: d109 bne.n 8002510 + 80024fc: 687b ldr r3, [r7, #4] + 80024fe: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 8002502: b2db uxtb r3, r3 + 8002504: 2b01 cmp r3, #1 + 8002506: bf14 ite ne + 8002508: 2301 movne r3, #1 + 800250a: 2300 moveq r3, #0 + 800250c: b2db uxtb r3, r3 + 800250e: e022 b.n 8002556 + 8002510: 683b ldr r3, [r7, #0] + 8002512: 2b04 cmp r3, #4 + 8002514: d109 bne.n 800252a + 8002516: 687b ldr r3, [r7, #4] + 8002518: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 800251c: b2db uxtb r3, r3 + 800251e: 2b01 cmp r3, #1 + 8002520: bf14 ite ne + 8002522: 2301 movne r3, #1 + 8002524: 2300 moveq r3, #0 + 8002526: b2db uxtb r3, r3 + 8002528: e015 b.n 8002556 + 800252a: 683b ldr r3, [r7, #0] + 800252c: 2b08 cmp r3, #8 + 800252e: d109 bne.n 8002544 + 8002530: 687b ldr r3, [r7, #4] + 8002532: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8002536: b2db uxtb r3, r3 + 8002538: 2b01 cmp r3, #1 + 800253a: bf14 ite ne + 800253c: 2301 movne r3, #1 + 800253e: 2300 moveq r3, #0 + 8002540: b2db uxtb r3, r3 + 8002542: e008 b.n 8002556 + 8002544: 687b ldr r3, [r7, #4] + 8002546: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 800254a: b2db uxtb r3, r3 + 800254c: 2b01 cmp r3, #1 + 800254e: bf14 ite ne + 8002550: 2301 movne r3, #1 + 8002552: 2300 moveq r3, #0 + 8002554: b2db uxtb r3, r3 + 8002556: 2b00 cmp r3, #0 + 8002558: d001 beq.n 800255e + { + return HAL_ERROR; + 800255a: 2301 movs r3, #1 + 800255c: e051 b.n 8002602 + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 800255e: 683b ldr r3, [r7, #0] + 8002560: 2b00 cmp r3, #0 + 8002562: d104 bne.n 800256e + 8002564: 687b ldr r3, [r7, #4] + 8002566: 2202 movs r2, #2 + 8002568: f883 203a strb.w r2, [r3, #58] @ 0x3a + 800256c: e013 b.n 8002596 + 800256e: 683b ldr r3, [r7, #0] + 8002570: 2b04 cmp r3, #4 + 8002572: d104 bne.n 800257e + 8002574: 687b ldr r3, [r7, #4] + 8002576: 2202 movs r2, #2 + 8002578: f883 203b strb.w r2, [r3, #59] @ 0x3b + 800257c: e00b b.n 8002596 + 800257e: 683b ldr r3, [r7, #0] + 8002580: 2b08 cmp r3, #8 + 8002582: d104 bne.n 800258e + 8002584: 687b ldr r3, [r7, #4] + 8002586: 2202 movs r2, #2 + 8002588: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800258c: e003 b.n 8002596 + 800258e: 687b ldr r3, [r7, #4] + 8002590: 2202 movs r2, #2 + 8002592: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 8002596: 687b ldr r3, [r7, #4] + 8002598: 681b ldr r3, [r3, #0] + 800259a: 2201 movs r2, #1 + 800259c: 6839 ldr r1, [r7, #0] + 800259e: 4618 mov r0, r3 + 80025a0: f000 fbc5 bl 8002d2e + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 80025a4: 687b ldr r3, [r7, #4] + 80025a6: 681b ldr r3, [r3, #0] + 80025a8: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80025ac: d00e beq.n 80025cc + 80025ae: 687b ldr r3, [r7, #4] + 80025b0: 681b ldr r3, [r3, #0] + 80025b2: 4a16 ldr r2, [pc, #88] @ (800260c ) + 80025b4: 4293 cmp r3, r2 + 80025b6: d009 beq.n 80025cc + 80025b8: 687b ldr r3, [r7, #4] + 80025ba: 681b ldr r3, [r3, #0] + 80025bc: 4a14 ldr r2, [pc, #80] @ (8002610 ) + 80025be: 4293 cmp r3, r2 + 80025c0: d004 beq.n 80025cc + 80025c2: 687b ldr r3, [r7, #4] + 80025c4: 681b ldr r3, [r3, #0] + 80025c6: 4a13 ldr r2, [pc, #76] @ (8002614 ) + 80025c8: 4293 cmp r3, r2 + 80025ca: d111 bne.n 80025f0 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 80025cc: 687b ldr r3, [r7, #4] + 80025ce: 681b ldr r3, [r3, #0] + 80025d0: 689b ldr r3, [r3, #8] + 80025d2: f003 0307 and.w r3, r3, #7 + 80025d6: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025d8: 68fb ldr r3, [r7, #12] + 80025da: 2b06 cmp r3, #6 + 80025dc: d010 beq.n 8002600 + { + __HAL_TIM_ENABLE(htim); + 80025de: 687b ldr r3, [r7, #4] + 80025e0: 681b ldr r3, [r3, #0] + 80025e2: 681a ldr r2, [r3, #0] + 80025e4: 687b ldr r3, [r7, #4] + 80025e6: 681b ldr r3, [r3, #0] + 80025e8: f042 0201 orr.w r2, r2, #1 + 80025ec: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025ee: e007 b.n 8002600 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 80025f0: 687b ldr r3, [r7, #4] + 80025f2: 681b ldr r3, [r3, #0] + 80025f4: 681a ldr r2, [r3, #0] + 80025f6: 687b ldr r3, [r7, #4] + 80025f8: 681b ldr r3, [r3, #0] + 80025fa: f042 0201 orr.w r2, r2, #1 + 80025fe: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8002600: 2300 movs r3, #0 +} + 8002602: 4618 mov r0, r3 + 8002604: 3710 adds r7, #16 + 8002606: 46bd mov sp, r7 + 8002608: bd80 pop {r7, pc} + 800260a: bf00 nop + 800260c: 40000400 .word 0x40000400 + 8002610: 40000800 .word 0x40000800 + 8002614: 40010800 .word 0x40010800 + +08002618 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8002618: b580 push {r7, lr} + 800261a: b086 sub sp, #24 + 800261c: af00 add r7, sp, #0 + 800261e: 60f8 str r0, [r7, #12] + 8002620: 60b9 str r1, [r7, #8] + 8002622: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8002624: 2300 movs r3, #0 + 8002626: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8002628: 68fb ldr r3, [r7, #12] + 800262a: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 800262e: 2b01 cmp r3, #1 + 8002630: d101 bne.n 8002636 + 8002632: 2302 movs r3, #2 + 8002634: e0ae b.n 8002794 + 8002636: 68fb ldr r3, [r7, #12] + 8002638: 2201 movs r2, #1 + 800263a: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + switch (Channel) + 800263e: 687b ldr r3, [r7, #4] + 8002640: 2b0c cmp r3, #12 + 8002642: f200 809f bhi.w 8002784 + 8002646: a201 add r2, pc, #4 @ (adr r2, 800264c ) + 8002648: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800264c: 08002681 .word 0x08002681 + 8002650: 08002785 .word 0x08002785 + 8002654: 08002785 .word 0x08002785 + 8002658: 08002785 .word 0x08002785 + 800265c: 080026c1 .word 0x080026c1 + 8002660: 08002785 .word 0x08002785 + 8002664: 08002785 .word 0x08002785 + 8002668: 08002785 .word 0x08002785 + 800266c: 08002703 .word 0x08002703 + 8002670: 08002785 .word 0x08002785 + 8002674: 08002785 .word 0x08002785 + 8002678: 08002785 .word 0x08002785 + 800267c: 08002743 .word 0x08002743 + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 8002680: 68fb ldr r3, [r7, #12] + 8002682: 681b ldr r3, [r3, #0] + 8002684: 68b9 ldr r1, [r7, #8] + 8002686: 4618 mov r0, r3 + 8002688: f000 f9c6 bl 8002a18 + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 800268c: 68fb ldr r3, [r7, #12] + 800268e: 681b ldr r3, [r3, #0] + 8002690: 699a ldr r2, [r3, #24] + 8002692: 68fb ldr r3, [r7, #12] + 8002694: 681b ldr r3, [r3, #0] + 8002696: f042 0208 orr.w r2, r2, #8 + 800269a: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 800269c: 68fb ldr r3, [r7, #12] + 800269e: 681b ldr r3, [r3, #0] + 80026a0: 699a ldr r2, [r3, #24] + 80026a2: 68fb ldr r3, [r7, #12] + 80026a4: 681b ldr r3, [r3, #0] + 80026a6: f022 0204 bic.w r2, r2, #4 + 80026aa: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 80026ac: 68fb ldr r3, [r7, #12] + 80026ae: 681b ldr r3, [r3, #0] + 80026b0: 6999 ldr r1, [r3, #24] + 80026b2: 68bb ldr r3, [r7, #8] + 80026b4: 68da ldr r2, [r3, #12] + 80026b6: 68fb ldr r3, [r7, #12] + 80026b8: 681b ldr r3, [r3, #0] + 80026ba: 430a orrs r2, r1 + 80026bc: 619a str r2, [r3, #24] + break; + 80026be: e064 b.n 800278a + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 80026c0: 68fb ldr r3, [r7, #12] + 80026c2: 681b ldr r3, [r3, #0] + 80026c4: 68b9 ldr r1, [r7, #8] + 80026c6: 4618 mov r0, r3 + 80026c8: f000 f9e2 bl 8002a90 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 80026cc: 68fb ldr r3, [r7, #12] + 80026ce: 681b ldr r3, [r3, #0] + 80026d0: 699a ldr r2, [r3, #24] + 80026d2: 68fb ldr r3, [r7, #12] + 80026d4: 681b ldr r3, [r3, #0] + 80026d6: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 80026da: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 80026dc: 68fb ldr r3, [r7, #12] + 80026de: 681b ldr r3, [r3, #0] + 80026e0: 699a ldr r2, [r3, #24] + 80026e2: 68fb ldr r3, [r7, #12] + 80026e4: 681b ldr r3, [r3, #0] + 80026e6: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80026ea: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 80026ec: 68fb ldr r3, [r7, #12] + 80026ee: 681b ldr r3, [r3, #0] + 80026f0: 6999 ldr r1, [r3, #24] + 80026f2: 68bb ldr r3, [r7, #8] + 80026f4: 68db ldr r3, [r3, #12] + 80026f6: 021a lsls r2, r3, #8 + 80026f8: 68fb ldr r3, [r7, #12] + 80026fa: 681b ldr r3, [r3, #0] + 80026fc: 430a orrs r2, r1 + 80026fe: 619a str r2, [r3, #24] + break; + 8002700: e043 b.n 800278a + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 8002702: 68fb ldr r3, [r7, #12] + 8002704: 681b ldr r3, [r3, #0] + 8002706: 68b9 ldr r1, [r7, #8] + 8002708: 4618 mov r0, r3 + 800270a: f000 f9ff bl 8002b0c + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 800270e: 68fb ldr r3, [r7, #12] + 8002710: 681b ldr r3, [r3, #0] + 8002712: 69da ldr r2, [r3, #28] + 8002714: 68fb ldr r3, [r7, #12] + 8002716: 681b ldr r3, [r3, #0] + 8002718: f042 0208 orr.w r2, r2, #8 + 800271c: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 800271e: 68fb ldr r3, [r7, #12] + 8002720: 681b ldr r3, [r3, #0] + 8002722: 69da ldr r2, [r3, #28] + 8002724: 68fb ldr r3, [r7, #12] + 8002726: 681b ldr r3, [r3, #0] + 8002728: f022 0204 bic.w r2, r2, #4 + 800272c: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 800272e: 68fb ldr r3, [r7, #12] + 8002730: 681b ldr r3, [r3, #0] + 8002732: 69d9 ldr r1, [r3, #28] + 8002734: 68bb ldr r3, [r7, #8] + 8002736: 68da ldr r2, [r3, #12] + 8002738: 68fb ldr r3, [r7, #12] + 800273a: 681b ldr r3, [r3, #0] + 800273c: 430a orrs r2, r1 + 800273e: 61da str r2, [r3, #28] + break; + 8002740: e023 b.n 800278a + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 8002742: 68fb ldr r3, [r7, #12] + 8002744: 681b ldr r3, [r3, #0] + 8002746: 68b9 ldr r1, [r7, #8] + 8002748: 4618 mov r0, r3 + 800274a: f000 fa1c bl 8002b86 + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 800274e: 68fb ldr r3, [r7, #12] + 8002750: 681b ldr r3, [r3, #0] + 8002752: 69da ldr r2, [r3, #28] + 8002754: 68fb ldr r3, [r7, #12] + 8002756: 681b ldr r3, [r3, #0] + 8002758: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 800275c: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 800275e: 68fb ldr r3, [r7, #12] + 8002760: 681b ldr r3, [r3, #0] + 8002762: 69da ldr r2, [r3, #28] + 8002764: 68fb ldr r3, [r7, #12] + 8002766: 681b ldr r3, [r3, #0] + 8002768: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800276c: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 800276e: 68fb ldr r3, [r7, #12] + 8002770: 681b ldr r3, [r3, #0] + 8002772: 69d9 ldr r1, [r3, #28] + 8002774: 68bb ldr r3, [r7, #8] + 8002776: 68db ldr r3, [r3, #12] + 8002778: 021a lsls r2, r3, #8 + 800277a: 68fb ldr r3, [r7, #12] + 800277c: 681b ldr r3, [r3, #0] + 800277e: 430a orrs r2, r1 + 8002780: 61da str r2, [r3, #28] + break; + 8002782: e002 b.n 800278a + } + + default: + status = HAL_ERROR; + 8002784: 2301 movs r3, #1 + 8002786: 75fb strb r3, [r7, #23] + break; + 8002788: bf00 nop + } + + __HAL_UNLOCK(htim); + 800278a: 68fb ldr r3, [r7, #12] + 800278c: 2200 movs r2, #0 + 800278e: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002792: 7dfb ldrb r3, [r7, #23] +} + 8002794: 4618 mov r0, r3 + 8002796: 3718 adds r7, #24 + 8002798: 46bd mov sp, r7 + 800279a: bd80 pop {r7, pc} + +0800279c : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 800279c: b580 push {r7, lr} + 800279e: b084 sub sp, #16 + 80027a0: af00 add r7, sp, #0 + 80027a2: 6078 str r0, [r7, #4] + 80027a4: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 80027a6: 2300 movs r3, #0 + 80027a8: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 80027aa: 687b ldr r3, [r7, #4] + 80027ac: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80027b0: 2b01 cmp r3, #1 + 80027b2: d101 bne.n 80027b8 + 80027b4: 2302 movs r3, #2 + 80027b6: e0b4 b.n 8002922 + 80027b8: 687b ldr r3, [r7, #4] + 80027ba: 2201 movs r2, #1 + 80027bc: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 80027c0: 687b ldr r3, [r7, #4] + 80027c2: 2202 movs r2, #2 + 80027c4: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 80027c8: 687b ldr r3, [r7, #4] + 80027ca: 681b ldr r3, [r3, #0] + 80027cc: 689b ldr r3, [r3, #8] + 80027ce: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 80027d0: 68bb ldr r3, [r7, #8] + 80027d2: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80027d6: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80027d8: 68bb ldr r3, [r7, #8] + 80027da: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80027de: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 80027e0: 687b ldr r3, [r7, #4] + 80027e2: 681b ldr r3, [r3, #0] + 80027e4: 68ba ldr r2, [r7, #8] + 80027e6: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 80027e8: 683b ldr r3, [r7, #0] + 80027ea: 681b ldr r3, [r3, #0] + 80027ec: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80027f0: d03e beq.n 8002870 + 80027f2: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80027f6: f200 8087 bhi.w 8002908 + 80027fa: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80027fe: f000 8086 beq.w 800290e + 8002802: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002806: d87f bhi.n 8002908 + 8002808: 2b70 cmp r3, #112 @ 0x70 + 800280a: d01a beq.n 8002842 + 800280c: 2b70 cmp r3, #112 @ 0x70 + 800280e: d87b bhi.n 8002908 + 8002810: 2b60 cmp r3, #96 @ 0x60 + 8002812: d050 beq.n 80028b6 + 8002814: 2b60 cmp r3, #96 @ 0x60 + 8002816: d877 bhi.n 8002908 + 8002818: 2b50 cmp r3, #80 @ 0x50 + 800281a: d03c beq.n 8002896 + 800281c: 2b50 cmp r3, #80 @ 0x50 + 800281e: d873 bhi.n 8002908 + 8002820: 2b40 cmp r3, #64 @ 0x40 + 8002822: d058 beq.n 80028d6 + 8002824: 2b40 cmp r3, #64 @ 0x40 + 8002826: d86f bhi.n 8002908 + 8002828: 2b30 cmp r3, #48 @ 0x30 + 800282a: d064 beq.n 80028f6 + 800282c: 2b30 cmp r3, #48 @ 0x30 + 800282e: d86b bhi.n 8002908 + 8002830: 2b20 cmp r3, #32 + 8002832: d060 beq.n 80028f6 + 8002834: 2b20 cmp r3, #32 + 8002836: d867 bhi.n 8002908 + 8002838: 2b00 cmp r3, #0 + 800283a: d05c beq.n 80028f6 + 800283c: 2b10 cmp r3, #16 + 800283e: d05a beq.n 80028f6 + 8002840: e062 b.n 8002908 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 8002842: 687b ldr r3, [r7, #4] + 8002844: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002846: 683b ldr r3, [r7, #0] + 8002848: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 800284a: 683b ldr r3, [r7, #0] + 800284c: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 800284e: 683b ldr r3, [r7, #0] + 8002850: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8002852: f000 fa4d bl 8002cf0 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 8002856: 687b ldr r3, [r7, #4] + 8002858: 681b ldr r3, [r3, #0] + 800285a: 689b ldr r3, [r3, #8] + 800285c: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 800285e: 68bb ldr r3, [r7, #8] + 8002860: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8002864: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002866: 687b ldr r3, [r7, #4] + 8002868: 681b ldr r3, [r3, #0] + 800286a: 68ba ldr r2, [r7, #8] + 800286c: 609a str r2, [r3, #8] + break; + 800286e: e04f b.n 8002910 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 8002870: 687b ldr r3, [r7, #4] + 8002872: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002874: 683b ldr r3, [r7, #0] + 8002876: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8002878: 683b ldr r3, [r7, #0] + 800287a: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 800287c: 683b ldr r3, [r7, #0] + 800287e: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8002880: f000 fa36 bl 8002cf0 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 8002884: 687b ldr r3, [r7, #4] + 8002886: 681b ldr r3, [r3, #0] + 8002888: 689a ldr r2, [r3, #8] + 800288a: 687b ldr r3, [r7, #4] + 800288c: 681b ldr r3, [r3, #0] + 800288e: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8002892: 609a str r2, [r3, #8] + break; + 8002894: e03c b.n 8002910 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 8002896: 687b ldr r3, [r7, #4] + 8002898: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800289a: 683b ldr r3, [r7, #0] + 800289c: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 800289e: 683b ldr r3, [r7, #0] + 80028a0: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80028a2: 461a mov r2, r3 + 80028a4: f000 f9ad bl 8002c02 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 80028a8: 687b ldr r3, [r7, #4] + 80028aa: 681b ldr r3, [r3, #0] + 80028ac: 2150 movs r1, #80 @ 0x50 + 80028ae: 4618 mov r0, r3 + 80028b0: f000 fa04 bl 8002cbc + break; + 80028b4: e02c b.n 8002910 + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 80028b6: 687b ldr r3, [r7, #4] + 80028b8: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80028ba: 683b ldr r3, [r7, #0] + 80028bc: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028be: 683b ldr r3, [r7, #0] + 80028c0: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 80028c2: 461a mov r2, r3 + 80028c4: f000 f9cb bl 8002c5e + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 80028c8: 687b ldr r3, [r7, #4] + 80028ca: 681b ldr r3, [r3, #0] + 80028cc: 2160 movs r1, #96 @ 0x60 + 80028ce: 4618 mov r0, r3 + 80028d0: f000 f9f4 bl 8002cbc + break; + 80028d4: e01c b.n 8002910 + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80028d6: 687b ldr r3, [r7, #4] + 80028d8: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80028da: 683b ldr r3, [r7, #0] + 80028dc: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028de: 683b ldr r3, [r7, #0] + 80028e0: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80028e2: 461a mov r2, r3 + 80028e4: f000 f98d bl 8002c02 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 80028e8: 687b ldr r3, [r7, #4] + 80028ea: 681b ldr r3, [r3, #0] + 80028ec: 2140 movs r1, #64 @ 0x40 + 80028ee: 4618 mov r0, r3 + 80028f0: f000 f9e4 bl 8002cbc + break; + 80028f4: e00c b.n 8002910 + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 80028f6: 687b ldr r3, [r7, #4] + 80028f8: 681a ldr r2, [r3, #0] + 80028fa: 683b ldr r3, [r7, #0] + 80028fc: 681b ldr r3, [r3, #0] + 80028fe: 4619 mov r1, r3 + 8002900: 4610 mov r0, r2 + 8002902: f000 f9db bl 8002cbc + break; + 8002906: e003 b.n 8002910 + } + + default: + status = HAL_ERROR; + 8002908: 2301 movs r3, #1 + 800290a: 73fb strb r3, [r7, #15] + break; + 800290c: e000 b.n 8002910 + break; + 800290e: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 8002910: 687b ldr r3, [r7, #4] + 8002912: 2201 movs r2, #1 + 8002914: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002918: 687b ldr r3, [r7, #4] + 800291a: 2200 movs r2, #0 + 800291c: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 8002920: 7bfb ldrb r3, [r7, #15] +} + 8002922: 4618 mov r0, r3 + 8002924: 3710 adds r7, #16 + 8002926: 46bd mov sp, r7 + 8002928: bd80 pop {r7, pc} + ... + +0800292c : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 800292c: b480 push {r7} + 800292e: b085 sub sp, #20 + 8002930: af00 add r7, sp, #0 + 8002932: 6078 str r0, [r7, #4] + 8002934: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 8002936: 687b ldr r3, [r7, #4] + 8002938: 681b ldr r3, [r3, #0] + 800293a: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 800293c: 687b ldr r3, [r7, #4] + 800293e: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002942: d00f beq.n 8002964 + 8002944: 687b ldr r3, [r7, #4] + 8002946: 4a2e ldr r2, [pc, #184] @ (8002a00 ) + 8002948: 4293 cmp r3, r2 + 800294a: d00b beq.n 8002964 + 800294c: 687b ldr r3, [r7, #4] + 800294e: 4a2d ldr r2, [pc, #180] @ (8002a04 ) + 8002950: 4293 cmp r3, r2 + 8002952: d007 beq.n 8002964 + 8002954: 687b ldr r3, [r7, #4] + 8002956: 4a2c ldr r2, [pc, #176] @ (8002a08 ) + 8002958: 4293 cmp r3, r2 + 800295a: d003 beq.n 8002964 + 800295c: 687b ldr r3, [r7, #4] + 800295e: 4a2b ldr r2, [pc, #172] @ (8002a0c ) + 8002960: 4293 cmp r3, r2 + 8002962: d108 bne.n 8002976 + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 8002964: 68fb ldr r3, [r7, #12] + 8002966: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800296a: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 800296c: 683b ldr r3, [r7, #0] + 800296e: 685b ldr r3, [r3, #4] + 8002970: 68fa ldr r2, [r7, #12] + 8002972: 4313 orrs r3, r2 + 8002974: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8002976: 687b ldr r3, [r7, #4] + 8002978: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800297c: d017 beq.n 80029ae + 800297e: 687b ldr r3, [r7, #4] + 8002980: 4a1f ldr r2, [pc, #124] @ (8002a00 ) + 8002982: 4293 cmp r3, r2 + 8002984: d013 beq.n 80029ae + 8002986: 687b ldr r3, [r7, #4] + 8002988: 4a1e ldr r2, [pc, #120] @ (8002a04 ) + 800298a: 4293 cmp r3, r2 + 800298c: d00f beq.n 80029ae + 800298e: 687b ldr r3, [r7, #4] + 8002990: 4a1d ldr r2, [pc, #116] @ (8002a08 ) + 8002992: 4293 cmp r3, r2 + 8002994: d00b beq.n 80029ae + 8002996: 687b ldr r3, [r7, #4] + 8002998: 4a1c ldr r2, [pc, #112] @ (8002a0c ) + 800299a: 4293 cmp r3, r2 + 800299c: d007 beq.n 80029ae + 800299e: 687b ldr r3, [r7, #4] + 80029a0: 4a1b ldr r2, [pc, #108] @ (8002a10 ) + 80029a2: 4293 cmp r3, r2 + 80029a4: d003 beq.n 80029ae + 80029a6: 687b ldr r3, [r7, #4] + 80029a8: 4a1a ldr r2, [pc, #104] @ (8002a14 ) + 80029aa: 4293 cmp r3, r2 + 80029ac: d108 bne.n 80029c0 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 80029ae: 68fb ldr r3, [r7, #12] + 80029b0: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80029b4: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 80029b6: 683b ldr r3, [r7, #0] + 80029b8: 68db ldr r3, [r3, #12] + 80029ba: 68fa ldr r2, [r7, #12] + 80029bc: 4313 orrs r3, r2 + 80029be: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 80029c0: 68fb ldr r3, [r7, #12] + 80029c2: f023 0280 bic.w r2, r3, #128 @ 0x80 + 80029c6: 683b ldr r3, [r7, #0] + 80029c8: 691b ldr r3, [r3, #16] + 80029ca: 4313 orrs r3, r2 + 80029cc: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 80029ce: 683b ldr r3, [r7, #0] + 80029d0: 689a ldr r2, [r3, #8] + 80029d2: 687b ldr r3, [r7, #4] + 80029d4: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 80029d6: 683b ldr r3, [r7, #0] + 80029d8: 681a ldr r2, [r3, #0] + 80029da: 687b ldr r3, [r7, #4] + 80029dc: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 80029de: 687b ldr r3, [r7, #4] + 80029e0: 681b ldr r3, [r3, #0] + 80029e2: f043 0204 orr.w r2, r3, #4 + 80029e6: 687b ldr r3, [r7, #4] + 80029e8: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 80029ea: 687b ldr r3, [r7, #4] + 80029ec: 2201 movs r2, #1 + 80029ee: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 80029f0: 687b ldr r3, [r7, #4] + 80029f2: 68fa ldr r2, [r7, #12] + 80029f4: 601a str r2, [r3, #0] +} + 80029f6: bf00 nop + 80029f8: 3714 adds r7, #20 + 80029fa: 46bd mov sp, r7 + 80029fc: bc80 pop {r7} + 80029fe: 4770 bx lr + 8002a00: 40000400 .word 0x40000400 + 8002a04: 40000800 .word 0x40000800 + 8002a08: 40000c00 .word 0x40000c00 + 8002a0c: 40010800 .word 0x40010800 + 8002a10: 40010c00 .word 0x40010c00 + 8002a14: 40011000 .word 0x40011000 + +08002a18 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002a18: b480 push {r7} + 8002a1a: b087 sub sp, #28 + 8002a1c: af00 add r7, sp, #0 + 8002a1e: 6078 str r0, [r7, #4] + 8002a20: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002a22: 687b ldr r3, [r7, #4] + 8002a24: 6a1b ldr r3, [r3, #32] + 8002a26: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002a28: 687b ldr r3, [r7, #4] + 8002a2a: 6a1b ldr r3, [r3, #32] + 8002a2c: f023 0201 bic.w r2, r3, #1 + 8002a30: 687b ldr r3, [r7, #4] + 8002a32: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002a34: 687b ldr r3, [r7, #4] + 8002a36: 685b ldr r3, [r3, #4] + 8002a38: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002a3a: 687b ldr r3, [r7, #4] + 8002a3c: 699b ldr r3, [r3, #24] + 8002a3e: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 8002a40: 68fb ldr r3, [r7, #12] + 8002a42: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002a46: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8002a48: 68fb ldr r3, [r7, #12] + 8002a4a: f023 0303 bic.w r3, r3, #3 + 8002a4e: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002a50: 683b ldr r3, [r7, #0] + 8002a52: 681b ldr r3, [r3, #0] + 8002a54: 68fa ldr r2, [r7, #12] + 8002a56: 4313 orrs r3, r2 + 8002a58: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8002a5a: 697b ldr r3, [r7, #20] + 8002a5c: f023 0302 bic.w r3, r3, #2 + 8002a60: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8002a62: 683b ldr r3, [r7, #0] + 8002a64: 689b ldr r3, [r3, #8] + 8002a66: 697a ldr r2, [r7, #20] + 8002a68: 4313 orrs r3, r2 + 8002a6a: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002a6c: 687b ldr r3, [r7, #4] + 8002a6e: 693a ldr r2, [r7, #16] + 8002a70: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002a72: 687b ldr r3, [r7, #4] + 8002a74: 68fa ldr r2, [r7, #12] + 8002a76: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 8002a78: 683b ldr r3, [r7, #0] + 8002a7a: 685a ldr r2, [r3, #4] + 8002a7c: 687b ldr r3, [r7, #4] + 8002a7e: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002a80: 687b ldr r3, [r7, #4] + 8002a82: 697a ldr r2, [r7, #20] + 8002a84: 621a str r2, [r3, #32] +} + 8002a86: bf00 nop + 8002a88: 371c adds r7, #28 + 8002a8a: 46bd mov sp, r7 + 8002a8c: bc80 pop {r7} + 8002a8e: 4770 bx lr + +08002a90 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002a90: b480 push {r7} + 8002a92: b087 sub sp, #28 + 8002a94: af00 add r7, sp, #0 + 8002a96: 6078 str r0, [r7, #4] + 8002a98: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002a9a: 687b ldr r3, [r7, #4] + 8002a9c: 6a1b ldr r3, [r3, #32] + 8002a9e: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002aa0: 687b ldr r3, [r7, #4] + 8002aa2: 6a1b ldr r3, [r3, #32] + 8002aa4: f023 0210 bic.w r2, r3, #16 + 8002aa8: 687b ldr r3, [r7, #4] + 8002aaa: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002aac: 687b ldr r3, [r7, #4] + 8002aae: 685b ldr r3, [r3, #4] + 8002ab0: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002ab2: 687b ldr r3, [r7, #4] + 8002ab4: 699b ldr r3, [r3, #24] + 8002ab6: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 8002ab8: 68fb ldr r3, [r7, #12] + 8002aba: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002abe: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8002ac0: 68fb ldr r3, [r7, #12] + 8002ac2: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002ac6: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002ac8: 683b ldr r3, [r7, #0] + 8002aca: 681b ldr r3, [r3, #0] + 8002acc: 021b lsls r3, r3, #8 + 8002ace: 68fa ldr r2, [r7, #12] + 8002ad0: 4313 orrs r3, r2 + 8002ad2: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8002ad4: 697b ldr r3, [r7, #20] + 8002ad6: f023 0320 bic.w r3, r3, #32 + 8002ada: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8002adc: 683b ldr r3, [r7, #0] + 8002ade: 689b ldr r3, [r3, #8] + 8002ae0: 011b lsls r3, r3, #4 + 8002ae2: 697a ldr r2, [r7, #20] + 8002ae4: 4313 orrs r3, r2 + 8002ae6: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002ae8: 687b ldr r3, [r7, #4] + 8002aea: 693a ldr r2, [r7, #16] + 8002aec: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002aee: 687b ldr r3, [r7, #4] + 8002af0: 68fa ldr r2, [r7, #12] + 8002af2: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8002af4: 683b ldr r3, [r7, #0] + 8002af6: 685a ldr r2, [r3, #4] + 8002af8: 687b ldr r3, [r7, #4] + 8002afa: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002afc: 687b ldr r3, [r7, #4] + 8002afe: 697a ldr r2, [r7, #20] + 8002b00: 621a str r2, [r3, #32] +} + 8002b02: bf00 nop + 8002b04: 371c adds r7, #28 + 8002b06: 46bd mov sp, r7 + 8002b08: bc80 pop {r7} + 8002b0a: 4770 bx lr + +08002b0c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002b0c: b480 push {r7} + 8002b0e: b087 sub sp, #28 + 8002b10: af00 add r7, sp, #0 + 8002b12: 6078 str r0, [r7, #4] + 8002b14: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002b16: 687b ldr r3, [r7, #4] + 8002b18: 6a1b ldr r3, [r3, #32] + 8002b1a: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8002b1c: 687b ldr r3, [r7, #4] + 8002b1e: 6a1b ldr r3, [r3, #32] + 8002b20: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8002b24: 687b ldr r3, [r7, #4] + 8002b26: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002b28: 687b ldr r3, [r7, #4] + 8002b2a: 685b ldr r3, [r3, #4] + 8002b2c: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002b2e: 687b ldr r3, [r7, #4] + 8002b30: 69db ldr r3, [r3, #28] + 8002b32: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8002b34: 68fb ldr r3, [r7, #12] + 8002b36: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002b3a: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 8002b3c: 68fb ldr r3, [r7, #12] + 8002b3e: f023 0303 bic.w r3, r3, #3 + 8002b42: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002b44: 683b ldr r3, [r7, #0] + 8002b46: 681b ldr r3, [r3, #0] + 8002b48: 68fa ldr r2, [r7, #12] + 8002b4a: 4313 orrs r3, r2 + 8002b4c: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8002b4e: 697b ldr r3, [r7, #20] + 8002b50: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8002b54: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 8002b56: 683b ldr r3, [r7, #0] + 8002b58: 689b ldr r3, [r3, #8] + 8002b5a: 021b lsls r3, r3, #8 + 8002b5c: 697a ldr r2, [r7, #20] + 8002b5e: 4313 orrs r3, r2 + 8002b60: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002b62: 687b ldr r3, [r7, #4] + 8002b64: 693a ldr r2, [r7, #16] + 8002b66: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002b68: 687b ldr r3, [r7, #4] + 8002b6a: 68fa ldr r2, [r7, #12] + 8002b6c: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8002b6e: 683b ldr r3, [r7, #0] + 8002b70: 685a ldr r2, [r3, #4] + 8002b72: 687b ldr r3, [r7, #4] + 8002b74: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002b76: 687b ldr r3, [r7, #4] + 8002b78: 697a ldr r2, [r7, #20] + 8002b7a: 621a str r2, [r3, #32] +} + 8002b7c: bf00 nop + 8002b7e: 371c adds r7, #28 + 8002b80: 46bd mov sp, r7 + 8002b82: bc80 pop {r7} + 8002b84: 4770 bx lr + +08002b86 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002b86: b480 push {r7} + 8002b88: b087 sub sp, #28 + 8002b8a: af00 add r7, sp, #0 + 8002b8c: 6078 str r0, [r7, #4] + 8002b8e: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002b90: 687b ldr r3, [r7, #4] + 8002b92: 6a1b ldr r3, [r3, #32] + 8002b94: 617b str r3, [r7, #20] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8002b96: 687b ldr r3, [r7, #4] + 8002b98: 6a1b ldr r3, [r3, #32] + 8002b9a: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8002b9e: 687b ldr r3, [r7, #4] + 8002ba0: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002ba2: 687b ldr r3, [r7, #4] + 8002ba4: 685b ldr r3, [r3, #4] + 8002ba6: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002ba8: 687b ldr r3, [r7, #4] + 8002baa: 69db ldr r3, [r3, #28] + 8002bac: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8002bae: 68fb ldr r3, [r7, #12] + 8002bb0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002bb4: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8002bb6: 68fb ldr r3, [r7, #12] + 8002bb8: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002bbc: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002bbe: 683b ldr r3, [r7, #0] + 8002bc0: 681b ldr r3, [r3, #0] + 8002bc2: 021b lsls r3, r3, #8 + 8002bc4: 68fa ldr r2, [r7, #12] + 8002bc6: 4313 orrs r3, r2 + 8002bc8: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8002bca: 697b ldr r3, [r7, #20] + 8002bcc: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8002bd0: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8002bd2: 683b ldr r3, [r7, #0] + 8002bd4: 689b ldr r3, [r3, #8] + 8002bd6: 031b lsls r3, r3, #12 + 8002bd8: 697a ldr r2, [r7, #20] + 8002bda: 4313 orrs r3, r2 + 8002bdc: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002bde: 687b ldr r3, [r7, #4] + 8002be0: 693a ldr r2, [r7, #16] + 8002be2: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002be4: 687b ldr r3, [r7, #4] + 8002be6: 68fa ldr r2, [r7, #12] + 8002be8: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 8002bea: 683b ldr r3, [r7, #0] + 8002bec: 685a ldr r2, [r3, #4] + 8002bee: 687b ldr r3, [r7, #4] + 8002bf0: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002bf2: 687b ldr r3, [r7, #4] + 8002bf4: 697a ldr r2, [r7, #20] + 8002bf6: 621a str r2, [r3, #32] +} + 8002bf8: bf00 nop + 8002bfa: 371c adds r7, #28 + 8002bfc: 46bd mov sp, r7 + 8002bfe: bc80 pop {r7} + 8002c00: 4770 bx lr + +08002c02 : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002c02: b480 push {r7} + 8002c04: b087 sub sp, #28 + 8002c06: af00 add r7, sp, #0 + 8002c08: 60f8 str r0, [r7, #12] + 8002c0a: 60b9 str r1, [r7, #8] + 8002c0c: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8002c0e: 68fb ldr r3, [r7, #12] + 8002c10: 6a1b ldr r3, [r3, #32] + 8002c12: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002c14: 68fb ldr r3, [r7, #12] + 8002c16: 6a1b ldr r3, [r3, #32] + 8002c18: f023 0201 bic.w r2, r3, #1 + 8002c1c: 68fb ldr r3, [r7, #12] + 8002c1e: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002c20: 68fb ldr r3, [r7, #12] + 8002c22: 699b ldr r3, [r3, #24] + 8002c24: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8002c26: 693b ldr r3, [r7, #16] + 8002c28: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8002c2c: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8002c2e: 687b ldr r3, [r7, #4] + 8002c30: 011b lsls r3, r3, #4 + 8002c32: 693a ldr r2, [r7, #16] + 8002c34: 4313 orrs r3, r2 + 8002c36: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8002c38: 697b ldr r3, [r7, #20] + 8002c3a: f023 030a bic.w r3, r3, #10 + 8002c3e: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8002c40: 697a ldr r2, [r7, #20] + 8002c42: 68bb ldr r3, [r7, #8] + 8002c44: 4313 orrs r3, r2 + 8002c46: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8002c48: 68fb ldr r3, [r7, #12] + 8002c4a: 693a ldr r2, [r7, #16] + 8002c4c: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002c4e: 68fb ldr r3, [r7, #12] + 8002c50: 697a ldr r2, [r7, #20] + 8002c52: 621a str r2, [r3, #32] +} + 8002c54: bf00 nop + 8002c56: 371c adds r7, #28 + 8002c58: 46bd mov sp, r7 + 8002c5a: bc80 pop {r7} + 8002c5c: 4770 bx lr + +08002c5e : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002c5e: b480 push {r7} + 8002c60: b087 sub sp, #28 + 8002c62: af00 add r7, sp, #0 + 8002c64: 60f8 str r0, [r7, #12] + 8002c66: 60b9 str r1, [r7, #8] + 8002c68: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 8002c6a: 68fb ldr r3, [r7, #12] + 8002c6c: 6a1b ldr r3, [r3, #32] + 8002c6e: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002c70: 68fb ldr r3, [r7, #12] + 8002c72: 6a1b ldr r3, [r3, #32] + 8002c74: f023 0210 bic.w r2, r3, #16 + 8002c78: 68fb ldr r3, [r7, #12] + 8002c7a: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002c7c: 68fb ldr r3, [r7, #12] + 8002c7e: 699b ldr r3, [r3, #24] + 8002c80: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8002c82: 693b ldr r3, [r7, #16] + 8002c84: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 8002c88: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 8002c8a: 687b ldr r3, [r7, #4] + 8002c8c: 031b lsls r3, r3, #12 + 8002c8e: 693a ldr r2, [r7, #16] + 8002c90: 4313 orrs r3, r2 + 8002c92: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8002c94: 697b ldr r3, [r7, #20] + 8002c96: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8002c9a: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8002c9c: 68bb ldr r3, [r7, #8] + 8002c9e: 011b lsls r3, r3, #4 + 8002ca0: 697a ldr r2, [r7, #20] + 8002ca2: 4313 orrs r3, r2 + 8002ca4: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8002ca6: 68fb ldr r3, [r7, #12] + 8002ca8: 693a ldr r2, [r7, #16] + 8002caa: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002cac: 68fb ldr r3, [r7, #12] + 8002cae: 697a ldr r2, [r7, #20] + 8002cb0: 621a str r2, [r3, #32] +} + 8002cb2: bf00 nop + 8002cb4: 371c adds r7, #28 + 8002cb6: 46bd mov sp, r7 + 8002cb8: bc80 pop {r7} + 8002cba: 4770 bx lr + +08002cbc : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 8002cbc: b480 push {r7} + 8002cbe: b085 sub sp, #20 + 8002cc0: af00 add r7, sp, #0 + 8002cc2: 6078 str r0, [r7, #4] + 8002cc4: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 8002cc6: 687b ldr r3, [r7, #4] + 8002cc8: 689b ldr r3, [r3, #8] + 8002cca: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8002ccc: 68fb ldr r3, [r7, #12] + 8002cce: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002cd2: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8002cd4: 683a ldr r2, [r7, #0] + 8002cd6: 68fb ldr r3, [r7, #12] + 8002cd8: 4313 orrs r3, r2 + 8002cda: f043 0307 orr.w r3, r3, #7 + 8002cde: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002ce0: 687b ldr r3, [r7, #4] + 8002ce2: 68fa ldr r2, [r7, #12] + 8002ce4: 609a str r2, [r3, #8] +} + 8002ce6: bf00 nop + 8002ce8: 3714 adds r7, #20 + 8002cea: 46bd mov sp, r7 + 8002cec: bc80 pop {r7} + 8002cee: 4770 bx lr + +08002cf0 : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8002cf0: b480 push {r7} + 8002cf2: b087 sub sp, #28 + 8002cf4: af00 add r7, sp, #0 + 8002cf6: 60f8 str r0, [r7, #12] + 8002cf8: 60b9 str r1, [r7, #8] + 8002cfa: 607a str r2, [r7, #4] + 8002cfc: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8002cfe: 68fb ldr r3, [r7, #12] + 8002d00: 689b ldr r3, [r3, #8] + 8002d02: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8002d04: 697b ldr r3, [r7, #20] + 8002d06: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8002d0a: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8002d0c: 683b ldr r3, [r7, #0] + 8002d0e: 021a lsls r2, r3, #8 + 8002d10: 687b ldr r3, [r7, #4] + 8002d12: 431a orrs r2, r3 + 8002d14: 68bb ldr r3, [r7, #8] + 8002d16: 4313 orrs r3, r2 + 8002d18: 697a ldr r2, [r7, #20] + 8002d1a: 4313 orrs r3, r2 + 8002d1c: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002d1e: 68fb ldr r3, [r7, #12] + 8002d20: 697a ldr r2, [r7, #20] + 8002d22: 609a str r2, [r3, #8] +} + 8002d24: bf00 nop + 8002d26: 371c adds r7, #28 + 8002d28: 46bd mov sp, r7 + 8002d2a: bc80 pop {r7} + 8002d2c: 4770 bx lr + +08002d2e : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8002d2e: b480 push {r7} + 8002d30: b087 sub sp, #28 + 8002d32: af00 add r7, sp, #0 + 8002d34: 60f8 str r0, [r7, #12] + 8002d36: 60b9 str r1, [r7, #8] + 8002d38: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 8002d3a: 68bb ldr r3, [r7, #8] + 8002d3c: f003 031f and.w r3, r3, #31 + 8002d40: 2201 movs r2, #1 + 8002d42: fa02 f303 lsl.w r3, r2, r3 + 8002d46: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 8002d48: 68fb ldr r3, [r7, #12] + 8002d4a: 6a1a ldr r2, [r3, #32] + 8002d4c: 697b ldr r3, [r7, #20] + 8002d4e: 43db mvns r3, r3 + 8002d50: 401a ands r2, r3 + 8002d52: 68fb ldr r3, [r7, #12] + 8002d54: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8002d56: 68fb ldr r3, [r7, #12] + 8002d58: 6a1a ldr r2, [r3, #32] + 8002d5a: 68bb ldr r3, [r7, #8] + 8002d5c: f003 031f and.w r3, r3, #31 + 8002d60: 6879 ldr r1, [r7, #4] + 8002d62: fa01 f303 lsl.w r3, r1, r3 + 8002d66: 431a orrs r2, r3 + 8002d68: 68fb ldr r3, [r7, #12] + 8002d6a: 621a str r2, [r3, #32] +} + 8002d6c: bf00 nop + 8002d6e: 371c adds r7, #28 + 8002d70: 46bd mov sp, r7 + 8002d72: bc80 pop {r7} + 8002d74: 4770 bx lr + ... + +08002d78 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8002d78: b480 push {r7} + 8002d7a: b085 sub sp, #20 + 8002d7c: af00 add r7, sp, #0 + 8002d7e: 6078 str r0, [r7, #4] + 8002d80: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 8002d82: 687b ldr r3, [r7, #4] + 8002d84: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002d88: 2b01 cmp r3, #1 + 8002d8a: d101 bne.n 8002d90 + 8002d8c: 2302 movs r3, #2 + 8002d8e: e046 b.n 8002e1e + 8002d90: 687b ldr r3, [r7, #4] + 8002d92: 2201 movs r2, #1 + 8002d94: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002d98: 687b ldr r3, [r7, #4] + 8002d9a: 2202 movs r2, #2 + 8002d9c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8002da0: 687b ldr r3, [r7, #4] + 8002da2: 681b ldr r3, [r3, #0] + 8002da4: 685b ldr r3, [r3, #4] + 8002da6: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8002da8: 687b ldr r3, [r7, #4] + 8002daa: 681b ldr r3, [r3, #0] + 8002dac: 689b ldr r3, [r3, #8] + 8002dae: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8002db0: 68fb ldr r3, [r7, #12] + 8002db2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002db6: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8002db8: 683b ldr r3, [r7, #0] + 8002dba: 681b ldr r3, [r3, #0] + 8002dbc: 68fa ldr r2, [r7, #12] + 8002dbe: 4313 orrs r3, r2 + 8002dc0: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8002dc2: 687b ldr r3, [r7, #4] + 8002dc4: 681b ldr r3, [r3, #0] + 8002dc6: 68fa ldr r2, [r7, #12] + 8002dc8: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002dca: 687b ldr r3, [r7, #4] + 8002dcc: 681b ldr r3, [r3, #0] + 8002dce: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002dd2: d00e beq.n 8002df2 + 8002dd4: 687b ldr r3, [r7, #4] + 8002dd6: 681b ldr r3, [r3, #0] + 8002dd8: 4a13 ldr r2, [pc, #76] @ (8002e28 ) + 8002dda: 4293 cmp r3, r2 + 8002ddc: d009 beq.n 8002df2 + 8002dde: 687b ldr r3, [r7, #4] + 8002de0: 681b ldr r3, [r3, #0] + 8002de2: 4a12 ldr r2, [pc, #72] @ (8002e2c ) + 8002de4: 4293 cmp r3, r2 + 8002de6: d004 beq.n 8002df2 + 8002de8: 687b ldr r3, [r7, #4] + 8002dea: 681b ldr r3, [r3, #0] + 8002dec: 4a10 ldr r2, [pc, #64] @ (8002e30 ) + 8002dee: 4293 cmp r3, r2 + 8002df0: d10c bne.n 8002e0c + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8002df2: 68bb ldr r3, [r7, #8] + 8002df4: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8002df8: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 8002dfa: 683b ldr r3, [r7, #0] + 8002dfc: 685b ldr r3, [r3, #4] + 8002dfe: 68ba ldr r2, [r7, #8] + 8002e00: 4313 orrs r3, r2 + 8002e02: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002e04: 687b ldr r3, [r7, #4] + 8002e06: 681b ldr r3, [r3, #0] + 8002e08: 68ba ldr r2, [r7, #8] + 8002e0a: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8002e0c: 687b ldr r3, [r7, #4] + 8002e0e: 2201 movs r2, #1 + 8002e10: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002e14: 687b ldr r3, [r7, #4] + 8002e16: 2200 movs r2, #0 + 8002e18: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 8002e1c: 2300 movs r3, #0 +} + 8002e1e: 4618 mov r0, r3 + 8002e20: 3714 adds r7, #20 + 8002e22: 46bd mov sp, r7 + 8002e24: bc80 pop {r7} + 8002e26: 4770 bx lr + 8002e28: 40000400 .word 0x40000400 + 8002e2c: 40000800 .word 0x40000800 + 8002e30: 40010800 .word 0x40010800 + +08002e34 : + 8002e34: 4603 mov r3, r0 + 8002e36: 4402 add r2, r0 + 8002e38: 4293 cmp r3, r2 + 8002e3a: d100 bne.n 8002e3e + 8002e3c: 4770 bx lr + 8002e3e: f803 1b01 strb.w r1, [r3], #1 + 8002e42: e7f9 b.n 8002e38 + +08002e44 <__libc_init_array>: + 8002e44: b570 push {r4, r5, r6, lr} + 8002e46: 2600 movs r6, #0 + 8002e48: 4d0c ldr r5, [pc, #48] @ (8002e7c <__libc_init_array+0x38>) + 8002e4a: 4c0d ldr r4, [pc, #52] @ (8002e80 <__libc_init_array+0x3c>) + 8002e4c: 1b64 subs r4, r4, r5 + 8002e4e: 10a4 asrs r4, r4, #2 + 8002e50: 42a6 cmp r6, r4 + 8002e52: d109 bne.n 8002e68 <__libc_init_array+0x24> + 8002e54: f000 f81a bl 8002e8c <_init> + 8002e58: 2600 movs r6, #0 + 8002e5a: 4d0a ldr r5, [pc, #40] @ (8002e84 <__libc_init_array+0x40>) + 8002e5c: 4c0a ldr r4, [pc, #40] @ (8002e88 <__libc_init_array+0x44>) + 8002e5e: 1b64 subs r4, r4, r5 + 8002e60: 10a4 asrs r4, r4, #2 + 8002e62: 42a6 cmp r6, r4 + 8002e64: d105 bne.n 8002e72 <__libc_init_array+0x2e> + 8002e66: bd70 pop {r4, r5, r6, pc} + 8002e68: f855 3b04 ldr.w r3, [r5], #4 + 8002e6c: 4798 blx r3 + 8002e6e: 3601 adds r6, #1 + 8002e70: e7ee b.n 8002e50 <__libc_init_array+0xc> + 8002e72: f855 3b04 ldr.w r3, [r5], #4 + 8002e76: 4798 blx r3 + 8002e78: 3601 adds r6, #1 + 8002e7a: e7f2 b.n 8002e62 <__libc_init_array+0x1e> + 8002e7c: 08002ed8 .word 0x08002ed8 + 8002e80: 08002ed8 .word 0x08002ed8 + 8002e84: 08002ed8 .word 0x08002ed8 + 8002e88: 08002edc .word 0x08002edc + +08002e8c <_init>: + 8002e8c: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002e8e: bf00 nop + 8002e90: bcf8 pop {r3, r4, r5, r6, r7} + 8002e92: bc08 pop {r3} + 8002e94: 469e mov lr, r3 + 8002e96: 4770 bx lr + +08002e98 <_fini>: + 8002e98: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002e9a: bf00 nop + 8002e9c: bcf8 pop {r3, r4, r5, r6, r7} + 8002e9e: bc08 pop {r3} + 8002ea0: 469e mov lr, r3 + 8002ea2: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP4_GAMME.map b/TP4_INIT_TFT/Debug/TP4_GAMME.map new file mode 100644 index 0000000..7325b99 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_GAMME.map @@ -0,0 +1,3423 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c85 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85aff ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x85973 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x00000000 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IRQHandler + 0x00000000 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DelayElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x2d68 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.DO 0x080004b0 0x1c ./Core/Src/main.o + 0x080004b0 DO + .text.RE 0x080004cc 0x1c ./Core/Src/main.o + 0x080004cc RE + .text.MI 0x080004e8 0x1c ./Core/Src/main.o + 0x080004e8 MI + .text.FA 0x08000504 0x1c ./Core/Src/main.o + 0x08000504 FA + .text.SOL 0x08000520 0x1c ./Core/Src/main.o + 0x08000520 SOL + .text.LA 0x0800053c 0x1c ./Core/Src/main.o + 0x0800053c LA + .text.SI 0x08000558 0x1c ./Core/Src/main.o + 0x08000558 SI + .text.main 0x08000574 0xcc ./Core/Src/main.o + 0x08000574 main + .text.SystemClock_Config + 0x08000640 0x8c ./Core/Src/main.o + 0x08000640 SystemClock_Config + .text.MX_SPI1_Init + 0x080006cc 0x6c ./Core/Src/main.o + .text.MX_TIM3_Init + 0x08000738 0xe8 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000820 0x10c ./Core/Src/main.o + .text.Error_Handler + 0x0800092c 0xc ./Core/Src/main.o + 0x0800092c Error_Handler + .text.HAL_MspInit + 0x08000938 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000938 HAL_MspInit + .text.HAL_SPI_MspInit + 0x08000994 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000994 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000a1c 0x3c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a1c HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000a58 0x70 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a58 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x08000ac8 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ac8 NMI_Handler + .text.HardFault_Handler + 0x08000ad0 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ad0 HardFault_Handler + .text.MemManage_Handler + 0x08000ad8 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ad8 MemManage_Handler + .text.BusFault_Handler + 0x08000ae0 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ae0 BusFault_Handler + .text.UsageFault_Handler + 0x08000ae8 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ae8 UsageFault_Handler + .text.SVC_Handler + 0x08000af0 0xc ./Core/Src/stm32l1xx_it.o + 0x08000af0 SVC_Handler + .text.DebugMon_Handler + 0x08000afc 0xc ./Core/Src/stm32l1xx_it.o + 0x08000afc DebugMon_Handler + .text.PendSV_Handler + 0x08000b08 0xc ./Core/Src/stm32l1xx_it.o + 0x08000b08 PendSV_Handler + .text.SysTick_Handler + 0x08000b14 0xc ./Core/Src/stm32l1xx_it.o + 0x08000b14 SysTick_Handler + .text.EXTI15_10_IRQHandler + 0x08000b20 0x18 ./Core/Src/stm32l1xx_it.o + 0x08000b20 EXTI15_10_IRQHandler + .text.SystemInit + 0x08000b38 0xc ./Core/Src/system_stm32l1xx.o + 0x08000b38 SystemInit + .text.Reset_Handler + 0x08000b44 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08000b44 Reset_Handler + .text.Default_Handler + 0x08000b8c 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000b8c DMA2_Channel3_IRQHandler + 0x08000b8c EXTI2_IRQHandler + 0x08000b8c COMP_ACQ_IRQHandler + 0x08000b8c TIM10_IRQHandler + 0x08000b8c USB_HP_IRQHandler + 0x08000b8c TIM6_IRQHandler + 0x08000b8c PVD_IRQHandler + 0x08000b8c EXTI3_IRQHandler + 0x08000b8c EXTI0_IRQHandler + 0x08000b8c I2C2_EV_IRQHandler + 0x08000b8c SPI1_IRQHandler + 0x08000b8c USB_FS_WKUP_IRQHandler + 0x08000b8c DMA2_Channel2_IRQHandler + 0x08000b8c DMA1_Channel4_IRQHandler + 0x08000b8c ADC1_IRQHandler + 0x08000b8c USART3_IRQHandler + 0x08000b8c DMA1_Channel7_IRQHandler + 0x08000b8c LCD_IRQHandler + 0x08000b8c UART5_IRQHandler + 0x08000b8c TIM4_IRQHandler + 0x08000b8c DMA2_Channel1_IRQHandler + 0x08000b8c I2C1_EV_IRQHandler + 0x08000b8c DMA1_Channel6_IRQHandler + 0x08000b8c UART4_IRQHandler + 0x08000b8c DMA2_Channel4_IRQHandler + 0x08000b8c TIM3_IRQHandler + 0x08000b8c RCC_IRQHandler + 0x08000b8c DMA1_Channel1_IRQHandler + 0x08000b8c Default_Handler + 0x08000b8c TIM7_IRQHandler + 0x08000b8c TIM5_IRQHandler + 0x08000b8c EXTI9_5_IRQHandler + 0x08000b8c TIM9_IRQHandler + 0x08000b8c TAMPER_STAMP_IRQHandler + 0x08000b8c RTC_WKUP_IRQHandler + 0x08000b8c SPI2_IRQHandler + 0x08000b8c DMA2_Channel5_IRQHandler + 0x08000b8c DMA1_Channel5_IRQHandler + 0x08000b8c USB_LP_IRQHandler + 0x08000b8c EXTI4_IRQHandler + 0x08000b8c DMA1_Channel3_IRQHandler + 0x08000b8c COMP_IRQHandler + 0x08000b8c WWDG_IRQHandler + 0x08000b8c TIM2_IRQHandler + 0x08000b8c DAC_IRQHandler + 0x08000b8c EXTI1_IRQHandler + 0x08000b8c TIM11_IRQHandler + 0x08000b8c USART2_IRQHandler + 0x08000b8c I2C2_ER_IRQHandler + 0x08000b8c DMA1_Channel2_IRQHandler + 0x08000b8c FLASH_IRQHandler + 0x08000b8c USART1_IRQHandler + 0x08000b8c SPI3_IRQHandler + 0x08000b8c I2C1_ER_IRQHandler + 0x08000b8c RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000b8e 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b8e MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000bb8 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bb8 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000bc8 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bc8 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000bd8 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bd8 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000bfc 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bfc MAX7219_Clear + .text.MAX7219_DisplayChar + 0x08000c28 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000c28 MAX7219_DisplayChar + .text.MAX7219_Write + 0x08000c54 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000c54 MAX7219_Write + .text.MAX7219_SendByte + 0x08000c90 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000cb4 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000cb4 HAL_Init + .text.HAL_InitTick + 0x08000ce4 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000ce4 HAL_InitTick + .text.HAL_IncTick + 0x08000d58 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d58 HAL_IncTick + .text.HAL_GetTick + 0x08000d7c 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d7c HAL_GetTick + .text.HAL_Delay + 0x08000d90 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d90 HAL_Delay + .text.__NVIC_SetPriorityGrouping + 0x08000dd4 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000e1c 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000e38 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000e70 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000ec4 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000f28 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000f6c 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000f6c HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000f82 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000f82 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000fba 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000fba HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x08000fd6 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000fd6 HAL_SYSTICK_Config + *fill* 0x08000fee 0x2 + .text.HAL_GPIO_Init + 0x08000ff0 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000ff0 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x08001310 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001310 HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x08001340 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001340 HAL_GPIO_EXTI_IRQHandler + .text.HAL_GPIO_EXTI_Callback + 0x08001370 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08001370 HAL_GPIO_EXTI_Callback + .text.HAL_RCC_OscConfig + 0x08001384 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001384 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x080019e4 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080019e4 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001c4c 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001c4c HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001dc8 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001e88 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001e88 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001f9a 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001f9a HAL_SPI_Transmit + *fill* 0x08002222 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08002224 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08002334 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x080023dc 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080023dc HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x0800245a 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800245a HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x080024d8 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024d8 HAL_TIM_PWM_MspInit + *fill* 0x080024ea 0x2 + .text.HAL_TIM_PWM_Start + 0x080024ec 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024ec HAL_TIM_PWM_Start + .text.HAL_TIM_PWM_ConfigChannel + 0x08002618 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002618 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x0800279c 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x0800279c HAL_TIM_ConfigClockSource + *fill* 0x0800292a 0x2 + .text.TIM_Base_SetConfig + 0x0800292c 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x08002a18 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x08002a90 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x08002b0c 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08002b86 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08002c02 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08002c5e 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08002cbc 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08002cf0 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x08002d2e 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + *fill* 0x08002d76 0x2 + .text.HAL_TIMEx_MasterConfigSynchronization + 0x08002d78 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x08002d78 HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x08002e34 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08002e34 memset + .text.__libc_init_array + 0x08002e44 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x08002e44 __libc_init_array + *(.glue_7) + .glue_7 0x08002e8c 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08002e8c 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08002e8c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08002e8c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002e8c _init + .init 0x08002e90 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002e98 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002e98 _fini + .fini 0x08002e9c 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08002ea4 . = ALIGN (0x4) + 0x08002ea4 _etext = . + +.vfp11_veneer 0x08002ea4 0x0 + .vfp11_veneer 0x08002ea4 0x0 linker stubs + +.v4_bx 0x08002ea4 0x0 + .v4_bx 0x08002ea4 0x0 linker stubs + +.iplt 0x08002ea4 0x0 + .iplt 0x08002ea4 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08002ea4 0x2c + 0x08002ea4 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x08002ea4 0x9 ./Core/Src/system_stm32l1xx.o + 0x08002ea4 PLLMulTable + *fill* 0x08002ead 0x3 + .rodata.AHBPrescTable + 0x08002eb0 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002eb0 AHBPrescTable + .rodata.conv_7seg + 0x08002ec0 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08002ec0 conv_7seg + 0x08002ed0 . = ALIGN (0x4) + +.ARM.extab 0x08002ed0 0x0 + 0x08002ed0 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08002ed0 . = ALIGN (0x4) + +.ARM 0x08002ed0 0x8 + 0x08002ed0 . = ALIGN (0x4) + 0x08002ed0 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08002ed0 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x08002ed8 __exidx_end = . + 0x08002ed8 . = ALIGN (0x4) + +.preinit_array 0x08002ed8 0x0 + 0x08002ed8 . = ALIGN (0x4) + 0x08002ed8 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08002ed8 PROVIDE (__preinit_array_end = .) + 0x08002ed8 . = ALIGN (0x4) + +.init_array 0x08002ed8 0x4 + 0x08002ed8 . = ALIGN (0x4) + 0x08002ed8 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08002ed8 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08002edc PROVIDE (__init_array_end = .) + 0x08002edc . = ALIGN (0x4) + +.fini_array 0x08002edc 0x4 + 0x08002edc . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08002edc 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08002ee0 . = ALIGN (0x4) + 0x08002ee0 _sidata = LOADADDR (.data) + +.rel.dyn 0x08002ee0 0x0 + .rel.iplt 0x08002ee0 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x08002ee0 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x08002eec + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0xb8 load address 0x08002eec + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.htim3 0x20000080 0x40 ./Core/Src/main.o + 0x20000080 htim3 + .bss.uwTick 0x200000c0 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x200000c0 uwTick + *(COMMON) + 0x200000c4 . = ALIGN (0x4) + 0x200000c4 _ebss = . + 0x200000c4 __bss_end__ = _ebss + +._user_heap_stack + 0x200000c4 0x604 load address 0x08002eec + 0x200000c8 . = ALIGN (0x8) + *fill* 0x200000c4 0x4 + [!provide] PROVIDE (end = .) + 0x200000c8 PROVIDE (_end = .) + 0x200002c8 . = (. + _Min_Heap_Size) + *fill* 0x200000c8 0x200 + 0x200006c8 . = (. + _Min_Stack_Size) + *fill* 0x200002c8 0x400 + 0x200006c8 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002fe 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000032b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000348 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP4_GAMME.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x90ef + .debug_info 0x00000000 0x1268 ./Core/Src/main.o + .debug_info 0x00001268 0xc12 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00001e7a 0x14c ./Core/Src/stm32l1xx_it.o + .debug_info 0x00001fc6 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x00002242 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x00002272 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x00002a80 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x0000316f 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x00003e54 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00004406 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x00004da1 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x0000627a 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x00008a47 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x18df + .debug_abbrev 0x00000000 0x2e0 ./Core/Src/main.o + .debug_abbrev 0x000002e0 0x1d9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x000004b9 0xa0 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x00000559 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x00000675 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x00000699 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000882 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000af7 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000e13 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x00000fe7 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x0000129f 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x00001519 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x00001777 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xab0 + .debug_aranges + 0x00000000 0x80 ./Core/Src/main.o + .debug_aranges + 0x00000080 0x48 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x000000c8 0x68 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000130 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000158 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000180 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001f8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002d8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x00000400 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000458 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004e8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x000006b8 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a88 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x81a + .debug_rnglists + 0x00000000 0x5f ./Core/Src/main.o + .debug_rnglists + 0x0000005f 0x32 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000091 0x49 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000da 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000f4 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x0000010d 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x00000162 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x00000205 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002de 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x0000031d 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x0000038a 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004f9 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x00000800 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xaad6 + .debug_line 0x00000000 0x994 ./Core/Src/main.o + .debug_line 0x00000994 0x776 ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x0000110a 0x788 ./Core/Src/stm32l1xx_it.o + .debug_line 0x00001892 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001ff3 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x0000206c 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x0000287b 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00003207 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003e62 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x00004832 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x00005781 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x000073cc 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a37d 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x8863a + .debug_str 0x00000000 0x8863a ./Core/Src/main.o + 0x86775 (size before relaxing) + .debug_str 0x0008863a 0x86035 ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x0008863a 0x858f1 ./Core/Src/stm32l1xx_it.o + .debug_str 0x0008863a 0x85900 ./Core/Src/system_stm32l1xx.o + .debug_str 0x0008863a 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x0008863a 0x85e5c ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x0008863a 0x86028 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x0008863a 0x86134 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x0008863a 0x85a93 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x0008863a 0x85dbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x0008863a 0x86222 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x0008863a 0x86c03 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x0008863a 0x85da8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2c14 + .debug_frame 0x00000000 0x194 ./Core/Src/main.o + .debug_frame 0x00000194 0xf4 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x00000288 0x120 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x000003a8 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x00000400 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000598 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x000008d4 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000dbc 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000f08 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x0000112c 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x00001954 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002b08 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002b68 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002b88 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002bb4 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002be0 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP4_INIT_TFT.elf b/TP4_INIT_TFT/Debug/TP4_INIT_TFT.elf new file mode 100755 index 0000000000000000000000000000000000000000..bc46301eb2d13d9ac2ce926ecf095d68c15b12c7 GIT binary patch literal 735008 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%0Aju%2HdgZvXb-^cGC?jJw> z{VlQt8r$b%!eO(bjZ972J?y%R2AwxDb!5pi?#pFx-ChgfTm)(x5Km+UQ}n|Y-dPEX zoD&pi)c#7dOpQxGG)lwc<}W*4u3C{AXv4wpWWQ@oR}j_6G&)^G)(_CQ@_5+>Du5aX z859&Iu>ZM%iO@LzkQc!bL5Wk~JGN7OV*un7Oe`)YWgz|le!&Ayk=T=Gs5EwQb_NAJ z4j;2+^=Kt+Hi|N*ki#CwnXa_WxOJHWNEp9h-PP`ldvz8o%dP311t;D>2Gd=GyN(|E zWPDcWLZFD`X0s(F(bSDXVUS97!Pm-Gzq|X{GCXh+u`1L1`%jkqFfL*yQEvq(Seg#Z zt6^g-uVEuuMSF}xr4JupLGw5NB6v2HDe&~9L=R>Zys|-Zz08yfwktv$IB+c%6@ZqL zH8y0#8*nKLs5V2X7lfJrJR=LgtD}Q%Oz-j_R81eu&%tvLZk!$DZt_#XQ-W0G^D0eF zt3y387E1sn>qI&NF$23)HWb+qyyzD_4VzX{JYrDamk|2OpNeApK%*3&IdY1R!jY>@xuYZKR@20iaYq%fPmXoEe)vwsi$|kX!**?k2nD=9m@`}4YDQV_qiEc zEgbB9B6%POI|BuFFzjz)J&xJ}G-xU8l;7W>njpqpG|fizV1Cd z-hY1kh_C;N;S0ff7#}H32h#9iFA^V6q#O@m(9>B^DtR)g43314tG%=|j0Z&T6rS;b znErvGt8|%gB1&FI-Rs15x-LPxvjpq0oPHi*(PB_&a?VDGFj{3RbG>+6>Q%NohQ?bY zouEZg;Y*Rzp;JO?f}W8bLf#GFJp(#<**WkzXvx^e@JJF-Uded^IqH z4Qn`rZu~nK*zBc->2feI+(61mKE)W!!f>`?SVd$>uHL!AC)Tnk> z^C~*58l#&oQE*XB|?xY9AQ7|q%#qheRs|nRDSUH@K6f7(yldH!YAa%EW zDyMR&<%rvTua-?(Jid(-l;W+QK9WNaPWLx);^{P zju1*%=c!-ke~_jzH=0|eqg6mU2REao9fLryoSO*7tK*rBVK^%Mt+@sRIEautY>lp% zyM4X`k0Ij0i(n~#wUnzXkPLnr7Ij~Xz0NY*a>Ic5&ZI}SH4seQY0iu19nHJ{((hgVai@*)hEBKn#%rqY1w6WEclo-2S(Qv zZUZtI`iCY6`?&-m#xe7RSyQy#>t)1rAb1Eoj6Q#O+JjZX(~ zcahQx4AA4(+8h){S!5RhM$oELcW$*;;g&Xd5r)9N8v>&kBAGa6->^6Ei=4zIz0S3b zDRmH8=#=B(=L^FZ;wEr4b2QWlUS#a1_?1R1CEA@ksnwn45iFez{m9NPUm;JQ29VmW zRws%w1ekz7^*A)W@1TpS@tT~%IkH9{fnf#{ zD*0a5+B0cg`Mg1ma}t6O2#>W1SKtowjOazEs_J77DWiqADX>Vnj)Y!Kx>CdRj{5i# z6Xq8+nGhpINc7E_gMxhl9s67|m!l+alU2u_F76g6bH;kTq%RPKB7_ulUXU~n>>pGa z8-E8Sy#_%P$SEU}D5Z|r_biHM&)~`FvOmDoOL#`nZ@4Mb_E9yn)yS^ttEx0q`qbp# zZtPdOOl#-dDtXoYM&dYYQcufue*3t%y?gim?nmgwfr8qNw)aM`fPe~u9+Vp7eIhc^ z(Te58a{@)Sfu5BN#A4t{$?$Unyk8+`u5hUVYD2XgHFs7QzHP#E1BtAcB^lIJN^q%Z z(QPhad0yy-Yb9M3BUoDNUU+HEu`@t*be1g7!;5(V-dMnaA8SEmDMvr$j9HUSR5(8i{AoUim5>= zMy~V>dMfG5)OC`G7~*G;ouE##Poq}+07~j;wax8}u=(gX3efR$h8G9*gapC75m{6L z%yRJs;(Gi8+~;mx#lc*Gp^L^jOP-A$X2sz*BMGp~m< zk8z>V7W4!Rk`tEwErbT`C1uL}JIRuS8_l}x<7i1`^!0));_i_W z^U|(Yl=7}cBKm1JI%wWCv&`X#EMd;s@>`W9&vv61ZSV=p%8h zz(fvLR82_yPHD@*^C{qu2Wo6G1l%Xa*gB% z`uE<)+m8>ok2|`2-rIeS+86(J`{@Uy)nxKXUFw+)4*4A*eU>G?hE|?)-ZdMTQvHMTJkCPp5H4A5x$DUn^Jlao9 zSnU1rA~Kec`6l(r>A~vs#G$~AvT?*YR5~Fe^%7;}jjWmzUCb;vaww&Kzo5(hl5_C` z$C7!BcEAyJ=~xbcfT?5QWcyZN`ZODb1(ub(H9mKkc&uQ!z0r?GXWgs89?nE(-KzoP zp*k3YV%K#*Yn7#)1&C|=SKU=Z2S?4ap-izZZdBsvxvSM(mtO+3wTv(^edQgQNuW7T{cSKf$Xb9H|FH8L_=Z?Dp6tRVLIRjgPe0cqPRN%|A0QeI2k?P|CB=Bcop1WP0|d7_)rSlKM=H}3OMmO- z;7Iia)0xoFf%H%~+2tx`lal5^xx;DyLvPNqLfE;7rA_aGo+4jI@*vp z6>Z26J2~yT6O1-uwd?Edx|~Bg4u}-<1-sn6Uyv(BYu}Vl)15dvmX2LK(QMPO_3wdM!DKU1x|~0YSsA6R!)r!*WqAtqeV#QXMHHHHa$$ zk)Z)1(U`bkY%la{`VVPk)WJOgF4j;Js+ONJ_be35)DbX3**e4>sBLMp7%B%e+GB%W_^Y$zU}=n*!A8Yje|#6 z!pEN>pq4zlKM|8`Vky=Bdr3yc)t-r!E-71CN-miD@c_BQgem@i=j{iCiaxjGlefPz z<6jz)GEf2qDP1LVOYz4)_jE_k9rvOfO=|@+X*7MiNf(7h-CG zZ7GN}pwCwScv!zj;!Z>^ZN^t*w3A<;Nfp@Jq1ekg?0}kWqx#c**OncC%lSUYsNl~l ztz2V79X;qLO)M%=0oo=755l;Eq_S9FT1dvzCkP!;zO!f1TTbC<55}(99_(DReSgby zUXZzKl@_J0(4til5rqjr#hf#SiEVlZgNli0g3w!bw)4?jwm_3#lsLSOy)!7AwX{`}+J=RdPQ6y|^as`pRmN`ZKDo_`}(K{7}xEVtqjA?8%a`AYCVOs;X z#lMDZ(@$_B4i-a(GDUfZwC05sI+|e24OX%$G+oSO6J$suLbTksljMW=S4QK-#fS#< z#ERg0Z#7uoVx*mLW44p;O8>~LDX9Ve zEk~SyQ)aC{m-Ceo5_l>L?<993nwc;eFJRJ!3=KTaM25ukJIQp{HV+b`cqw72C0jj& z)9~2e@=+jGA_>=1V)j8cstB6~P|t=|v8zaHF>jslXN$3TDh!S4Lv!h|CQeIMEP9?s z=+39h(K$^D!B$Pccu@n{0n%m>Hrgi=&c8ID>GNe59u5ulOkY*19Fc*-`C+VCc-$ zT}Kal8*mq7LzG7dBXwOgsVUAl8K^sHRk=qsYp@DIZ_cM8H$3UJ7&jK8(2g>YE4E3(Fl2%!#aisMFciZ3oSXx&kGUo z$PfuURc__4jgmtKp#y*$U}>YG2he&0Ph@C6D0f=0LHG-j8Oc}ucuEa$__X2;C`I4HcY$5&aLVvnLMstw4 z%_aO)Z@&L<+bcrJR2Vq9NQMDBh4DE!Pb>nGXk&9BjXy;MpwDl%Yngp9cmr_+%R}H< z<_cQL)7@J1EKe(j4~`WVD65KKy81G`O6vkjMJx_a{Bmjk@)r%X*&}^fcHTEbEfHv_ z+({miZ@*=%BQoF@nSV|hK~e1E?he{xat@djy9_>*Fptm8W`SoExCLU;&fTZ?cOT$i z{56=ku&FLUQ^QfEwy9!j!)ewLHF>}!-2_Y@54RNTDLSVV9>Tm#{=ui)%emvA)m&=m z7oruksxm93bILe{h(@a%viQMy)h4V@qwNp`+1-))_|b5j6PS zxuu#Q@-TcH^=CW$N7@wo0sbXGnE1M;w{kENXAfFIVn3yQPo1 z7;SD)c+bJ$TUZ3T)kEuVRR@TPiUQY(hgw}Bxv`F{oNk0}ldZ`U8w;^w6 zR4E5plVT+A>XLM%G{hm%&cD;UE1B!Q`Rh4^JP35ucv%1G1V$l6++nY!y~A~KEf7_$ z+|DSdY-;Je?6=)@Ycl3#AA3aHvt0G;| zy*;thlQ%sTfwDPXA*sW9DOrs?h2Z$59;?t800~IeKvs#8BQh$NZ?t4{+RA3hF-ZQnws%< z(7wC`%HW@*-;4_kk2_dp8P(R`J^h=%JKxgL>-Tm04i7VhEL;!Xv{R#7t5&_+5hK_Q z<2Abb=yq)sSYOO4*5bKZV8=RG8@M=h6aN-0IEg8Wi`N3Hvls;E!CVhZphgQ{C&EA% z$ZAOkme7VfcZJ%&2JD`QamLPCftOJ~H#}nT!jzv6OJ@R_AQ6Fihc-`4MBOO#Mf;8`K4xVDGd1z4fU` zlMT}va*?f0&t_{NZ&M9ot08tGN);|9O3D|1h$(E-XQN`JWNkJ>XR)4uN86l&WmrJ+ zPc|=X%vnbz5t+OM)1j-3OAMjG&KC}KiJ}Xx8=?1u>@!-zgnW2W=rxDgp5nOJBd1O6 zS%CEzNi3!3VZXA`bbxhRfdXH2Moe+*%7)g=liQ#Wd=RMT@aM_ZmG^O4Do*vMCtA_Iui!$vWh%I3MHi$3mG#JO!e{@Rzpn*=uG0G)}X>wQIL z?H5U%U||D-hs*+uk5Gzh;uP96_NZQFR4#lH8naLU^om4_gr}`2WUs4Hr^5zB8!Jmg zA29XKVU7oPmjj--pp{55zyoJ^OUdYTU_3yusB%FpC8gMUToi9-A|+w8OO{hu-rl_1 ztdJ`Dc65JxqxI=%-yD5k^1@K}7HnFnqH0HO)E*y1yXLPc6S@7=G|0Z40_g@wc0hx7 z(V$+mI=JF_cxZ|c^|O@c)gCF^wJc!fS99!)S7)m;Ivxymk@TNhMMq6Uip3?kO2bdE ziZ2kP<5-EmHI#DF!EM#7Qv;~?tF1I`blp?IZ8y<256w&I8evEck@j0*$(;&TI@mAk z(a{Z}N>C4JnC{w89Rf+4(IV@@GDzd$ZddfidNP&DIxcvp%cFZhV=Q>$d(`6lr1t?0 zz=5(oV!KFU5Q~Tdc9o5+>&0@Hh3}zM9=A0BDbuUy? zIUYg#uvdUmZN)B6?Y6(SV3=#<>KE@SsPy1Y$G1dTnZFU{^p*FFggqA+;chVMa9R_Hg*7D_F4* zbGW6w<}y7EO0N>Jyiu#D$zw6-)%CZnZN%4OD=AR^$M=snA7<}aZye6ttQRU=X<%!Z zye~TWK?wf{nt{mYy0ww>l07TTh^cK4r8A7SCmYlD(gCZ8fD=U9fw&D~$pl%|aNR3) zIRol)yv$uA1*(Je1l#ta4qb^GF!|Vq$hp4FyP^YXd@o`V#!zu+Sd`ktYb0f85-}T* z{TP~(^=fP-@>E$!&YY9-8m8{ZT62AVhUjPbo6#I~Dt;>2u#mVzTI1S?1ubD$4?R%Q z9ZVUB7D4`^vF*)#oj1;$8X+7yIAob=h9YLB*jOPX?uiJ+LC&xQp(DIz+Pk6vYBaW2 z!1+PL7r5DWMG3K)@U-qwkx&Nj&>@mw?1zy);3VyITg`I2LyD8!-J!9%brscm<#)Ly z%-~7>Y&_V;Mj6N!LKYgbM#%{?CqTwg5kx(CRL|Ey6&9PzDBaopr;np|H$Ok#zGKqo zn>+kT=azkOu7A6?(IU^f5{vA6(HWls6SDaHLn=mks>K@lJ(Je7n8hxz=8&%c6KDov zg^S~nKzfCpTkbmuNGD9_aE%~-iO}R*O(R67F*=ly)}F0araWtaZr~#M@NmO{KQq4* z)lcX&Z`Q@9!PE*%R{amM#7|0RW6)gkW1J`0RKx}FS%>r-I!QxuUm z84tK-H9x;nA{6eO-{>P^0;V|3ruY%F7wcnObJ;<2C>&zhH3|DR9>7}b`5qkJDTmX?5dV=Avnhm<%WTssfKW4&on7>i zgjn`}=+EF03{O-&f8VF24c2XE>kCwWp)2Z2dx@V8&5(F9b96^CZseR3^I0|sF>7(9 zCqYd$U2tBYKEQV!es$OUD$g0EpF>QWu;J#{qj`)Zs&7& zpswc|&>%Y4AW>!7V9=49++e#6sjqQgR-J@eO%$fxtnab)21D(c8SBY!LN$TdTp%ku z++)QTur)qG=a6Gj>iz;(eTjvqU4_GIkA6|*j(pEk_8rO~vomZ%IvAd>j(cn%Uyt8v z7tbF>#S8aeEd`x|r${tqYhf7>Dq$;Sip+G*l3_W_6Mprr{_aYCL1`mDfp5NE)>Dot!!d%s-Ta-z8@)Nbwmm)z0@x>3Ju-! zBlrr$mEbiR+B*UoIv9%MGc3fZsrdIC&zg#^qbH33;Cpx=s9Eo{oJFJjW6`tWu;*z+ z!hg@)9yNTa0Av#|UR#Mm7FURVel?m1NV{|oCXIRdX&t;bb$+{27TR^ zuX_pYh7+odEBGap1Ug;8s~9LMjj@uqxmJ8evvyGFBIV0UC7$zM&`%{N58(IWstU$N zntMhIh3yIpNG3KUORqF~v_-NE#>5h_9U0&4Om`C|G?eux9u(P%-013|TW!|6bPpY- z5Kz$P+W9(=BJj{`5S_)WQ?^O|6TY%EZ#|hy_mnF}!I73c+%EM;}t_{ORry@o39i{`>yZ-81UEfFzao z!F1Vd0VY{eW9kssRD$Io4Zwude4p*F4Aq)xev$$iAwzWooau+s^Ijs04XPR8k zfout;@z~rdEu?A{cg=i;`X_{7YbN;f9&x4rHt9A8qVe2gSlL*pbcrStC4*tvNw2`Z z0B4D_2wk~r{ismld!!)<7a0ZaLROz&+ zJ=l5WZo$|+dc0Y!pz`Ap#wqVT2$s^Y7M~7~9_#8IDVc_jS92lSGCv{@3#9du_3CB1 z)PR_S3noC>jpaf>LBnz#W3Ty=BHs0yp5XQF)8s+yF_;Y#=aaG{)e<3uO?^nExsyE5PFm6d*UQ@fo;2_aCjF&lv+sWJ<>WmMNF4kai1JB=S$TL z>vp-{3q!xDn>@_AvF&P@W>POVQM%Lk86b7GZJUcBm0Is6OgC^Q7+sZ8}AoGFiWiRQE+sWnl)s%Auuc0vYf zlC{lDdj_kPHh}WckQ|!fx#bmEf%Fi5cvi3R@RKiyaW*x+#K9&o;f3RFQ=A~_*;x-{ zbBu3rMN!~$w9rSUrvqufH6O-iCo>Y#>V_{IJm#F^jU(-!FHHgw51wTRx{bZtz-RRw zV2%zr2aR*SrIS8XTLFH4$SOjQBgw!B4vTAj4*RIy_H^VjGOSrPV~!chzI%$tbRq_8d89$H=p7M~O}tg~PHJ|K(c2#7}$4+u0qMaC0uKRTDDCuE=&mj@rXY`R1VDY{_nZjkK}39#ov z2_*!=<*NXSiPnK?7gW_3ko6y*_6MFCNo+weM~vYvbh~Mahzx1dspKXZdFb;u`q)4fEwDaQI}zzkprs$5FLxj_KF4pxli{~Y*YR3{KW8zI73aN*SIc8H z-Dn=F>q>cpjkKMb;9|6frUN7DDPoXVwq(582y;u1;4UE=zl2y|_FuQ^36+~96%vE1 zsioamj=}7559$hWmU~CxX^)X3KJyILr<%EUfBOv9look3kUdNUf-;^cN8$RpSNRaN zp?X$2zbtXd>DiIEh*5Iri6QnFa&RGNvx7v7+3FfMAqEQP$ebe=h{VK}mUkpZy&2Q0 zaX_nv5O%(F^uSS_ZFMQ>fSSrj=7QNeN^!XL0A)Cg+#F(Lrk9QRtbAq*u;zd}9PFKy zgD&i2@^&^8A8~2elA0>O8m1>wvsZYfNojwu2kxtMOEVYnQVIBSIk|XEJi^TBgAFPw z?j|<}vS1XJX_+VQe>DNK)2pt0PK^ol#2bAY0~9&UgpmkV{Hf=Y#6W&*`^;ZRqXw-c zFu~RpX#G={qNW#MTz-~n@yv2@en^d&)<4sCo9a{U|E!@RPFzYsV6Ij;H zqF*z&gNihhFpFjzi6+NZuJKTmG*$|DpoHH`>=6jQBlsaGk_wxh?KAgr(@G3hl>xnbE_(f*1G%o-6^9UQcovLl`V z%O9xo?+V&g`WKachWhXf6;KaQOZ0`jvas7zh-8N)0?fr89q)Clx|}B)H5QgCyr5a+ zn#reic|H$3;F!7s>CwLtyrLYm!H6RZy^#SBMze~z^COujCju0saeDD=$frE%r%Os9 z_#aL^qc_tDoORYv`_VnkTcCTT%g^)`LQ_(2;L_0slqxzsb(=VPgz@)Xi_yf^%tb?N zEuKDn$GMY6V*EAMngm-i+wF?JIu(hZM=)+y6%$pp$-=>~aSfgkxv1a0yMO-6%?A+w zUp~Em_w^3`L(B>5U#+X2y+3}f9{kIjzW(}~zy1Oa0r%nVP;nAVttuMFxu**N+qJ65 ziFIxTB^@2^#vCPY(=%{toRDJPK$@e*j^r9Ja!x-ad$P?Q&$&}_Ca9rU@VrhU+=kki zu4x@Ew32WSAr&r)YmgYRA}s8nzoWPYaxC&N&S8k8=a-joVZsb6=5l_vMjk#`B&?o` z;mgI<0-oLa7s;u`#`xLLuxqf!t#6m)35P*5B)A;9Ut8k`avH{|En;V-I%se+p&p@6 zsFXJmPbEeDkYVxQWKryfKP;xI0ZFIO&10pGM&}R*G+WL*OUW^cN5aSgOTBn4|7ua| z4AK{KTS)6U$czvOpjGy00;m}rxQ%A9Jh3Pw|LaVhB@_$2wHp;0U47dEPYfzriq+H{ zVMr~QuP8Ea#>T;sd;D7HiY$ZqQ((FoPjYYse~QE1VWRuU9)UiZSxflG;++O|xwHY( z5bc>zKqy9K*k>hlr2FxwQtshXIfKAB)IX*7(Fx8Vt|S2lq+%-X_?<{djO@6~QT!*b zas$yVE3*EGc;KtA0|w;^ACvO+^#0g``-ceKY~{v^nzV6fO%Toza)G^j|MqbMv~;_3 z`|HmPnfv}Tyu9DvZE%T%V>@bo-ovreQE8e)vGIZQ3sCaG7esTC{6V1N2+|b$f&;7I zn(sC;@lEBJsSPid2`|<%9a=0=4knU(YM~y)n@rR$?B>t*vjHYeXf=WLXtGL(mmI+H zkRR+}b|pJ|jzleBXYoBu1LI0Z?8>oJ4_Fp7!ZpfnC+#FpMAhz)ylMOprxX{dRTN&_ zS~gW*VTJ8sqPP%B8VqT1h?<~;N`j#K6clc^Oco!|Gy`tcT%hJHCqcz+>|}4#&gdY} zH;Fa#&X7!NW3)&UMgE#*8+m0%M3)MHYJpj&5V%@LC7*Ggr%EQAuPrE2uObHE8bop@ zJ_vsCZ8sw}YFaa@aq$(X&HZYO#AjABbh=p)eC@(9;K$E5_wP^+ z?E8OM3Tx%oL=v-4%x%3>LAQPCcC3L&GHk79-0KX-TH8jm2zLg1@!&$*tP;x^#x{ty zDi%MGsbtYcDC(LU>`2BgB z(%c9M0DrG$YwR-jJyiUIt=ISpJO!4gnNS8BrQHbUFeJfM_7_lq|G=qk-Ub2g7#W|C z0c3muU-AirT84v<5P#lkLvFlhaxj+b$k{7am5%8wC^opx_59)tjABuT4azL-8l=X5 z4z(k1^@J$FzV*Pd{VG48gohwJWy(H zUgTcu@VZ{RNnhejwPkK98Q=<_SBJ=MzLotyAHFy|crok`_l^z*!~Xu^?VnJ`XC_&l zA9+~na&X8B{vQS9XrF zMpw|zqSlq0OnJMJ(jJo3khN|W9!CiR*b%fV`*1pzdned)RN9eYtxtx$h#VA16R3R! z^%9+vysBV?snj6#ra*7$j}VeFdQEiJXkwIfY>lSg zwM9NvZcvO!I5Wa+ib%cyrTLvMhDoU}iJ)xI*m+<%Yt;Nx0X>?$d4`PlBm9CGdHLM{ zeznulh^16In*GFY35~8%N~czI32#N@`cQCmNiJ*ww%OH1QBs%UYj^!?L2XOrj4@#a zP`9`?sjKu8N=M0M3K{1g9#K%zvbsO~@PF?9-~U`fK7D>npneUyy}wVO0YLv*t9y{^ z1Dgt}&XL3o5;6RT(=ICSp*6{C&yQjavyZ4yZdEa(M7bcrMd^zi>~|_T!@T)VFd^Gh zz&D_lK1^8{!4hZ11xQp!BO zM_S&UukJqmjNI*+W-}*9mQ?@PVvdE9O#38Mb&UOO{WIwThjy~niZ7scEsuJc6#Sp#aNqAna!BclK(qlObK;G!X2hhi-yV7 z`iU48DVT}F zT%&W4vCHur;XV*EDmQnwmACZ1I8tOUq%_@0MP(%4PhNoi!|uj3xytI|(u|z>QuC}0 z9nr7@*aKfB*~IZWp8?+O3;`LF(B9F-v4hn>5`@lHdlQ}mIej&SvI;`_)dHEi*F9%l znc1ReT&$8@VE4Ejn*7H|Zv31WSu}`khuWY5E-9;*@l>l!4r#lyTKOI~yTuM|qaz(q z*ZrqraL2Rbuy9bfS@7$Ki3hVdJqbU2xeZ^LorCgUZ%KPWLi3?b4WH&Dt7MHfogBCQl4eaO}XkaLe?n27Wr#=GKj{ zEAN2;Hd7c-Awq^mcQ+qC{rGf>nX(U$PI!*&6=cRNJk%GBAO(QKVXR#5f%Qq>!iSFe z(RJ#;bnC3efp^DnXVnF=!{sy&dxzOjY$>IruI9n)fJyh`N42wy9!tg8G0Y*fV?|-% zoo|M_he>~Jixt_Cc}TFth~kbU;o9OS>S~g50#oBD?VRZ~p6iaEA%&=2q=t8Jy72fi)%}3kk1Vdgh(<3L(I?= z7I%EriO&ror6iF%SQ(L`AlQC?5SC$|AeEERMm{J{S~2ZypnYLP@WObcY0}a1t#W>T zwJ4-l%3D}nX^01~Q4Y(jTKqVs^g$5cXt0k_yuW+@@RMSEm5a7&eul6tbC}Zfrz_)( zq22-=Xz2z*xn(fTDGryUE@EyRsPx;9RI`Z|1ogpLgsF!tG)xn)Bv>ObtV|W=bc;;) zpJ8<1$)io8diEduj`A_OOTEm>=xMaS>{d=ZO&xmcmY2pbdw;P}@Z&d^$2kAosgb+B zS6+x3nQPtvzbp}L4=m7&4{rM6}ZV^`OyV?<#M3w?7=i$le@`&3A zPM-t(4vZhp1VrM^F8VIRG7*m65uuLiP?X?(WWr@ZJ;6b+CiT@~?E`E;*NRXZL-mHE zR^(|0lRnKl3Wn^U0*GbrW061We&pAx1?PypuSnW z>XRtD6Qw7YTiX+E#B40lgOuZ!f~JF^Ryx^D#$ea z^WN^@XfWJ6I2a!74~~uwU}HK$4HxYY-^)mpWaemd5eHK-Ia~S{lDydasa&O?D7}(} zO?3gDu{^*ta`vT(yZ9}{ZZ)-ro|-us2zdSzNK;RRGK1q0+_rWzB3wXL7utTMV&At{v`))BxIMfVSguafPbNi}lrV zinz@+kBgV5Ggad;rk0xq6OUZ{a>FS2yx**eRyb}r{iWUrj2&wX`;z+ziN6Ysse9vT--idB_n+xHP;7j|K{y;5Laf96u9t$f&lXe-*mrzhH}2 z$BbN@8SH@jVZiRu0faN%Kq+3KSD@758h)}tQHB!Pu2l7z?jRj)rMlywjFZWFi_nH> zQcSf1O33uRw>K;U1oy1@FSqxTdsYPEs~!6Ofyr7D$V^%C4}w2~4cGh?DQ<%$!IGMA zt>0P{&ac%wJU_p*Xy0- z?T^TY^ZfYc;dTVC|J#QL?X~Lq55456O(g-RS{_ns`9#>jMZtn;>ZU%nUFkym?%I0;dYJxPlR8W}fG#lOKx&#UZ9V|~X(@Ze0aQ5hc z?oJ?$BJDi{H6SAqIH*_h6Dahyl@vQbX`l`%HZ>cos>=5L&0quLQxX6S*`uTCe60azP_2#%;ciC9Z|UevfN}UAOx*N9_OiVbJz)lW_kB9=Y_8(=L+gG zW)UTy>B6nMglbe;?Z}=Mx^Q{s;dxzK;h@*qs@ZW$KZZG&RE+*9(3|Q?aN-b3%Ain% zq|8%A-}=E)+70_@&qGx13~na!=P^qIbQ7oftM~cUe5x3|^%SK*1BFe`X8lka^an_? z43uPA18pN|@cCxqJK+A2yXl%`>E^@VZ~pOsNK%>$z;M|Q*s59y6RMudnqUeojP~-x ztp)T3D|WeO6$E3_OhuzAL*Q1naJc!q2AVw1D7B|RuvA*=ev|y!|bcUy`&%%OVnJS9Abk;2i=&|B5pghS~rGG>D$Wx zFo8lQ;Up17hp499kLKuN*lFWf0uIT`Foo% zf3uVt@OkbqOKFYqpEVl@?Wb+VwrW=>Z?cb3xug!>-@_k33!`Wj+iYeWPA8o0!a;uAL; z3r%_ZKR&;|zuny5zWsdv0NH1U&2+4~zh%w1Thv)c!{(;DA0C4Y+tX`h)PpSEI*c7q zU*RU#OGXZ?=>JRHn>M$RUD=}gDR|X!9h9wd5CA9jP!13Si7E~#02E981wlzvm7+D& zr6^mz?(X0I)>?b-Gh`+xmD~5d3Y$WneKPap8TLGwvl=Nki4Ac`$`d#gKbJ3kt9n); zPkA5wlP$ba0eFKrG_5_B3jAma{S{*jxs2O_bng`W4_$4KU?>rS0v$vAUE1k>1@;awn5QL5DucmZQPT$JtVpgV2P4wOpDmRT%QEnJ#H z(pCw&sIM;A+fL_BJ_q#)AISgw&^-^Of7Yx}!k*8n!djV?IXTNopH5h@Y-1?_H;}GT zZiOi0)$Q#|E)#_tE+7sW3f5#1q(dKP{*;wIu5huGdkCb&WcFv>!(Mfz{Rj*Fk3U9o z*dwT)$>iC(`>K1B7LE3N1V1zwr%xYmU*S~+`c!5s+yUhX@n=*)SY2OYEvu(DKzfUZ z-WN{#h!|ApM; zP>a+!TQK$BY~J4@wC*qPj^Etd!Ln_#XZTTCnY~2mUFKKDmA$6Q!!oYK?%wLgD;P6QD^#H& zs`TR6Kpn}aa0dW57NnP6eyyLJV{j-qxlGftuJV%SR*gX7S>Y~{B-Ao^x`OMrY>60M z!VO@7qI)xNP^kX6#AwbIo3qR7!Z@+LlV-V)5s}ox6%E@WTp8dhKHfA0UJk}D^f-Rv z>iqI@eJWqf>_6$ZLD%u);IJkmHOLpI4BsJnhDetZtg%MDrw<7K^!)*)^!=d@Zo$!K ztP2d*|9cM>?{#ISpRD4!N>N*#*u;l5dNtl3-6VDd1IYClVRMPpHybs@+;e7!8ISvQ zrjZ7yvCmC}Y+5O*?JifgitM;6BJXuOkbRW#+1z&F5ex&Z`3BSbL)84uYp8juW@zT^ z#^~CA-1}SkK#2ax-V;p0zx-DZ8kYI&IfR*$FS!{%Q4nhy0=NN>N)?aE!%iaB4D}PM z0=j6<{xyoMVVccEeI!V_7+K%d*+n<6#_uW3jmB%#U&896pzk$QV&af2I<82!(%*gI zO0r>*Zw1oiDIiHr0b|9F1us`?>Kv$di*uv{HPh`th&5Ky8;qBn%eR3xQ^O}re?i>n zDH8r*t`2eS>V`1vx0GPqi{v-P{rOC~ytptt0X_(}C~`@V{L zjT=f0K7vU4mC(d$u2KfOEZ}Lkls>Ug4$Ckw!mO!iTMyCh$>0rju#|R`3-MbsnizN# z5OOBOqn!4#egPqfZf11yoU{vq*j!iw2$M&U1t=US%m;jns}OuApxT=Z7+LfB&F$M) z%&7F~R+f^8B}euoYx^Avc%w`2pZ=-Gp+D|@_g&GVL8Nh=Um+M`yHX^B8|z3y1Rjc& z4?u|&RN_r8Xk{cN|FRbFceX1r{{V%sMO&6OYoqyZC7!aa;^okBoNzye0rZ4Tvh6j| z>#@*Q3a6J=4;sQ5VoGphNDDfSO8KKrY_6 zRYcRk0Cdr?H$7VnoKfwD&o2jg3eTa_YE0qkl+kkV2hbdXtZEHy5}}fuKEn=#GPI7$ z`*{0jMCI{wp)o^(CKMejj8Qt=@OL)=Q->E3!ELE91q%!NG~7v=DwY;lH^~4i-;(JC z<+IZFVbVM^)iJ-%!j8tL z9mQdRL|r#(BU8#1ZT6IP$a8^~Hh}`B5%@dEyBxmgRag8Dj)5tJn4DPgP@Y4GX`n*? znN#wY?f^O|5Fft>N+62X+k{A%?|XH%YDv8fpbanc14sx<4DB*Avf6NX;O)g&Qy1aH zW4d0_^am~K|CLa^J@;3Mr;EkF81}cc|9zo-S_rox727GPJXkp-3`_+si}S{#7n>0G zKu2_q4A)l|mOV24z!W1hgbtiDd_y6Y!V6`nL>#n2&fb3d_{;M1?9J;Ba(qD>++vDW zpl7u0x6~sAYU_l@K4<#c{n9H3^~Fr_q{w|wB_ri-*`R$uMu_PQDUSADzx{A?FFsC$ z3MREuW91VQmh(j08r{-nA%oGoB{2W0ZLkwwR)C!~r8-;VnHB@Dt{<~^e^>;xED6BGE)u5`%G?@MS zlfsj2P`J4v*vk@WWt7R#Y5T@xq-+4~6GX)k z6v~p&|Z&DYrDfs%^c1K^*dH4xQ5 zE)hZRKapsv_57#My_wyk;y4Q|Ks9OwlTJ>Eo%QJ$Xac8{l9>!l#iZn+BaMmyks%dvF+y9zvdE#K=Sw|83K2H@j%~V%_Ua z(c7_Wdgn&?&78kNnzyaxVuCT(g$Jkef8@g>dkYL23sfUE%tD7QU{%aNb2noyVAI~& z{Cbb7Y>o0^TmZ-b)P?PicRAS2YfH4+B#O$T}p6UP=KejBI*t}vmsj&N^> z{h4rV4pMKPS2#&vMTgw~MbQ*%RVVGLLY41@pXKdZ=dA4?AQ5iAf24;=mNS8! zuK~SP{H!KGp2=uoogyYo`gIU3L?WkcF8NaYCo%Mu|ooBhjm&VLdAUVfcMS68^46T$rn=JH7 z3|bkjNmw8UR&GGV8c0})=0oR5KdpSo1+%Z){km0$U^K+@Ki=pu~!KqZ;i?5;c z#={Rrhs%{79Rp!z$|?bl4?#Vpc2WvQW@0?QeK)zezZtznJ)3tZ2Fm5ixdhDfyx z&op7KjD;=+HAG^Y8U^DXC;KeAE8I53Pi^*gvrdHuD&wzQ1g&lf+^^x*^N`Ha2`{yA zN$Cc*v}9U@SQ-IB=%RTLtnjBw=+CtUZMber=r84f4l$;H_(a1MdN?@ifBu|U7(|f6 zp^c0=0zBc)2_IM3box~gsK39nlRr2(BGbdz`6vGb4F{9r%DM5|?-q#wWdvb&fIp1I zlTC{!?U29H;?>QD(r_qqzI&)lzdk$5)53cJA?u|qh%bVx1hJlBdRNR2_F%Cb?7L1W zrP$P7*`~Fl9kMi4>l;gt=*rB2&0E4Wv*3I{Mh4uFn2YKv?_b&trZBym)xw>EsOz1d zdomn97dD4jNB(fS%)I&4hxP}gXnUEU842*b8VF9`{CG9T(q4?1V}|wyZcN5E=)}1D zL%}I@fwLs8N{o`p`AdW%U71o@Jt$e)=ab?ACp6GX4b$9FXFOkv*Es+1>NakmwLYTb zV2?q1sJ`r7{GqGZTS?D0@VPKMHRj9oc8dwp^GmXyjb_KQ@obVnkXWGfqid*k6V6$*vg zm0_khn!>B(m+`~Ctj{C|I?T51au7nnvIR)vd)OV~bbgX5i3b|{iaYe=I34t%^wB8? zPvzaI2o@!*-{ReA+ZiDY$?)ECX5ofzchHt5Ust7<)rM}h+KPikq?7#hRnFMv${4Or z0_o%A(FZyB>L)15o3Vrqpl%2QI(8U}!8gpkR~qbeaVVvg{55b>Z->YL2fa)pwe#)n zANS9e_P0%48~LzQSR0tyZdcZm}BSr^^h zwdgqle=V>V7K1lFJ*X7Y2QM^}kj`gQR%Y|1+I<9r?*g(nY@ofJZ)F_TrNYU-Wzhvk zXY^#7{L&`+7a&1qyig6uKclaesAGyjUOpAg&w2MgLT5#hbq+JK4DYffj;7n<2 z;?qy#=`-YZa~Hm(;Y#Ugr>TSXgUgCK49L3xY)#rQqqhLr-%GyJZLA$!GoVGU2Fq*y z(Z;>TbCg%ThmOgqLjj>$bIzjPjz@A3X0b0WV6{yhN3KK9T}$ZkgV6DV(8+_)>4VVO zgHRMClp3si%%|a>iL=kTqb)6IMA``Ei>IQ`#7S)qxd{pb2y|vFq8GZpLMiwEg9h-x zrzA!bn#aQ}?WQqADb)`zH#Zb)tR}+E{r%mW7oYBLHyfJg3pg4+vs6n5{d4J^`W2WX zTFC8G$n6x#DYfY&wle5FZ9yp7peQ^3RPc<@^fc3Th_X-v;N?(~=?WOQ>C9Qfw8Rwe z3Xw6Q?-Rd?2NP-9*}++D7~hcI)zA(wpK@vgrR{z`d>!g|+S~e-C_;8#8VUk51dWP0 zJ;f2%$w-=CN0uPxKE>_eFEBg_{|h+EFmyZkIeE%>gYY%D+08r!cX(`BzE&T(vA{Wd zg5oBd9<*^1F=gMfs3r!W2MvetDMtUKgE};u1iX22@?*gUIX zHd2aky2#x*@4zKUAWaA;4LH~xa*IV>O18@61O)%5g-_MqvbVz#H=kXKB!whOCv~HY?!z5}SXz$)zOS+vHSs(#&fG(H+>uIe$i@FGfp* zt}xiheIyrktMB5Ii>omzg>BBTCXi>&7f6V7jID$0v{8zY3=+NxG8IHU33=(tf&hLL zJIjg!`Xs*mta6bnn)Q`pxzLTdZ_!|9Q%4rQ67Zn#sDiX-Dv+Ka?Fq(%DD7p-$k+ht zhJ=`)J1qGY*C1*lz2NH5sJqu&9d_$YDqN+9H`OMFw7|$Ms6Vm@jW%`cfYvm^!e0lQ z1>7gyEz2a{;9E!IA6)Y8!xvOlUBuHyAY{r-=?9SaWtgqU#rM!-qLSeW@cKgMW?nUs zX3rs5!Ic3ex4WDaqEUpCT}jLq%h3ro`Em+-Bh#8;mM`FKX0-stmf^c5HkCqZfiN>n zN?vu_ZZ@R$$ZAP?fBN0D>vg@7Wm}N<{6cW5Bw0V`@8$#7oJ(=E#q2JP@g! zk1dovLH$Z!TSiHCrs72=UP|B0zyz6OVsthwHs%F{OCp9-k&apywQoiEuAWX(>D*I= zQ9RNbN{XrWZ_%vzwhu4t-3MMy%0Itt5I=CwEYjT79*8*>mIvDuRSV=z5IKgd3`<#) z-N>Fy0oN#qzNz#;q#|UepdzkYsDVD}SGPB>1{h<54SW9q5r3cV-h+{M6Bb;GV2?jv z43i&U5i8FUXaUuOG5N6}$D4Nf)(rDuU~I!}nOIve8QOp#nE-?cv6-o0IW${4v~1(? zB!!~*Vdh4p0!|=*z2`>XX6x$$7px`pltPBYX~tPT1!pN4^a@VZxDsKa?r$9Br0~*t@_rGwB<~7q-n#7RBV0 zfQ#6bJh(<=Iw5$D*#|O`pC5<_3Kk~d+@KVL0m=4Kn{kF<(y)e+HuESvyIjr8&)qNd zaUvI4lMa5^9iI#hwZK|eGMKROkPvLl{g#%zK$r<+eaZc%G`md>OenE{>K0_DTr=S( zoMpSkxGpf!(l%v4FxzlEk{i_0l&86d79<&ZiOPi0S`1aUC|x)$xNo3ibk#STjQ zis(jELC_nWbv;Im6I?y!7aBnW`GauC^I?91lEVs-??D;V4263}pV)EI>h7Bojk-O_ zOX)|Pi{$1>J~lzq4~;HUlGvk;cM5X&alw&$gCZY=;5osKd_lJuqpcwoN0OHb<4z}#-HZV|~{PG~$z5Ve1XZwTT zOtX++jK~WE?=4|D7c}ZJi)l5R8z)@ z6Xfn*hLp|(xr0<+mO}~$WQwJP1?F-D!m7)$5(s%13g;=^=XTqDh-M#He{`5 zSP8L&{##okXcaTg4imA`mEe{U%?^+yZZlEezm}T=Ljs$><3n07s;U{N zagNAe2x&UfAKtzD@V-zzxve4@Ge*EDbd|Q|xiHr|%y|e?= z9xSKYY@EK9>W4(b0rr)~(&!wUOAjU6lBLN<9GcM)7{Vg3y4ZhBkcsTn55dO5zbUC* z84F#(H6Z(*#WN(xrAq57k_|uD69<629KP~lV_mxgj{-t5VXH$trpw2^&nk$I+AJa; zHy>e-x_!0t$3Om&ZlIRkBntGp)x^381_}hl&uDqFl3)acOCO^7cyPI@J;F_%mWNxXOJX9_>$}C93p{wXy z53!KD#tqDI5@B~;AQ?u!_EGcgj{@j7JPPP!+oJ^fO^@38f$(MdO{0Q1w{27ekrGZ) zLXd-@1y^AUF})0mU@tpjLo2BE(rON^k{2Czb0}PV!6xAhE?^WQTl~}Go~)v^Z{yw( zJwf(&p*)6SI8%59h1yXvxym@2xJ7Phg363KNJy6Gof8cr=xot)_iWAvoQj{fbK+X7z6{GuLl0>o-5+n5q>sujeAo6lF2wy}MSH05yi0F4^s1oPqKjmORqHxK(YV zGv*eaK7)E7TkmX_3qUTWeg_SBU-4j*U$D!-L3KR70(ZY8e`!;W>H2h<#*OD%123$X z138^ymbqXQwHUI#{AmWX4qw6rtW$0aAr6+HrgL4y+El)aaqbJa7T2`{aEaOy7(vrb z18R$&Vmy)t*^ipGL;=-%xD8Ajid-2=tfM_doTsDdxG=UBntf#3)W{Y!Zn$^F47lNd zj{}9seh?7&fGI0fC9=o?SCf;qQ*0OrvY@yS4l)HR5|Eh>=}pkj%4fv6XoALhs_YKJH{_$&oI;&M*f1eNp@cnX26 zX?^|;6}E`FqDA8D#Hgvx{&YcoF%o4?&*HVYp}BWJO58@ir%&(NR)VzDT5U6tlAAS> zcI`?YKvij}E+h}g{K)yY3|EkCEqPGBYz{Jw5ys)J0U|Py94yhZ1(=<#HdkkKo`#Iy zQjBfyd4UF*EXmu5nSr zpW5=m{a^^2)7J-^3=yNn{lH33v&1tXEwN#y0;F9cgn$vz5DHik1Cv_ph{)6dYCRo; zOGPSBWpt2p@c8+7jfgsK`lnZthE)P$Iz`E_b7W{(+x?j!D1$(^~gE|m>&&# zDIH;l`mi(*5cQRY4myF8gG450c!d*%4ewrUFf8OgvP<}3=(0GcaG>Ic6%3V$$~?n_ zX?8N(D|Xf}LiWi^to&E-;9tYs=jZ=lV(jY|y>Wki{9s<4WR@su077#20*XZiv zi%utX7y0y=NC~YIst-{6B!(DitKsg~337P>5>l$njeb9DP+{vcq9wc6<#`MtGEKG@q^1bWJ{ek<18QY2dgISOy@pT@P>>8deU75|ImRuV)zXbKi zDMtB}KICR094bvTZnGendxV>ljKjw0G`AOHn#bUBh)@iO(NG(7Id>MZ8DQ{mW3Wci zTdFCv51nOewg;=#Y~P-NiU*L{uwUPNyaxul-@LkgjhZa4M^=Jd z9>q7?R0kCIXz>#EZ;!kaZn_3f_}Q!(Bo;owG(~tdI82~S7M0rScVa-@ zpe+E+&>3Ej)r6Lhd!lI2F4LP9K;KJ5L)St^1=1r87a)qs9V;6*w7|N_IUi!GNJ}RA zr0SFC0ZkMw8XO(^C~>D9q40B+CZ4)}50mJ7K)=UH^cm6r`orD3oBIu_tL(gf$095A zLuhzo=RWYRi*DSl_GZhDfoWFZntCcayXfoc6mr^nB8AkESh+wN;nNyeX?ZA%czr- ze9e9Prt9faIVmpI^isT@PhfP~^bQao?)f^$d;gy^MWh{xz+o-u@t&`%`%Kap@ zZLZ`2_KoM*8OFh3F1-id5ff}1mm22r>C+d+O%8GuSOOpkL1v@D$ggytq3rhXaQ=e; zU$yxqrEQVcZZ&fEr(ruCJYG?v(*`fi2ga0(r-YOeb;%pjORE)3j&9tpk zY$!!i;?9s`MZ6!hfGZfuVjj)Pw2FyuF4 zFpGeJw?n<=>YHGCIHN|z(O49O=19912Oeyac%}Y@+c=0z%q?=eXE2Xf1Nz7_Ojp&% zQ(IIYM^H9W777WOJXc_!21M+JsQvn0W!TkH@K6PJs4V17~`i+X%=KECoz(0Wy0ffHp`11?&zejZK@{D*iT;X(bYdE%mz zuuaD2utLbWXS_rm`)1qShhIf)mG}JoLONDU<7P^vIQvHf7FIYKMr8$NY2Z6dL=H1y zeHLq&HcYHF?B%Q~U&bCaK)%0#6j!JK(S2sxKrGvp=ifn?I8vkZc6E}#P-F!q^UdNs zLC;Lag}jEhK(W?cba4Ior`NZ4t2h7W*7pT(B)?GB>%z|X4aylxFiANhaYoPkf_CPi zyB<={h$DzZ4Y7vM*lP{XpuYZ=N*uD7(+l^aXhc6 zTd7yM0rYj_KBMqK6sE{xau{RQ@t9v+A-RF1k!?UzdjJ)jttfRA^hW+xel!)i&9iul zNVhZis39pMk)%ZE;B*{@Cm_mrg4 z1Gsrq5T%FH60+VdWj*tzf{8D*Ivy|%{W`+HvB3=eD=xe)8pO>jFi}}8WUeH^iUc{r1mNDlpfkdGrdS5D7841PPmAThJOua@^-Vh`T14{ zt^xRRqjQvY?_!K97XL;5f5!t*MnN!5p$~X-x{egLC~cs zt`gDD+CSL<=)*8S%+jt@j>1nwF$%Y60Uhl5iC_TJc#I;XGozb_R4j;_rq~Fys^8)1 z3x2BE^gH9z*;`_jmF4`ryZZ^u7PzgB8~!^z-|wLKuRF53&87>}z#p8F!oMMwvF@Wq zVra#jk<64UPAr~ObLU3O&>`XgH*5b`lV)FO1rTSoqLrC?7t0FuTK|O!3%tyakVA}0 zxec6n0R}AxX+%}MkSQu#St(!|_<5ar}mBXZahf70@3c12iKbUIhjzz&>%(NVIkFd zVQrmrqh+EgK>T3NI4705*PrkB+u$l26xf528l6D}z$^ySXB2Eu@`tzBTalRY=%PwE z3wDUS0zbY9GNu{F(mCe9Ja`}D!)=I$PwP0h&yNv1j0d9Z2Ss=6n!*!`FY@?Fa;QkO zSje-H<;Pa-k_Z{?VwxSi@C+y`%Q2aK1-7><^z(t$I|94FTGhGm6J`&#QpA4 zFDGC3<=iEWxPLH9m_PKv>3zT~-`yb(q4pQ?&C9n_(#{E%kxZmq>L^4-(#}MKlsux1 z#i@o+;vg@~;}cF zkX5OJwxnN)1+z<`L{10OeSj{2y-kT#8p(YEs+U<-*wGSu0^WzSIXnOl54HK|4+$p6 zf)e6FuSrZpQ*%OjA?4PRz>uzVBhQP9YMif{9=R1rBO_|W17|lM@0lQafnrvsXxMR) zq5*vJ^4%+Q(Bi)!^@a%^|4DozI>U={`u+yKN#!HAJnZp57k5qGeEizmg12{VOX;n* z50*&^q2Hj~K>)OrJH+TIfCh3>Y~-ZBZNhzRF{>ROOEqrn=uq?W<~@+?vaT}jkn482 zSvdnBo2lAK8y|N-gV)&uR|9*Y_OTVhh8l~qCe7=}D>%PE#ZLSoxz{F*B+1m6$D|Zy zjSB383zBPoU=>=bm|8OL9WEBS%`}T#mCT(0MaaVFCpP6!CR1=6UTx55e{%fByLpnn zWYr4xr-<$ge#p4i94^9?s|bqSeEN0g^OL{Q`26D2o45CG-k0sYzha3}F(GImx{3*X z_;fGwb^xNnqgnWB;PSwu*;y6}4?yV;xx=U+<%*J|a|e^&mwI3>&ep(Mq>pVIQ4>VO z8}W(LO^0DQ1GU(kUb*=LQ8f`x4fDMLu~tHg^Ws0zO0xL&=;{L#J@k+5vE?_5TgHnSt2s+WL=3NXuCLFvk(YZfE8{5UTh@7 zBaD*l*0d%r^?jUG+h5c%z@Uh0?Y&b_Ej5Yet#GLPdwCnj&WUG?AM+hHI1QiRHIM%GB(v7hk0uC${H z85K@<2oWh#)ZZb}?L`6L2b28E8+u<;!9Y(S zADZ1m=wSN0M@b0-9Sm7Sl0JAvoUToe9HCUHRbOHbO-htLMWv9Ydv6QupD$a`(H0h- z;!*{(&r3>*rxhorPcLA4gU)m1@Frcje?uFZZ?ZIRbgL7)hq>T?v~J{-&%ON9H{1K$ z+gGfs`s&T=*C=np-N{Vt(DOEDqyp)+pmf-Hipg|;nsD|nAnHl<;&wOb7WdAP;k@81 z``|2aPs;SzPI{X_`GbpDVhvfMensEWh>oIhM>rDr3D@n@Wv`=6696Pc#*VS5FsaX3 zDS+y?UfoV3yV^5>oI_9`52M#64^=dlm55L;o6|o)ULDUMyIGtf7utM5A*0cXMw}B; zIc^LZpE2W50^Kif|F`(Ry2-dz)0_>05u*({(zQRO|)M8vc(3utiMTFnvsycT&|O2TY^VCj2_U$k*&iDyEd+nkvJHTq!7}hevQM z8a}nt<9SdqAZ(GbzNlD=%`Mp8~j42_N5K9J?0S)?l>7&dLp?)RX4f*;i{RDtcKa9c1{l@2ir_a z1~Ptj=|dbZpToTp18i}<4M?e>VWs#|M-!Ff9}$-@&o|tO_cyaQ@85j%+G3(MNH`_Zrd3*kc$Chpjo94v5kr8VMWD}Q3R~D@1YcCN6E}5!UJXD`+LX7O zQCdKWH}HXn0>)Fe<5!#@=O@UUx4LL)FfilYri;}a`&*{zzB6o^62r5`S7+wE0_jO4 zba>Ph^&ODI585B*YpO`yE)0>962RL-3PS}H)L?8jXge6OM|~ygB{{jkWu}Ia|5HIL zXy&vc9@Hy#d4_d^#h#F?e2*`IKA}{U1rc(PzOKoB^!H52C@Had!omY01h~?XqGyBV z=XSzNqUL%-60d?u>^l$D;8Dpx0_3X+U&i&$pUIL^EezJ7_va69Z|>i`z3uIM^Wr~# zz3+YVPX@Mq1FbXjSpW^eC(vjn5gyT!$A9g$*r5i{-^?Q?B_aacpj=}X39=LICcT*D z(x`YdnSA`i-jQ}fqxlT&I`4GtfrNUD1l2XcBe5!g8VhL{rWrUMCl1*sQNQZqguW-{ zDiO7!(iJ2s?{7`JDI?3)E~p~qwdJ;U2??usZSzGDNBlsS2q}J`OGFnx(B(k>(Wd_G z4xFIy5bP6D8e`2dmC*m8*;D~=peEmxgK~3&j%?oE*s@8}W5~Rr;=zV16+GO3yoY`R zJ&%aT);&e4mh1>#9G?b+EL*k*&^&HwQWGDRf!ZA|d2>TujIN<2YkHz~bkL2)7ll_L zJg|SPuto=1xAC;V-cB{qiNwUX(6rGYk2|T+Jk~BO8$b-0c7hy-(g2rf`aiw@2on$@ z#hI^PW!k8G2FippvDMPt`F401EE)GVQ5ftbiNwMR_SKHYDhT3!#<@5Mvf`k&+DBB5uAnO>w@&zGZL= zd3o4kd_OZFzy%_d*`A~_+aV=Yje3(KVB|&k5kyF2q9LU_NQ*79xPWW~?z>lB=vmw% z49~G3G;Y*TllW%MaNBVt+hG@^wr4>VsGZCqk0vMyQ8&FNoNZzY$=Yl=^MgA~8Pn`W zsR{7l$Zb{o1jF-UNOu;Mv#gA!#R+T!yW|7NK27)EJR^hVsjEQx`dB~2Oi!rHMq_WM z46NZ+u2jjz5V_eQN;Z2WWC6#dM#fx>5aLBkko?_AB=eBHwk3@L zhArtqSKJ`E&|s1-lzaZ+(vE?Qu~MZPq-fUoGTNmf43saQ?;7ip%okW!R3Eq0NS84Z z!(!H2ym)s9eKcd%5$Ui{8vA;s4t;7Bshs}HHafj-_Prq~q{yUWHu+H!d zatWO&=2QZ!5TL1~G;b*?yG+gjQdhqfiu+#vsUuE@(K9@C^ztPfvh9tb@2)|55U~r7 zE4C81cxkO{fKqo)a5A(+yrFh-G-Y~E`yA{XVoh+`#}KXRZznw{fVu&)3yVcxT_9IE zvm(*=f*4EQ>Lk&VzS}8;dqOFekt;Eh#sSS9O~{MEQMGrQFuj%Ju`>K}g}i=24O4eJ zUO=GqNy4eDKdTAVEqtvu1ODvUfFj3K4N`B;3?(r0XrzH-hMXBW{aXvbAtWs|7#|jh z$CJDe&g|H-NoRZIRcb0MmRt_^*yKJar4cPv0kctNws#aoTZob(b(gGQLN&6lay+aJ zt`)FsIazb$xUYigCBkp+>HuSOzJzXRpGJ&Aw~461K7dLLw$n9 zeyC6I*bnsyCi|g2!DTh%`@nIwgQ<0 z$uOrW)+{rDkC7zqrdU3b%d$XGj5SASLZs1m1F z_)}%h4@@o{gZ+F-T_F%yBFRkgT5h~s!5ZMx123j6Oc8CONAfw z4z$(t#VJ}N3Tww5gDe`3-GAR>uG2sCcH#*M{{pnfyhTi<=zeYpk)jd1$g$V~s4SY& z{uJzm)V&xe?VI2y=`pEonB6YY%=po3fpt?7hY)+;#~`vi|Q6>E_)I z`hm#;wCDu^GJDG|=ih!OaeaVT>-;42`LEtzet{Be2i9}PAmU&(U}&x+I#X1lG9eoE z359lG2H99FJggNpzYnvjC#i|<&`uw3=z(Q{0Cjf(wKyWquona_{eu=v5q3n(8|+Ktl-$I#c~>w!!}zp5BvZNQaFz@5qdH=MsB19P zEI5MIF**0Bda|u1pRBv!+#-n>%?H0IJvd&Yqr+7J8Z^ z+{Ya^0n#JLlF%tmsjC`}p$HQZ$8rqO z$?g37Xlzl)Q%fMcE%7id82VeL(}HQ}W$fL8p+7zhK`Y;&R`C+vZ#y_=#ZJH#Pdt$| z5aN0V70~)m@CP(-v$_3ze+va7a=joq+23*wEa;G@t0(Bd-caf3E}&mCCG33j>Eq3P z?|HV)h{y+EzWmdlVx4UnMtZ^fgGk-J3m0t6t_l-gLtj9e)1)YG)4Tpo43vYgz zlsjUrN%@s%IYIuEikt(X!HR(sFhW5psN=jQRcyV!Z9S7$sUk!N(dAZk(yoq7a&|ZEZk?rf;TKfd{G5xQz`oL%Nx6WqbqT+=Lt`R?be?g=Ul}DYDEVlmHIn z)ogWu^|3sYA;AyYj#?R%dNVr8R1k?RYeYu{RJYhMjbOlJ{le5)kPsmhk!G0d)uz;K~=X znNOG%7d!tMe$vuP6C%FJ@Q}=dvh^T?H1srD@r;5uaX@Ves4Ne-YC*2#p1;er6qEbpy*tzuc zS1^%*Y+5lPCJ`!Ib2*mj^}J`{t*Fg{3mpz&Inb_1p=tO*x;BD>y9JrWPH+-h+V`FN zHMqWL4cU10`~tduxZSJz&FTE)v{yEd=&tIUyuw3$FI8qa0&p_R%C|K;#L;zk@Ht`! zvaWEj`v+Q|kd*;6<+oX%?4F0LPe`3P{Rv2Q^88|S4p$r`w!R!g6KbpNpE?Lld$k`M z3U_G`OO?B;6c=;p5X*2bZX}VE3iYH~X+^pO^F4_M=+^RWYUCw|?VlXw7@cBUjn(jI z5^MXY)Jb~idB`d(=Kvy_Kb%Vl|Kc(`W81#FEjgoZ<_u&bZxA-j=6KJQrgBUJ>p~F{ zapRTq2i&?i9BehSQM8mU4G8)&g|>oTlS6Tj)-BFAmr{z0ziUg{VN02pBzNLz4{pha z?s;fS7RZuuOIxsI3TXlYfKti@7sS;Rnj(HXQV>9q)HICs@}zWk@X3sP?j*d<8 z1kQr^4=rBK`s>%iYbMv8KKM@Vj*cFtF(IF0+|JVK5|LDGDRFG>uyTo~EWlfL_(v*f z`+-A45aKhCRHEmO92E$%^!N(ZT*yK~NIZsN8-b??e{^>h6{zWL2la!*5@$!wr0m%# zDyWSf!UlYJa76np`w!WefC-}uKTxp-N@Y@!YuRK9#zL%rDm*v1aX{lhPDf3qvI6PR zTmsEkOtpJBab{AJFDO3U$U&PBG(oaCAXhp(trR?}kEh1Km;=NrMtWzP7Na+)E&KlU z+c*Dl>zR|EynciD!#_idboW5AWyms{jc(m+p7bm=GyW}Z#fs`X3%9MO)q!e5H95@R zWECPMCFIL=0x+SjhRPlsAks9GaHE(b5&~uB3Y?8_j3O@M|6-6vm@eY25d`woH-EDo zF)HTX)B^NH5Kb%5Da-WN7jZ56xfD$EpoVxPKklw(F-UkF@1O=hnJoK)!CTClMG?F6zPWdsw z%v_*O-I^sWI4-2su~E?$0Fj$2;-Ha^HeGSw(czI!Yy=3qLPSMXwJQ`v07w0mu!+@c zqI6e%x%aIdQ9q>;ZF|?L9}d|2%#A-P26Dtg+*CDEUu-do7`mY2vNo`0?YT{ z=EcibTpA1+6-&2iG&-R6^`1x7@ReWa18oX`T~OTQ!eW4nM5;VJ+9fo8GN`OqT{$Ys zj@d;rYkn{!dQY!*^g@R=H*AiM+muCLk2nhY$FycXWkuLF^C>5SWP-B36Y`OEhKg#h8q#n7il$qI*GE-DEI{=4o>_jIis9{NUhb(Oo8&7<%=^jCuho>Q&rihMV zO1g{^Br<)0{{$}B!g%xUngJC-8jr@O$$hHdTKX@oye~Yk3eK{^J-Wh19He;#2g_6l zSL+#4&dAHcX8ICw>F;R^WiF6jN1K*Xb7d(wmm8=?u@p+8Y5^E<@LNr=`!Vm&=!N;MNb{!8}bu(hK;TqwZ6e!v~mhV)Ykzm4hK_k)VGpirdp?^`Q{KTnVRSp0-#ZG^a^t~o1=(i{7OmK;ZQvtD zivtrezw7D7ve!{QA}c552T`BSiawd!$gFe7GXN)##2`^yzy>WMCk7nWbcymM{)nNE^>tJhF3RuuJ^+2)0hsni8F4f@qnR zTG|PGQ3*-Q4Z~5DF`HTp99;ZUnscPvFoRB_=JbJsGf%AxY(o7Ia@S^EQD~i^=(2G_ zaN;M0VkxEBjE3K=X|l)0Oo!flo64!Pcgvel3z}8?N__Tca&v!Eq}1lVK{*0N_f6jX z`3;R+zAptrY>H&D5XDSXppD`gr>7_JAYE#cl}5#2Tj)r>xV?Mx>o4>7FNN9B>$pgg z^K|`Cj-01CMUF5Q&H>LK7CD9CG-{4(_iV-Qc7LgC^y9o=qIhE!o8=yyV{A63^A&;U z!5}l65vMXv=Uy&0?V3Dt?kyHN8Dh4fS3SRE_h=%GjlpOO#14X&ku3{30W+RsKZRpd z9sE`hfA?=;1unxc_yD45k`dkK2WaR%2o+4n2ZAc1iC_+oAdP&jV+^TwXwsIPA!u>6 zNQ+88TnxDrZqiN)j%$TFQDQEj8kzQ{f=a?uA{xYI*jF-2e14>JE(^@Hc~SN8k5=fO_=RnJ3Y1oWd{)%5~FY=|(U#sT_` zoO7Jps@HDPf|$A;Y)#?6MKa?2Qwywh=BnU%q>)UlY!0R-5aUS>LC;6xHsJ2iN}8MO zP1k$b_H@13dqf&aga-kRmL)u-$eJs!WCq7$QVLo(#u0-5!E!S4W9ECiXt9wD2jIFb zZ|^=@PVgCXxV`T0KSfCeQXHJ;i`m@LhYvo<_NZpaobc&`ZA$LvhH)%%YJj}n9HR-K z#53PZw`{1w2g3Pkf`qj=@8dqI|J77ev>`y6@y+Jfo0tEA0IODMH*1H7TOC_JNa`71 zNqtACeq1#Zh?A!N{-UXsZ9+8=Bk17mFUP0L%L`ULp#07M=*Z^cbEJkxwmhNUe63AK z@-LSqA`GEK#h~zNd}_&9%%iCVvsE&kb4(h%C(ME3U;ov#Iu7=U`^)Xke>A6!ZJ4l{ z1f3%|dcInX8YJla=KcMfj~{QaVQ8z|s&Hz;&>tzsP}OCYDw`>osVt;=JcD}!leB`A z(D-?Zxcd3{Q95GS1TQ=i)ark&~;WY6`z zaiN*81kPX)%z)_nq6s#NHYW}&wm$~YfaB||*tY&YYWq3zsJB{$)e5tNpZ2_MiS-J& z?_7-pZgbc3^%(Xj8BXc_11!Iy-v?9t0RJ*8(*ng$SE#*`b`JUxDW0iF_CqUiMxy}D zawu_uFnI`(*GSyN)EjK%Z#;%`QI>^iOj8N66H3ME^nBp5nyXod*uM;5I|OQjumBmg zajlgR+5rU^pS#wEEM812s4z7261NH})r4yPIQ8wqo7>OLHA^zH~5)Uys1XNckn#|m4QaxVhB zxNcpY%8hGB=rB%D#e9C9a{|}Lb);YgNn8rt&`ICqUDtQ&#wjbbFOc;$i*=K>T;@jV zEL}yrzRZ%m;PFa(wWsn?dtN?@l{)Yr1{v$>@<(YQZ-DerSEsakJs?|tr>?VwDkf_jVHX+{Dg*@r=4@%cwl!QJr=TQnZa`K!gb|PBc~LW1JLvS z-~|txP&BTSgF|uJS}^qI+0pmY>YQZlK}(c#L6C-$paRhNHhGx}q~T{oPY$J#5!tx6 za+f~jNun|y*^`7>Oi(b0Y0WpZurl+=?xWTE@Nfu~%k$9%^OPdS$+6)Om~vqu^`)BA zP-6kqsMEnyeLOJUemVgJolHk0_`Ig4XvGAI=9)fQXIVU0eq`*d!WX`)n}!t&6@HB6 zhcsb6`&2`AWC*a&?t_0}T46&=Dw1p~s7R_4+-bqHIZljXbpZ7SL>PfrL%I43OT!zFHUHk+^}lD!S;ahd(sL6CBT&;uleurV`-$xv)o%HZ$(i4jQ)!0NU>Rj^0Y zkVBG}F~mNTtA}&qDR8`G4Om8=LCeDqnbtCV$UpMH<3QTrye1Z2If(h{`(ip`p`zCH z$oV+X4avD4!`bb_5J;m`@yO0aAEw%>CH8*==^uIw?26KwwwE2AzaL#8a00{jO{}|0 zb-2Mq8$H1WcJF9gY=>aJ&$Mqq%eHvFTU=QM)$&HYB8>^uI@tvyZ>>9|k4(0kIFwDfP%=rY>OtL8t4{4^x~T^)34# zEAr?E@;%J>+JkRZ{D#v6^Fyx2@5%DR-g|~KF<;Ftk(MIyOpvcSJNQh?5lINX{M-V~ zcXtq%w7{l=qICIr_Gb1$JQZ4ChD&WY860l6ejkuZ_3z|E#EYwti4M5tuTC?9xNGPw zlUE%tNRgl$eZbT6!J8iPtIHdwqDLW^e8GICd!$`0IVE?;>ZAe*rqvsv&Vf9)!LFX5 zGCKHGq|sLrG!!DujhIt?J-6CE)b6_G`tHxsPm|^MiOUm<0{=(0ZW-911Qv=S=c%fK}?u4bUgZr>eeJu zC$5Vo;>3_Or_ltdgFSd@KB%u%Y&h3#?z)eMtehwV$3!-Cx0%p-$y4 zQ!@zd){L2f+^X>-kOR@#Ywt?n+AyqL$Qa#~% zzIM8Mb>@XneZ#3Xf)jB4v-tL451p3VmZ;84v1J`eT+A`R?P@HJ#(7?xA>XJ77q#%M zR=sq(7-R+x53-PgDe}FnVD$qFNIReS*GAi;5Z@7~^#o$P?BgioD^D_B^O)TKg1qwP zmqBcH`SIoa{hRyM{oSXR_k{*=9*cp^I=e;+>72GRS9We9 z!W3r&+#y=^&YTGozo3?bKil#1#E?}1E*NatN4Lua$h6W30dChWqhFyw>YMiWel5FK zM*3}?^aP?FVHmGdElq#$59#Cy+jxG%9P~bXN1FW1`RsGGGiMtlJ6l z=Q543HTs7##0VR8Z5YUu0}{|U{}xod*vS12V=&F93(3Q+cvQS>11$E5U%-TTa2-<> z_Y<*DxfLje5Q!3n{sTGDnko@A>5GZzRi+FvgduFXyiq_jeMAMi95TZyG0fbi-y!pmB2-U92lax&w-nZZ4C>sMj;f% z(}Pj-FHl{n{OJJO{LwvFUPPxyFJiLYYNOMiV0pShg0VuK>YD8FZQTtUG1aqwgU23n zg>g6tP)EfTW7ERp_H2%cTJ`p>WFCO*$z@uvFX{1NPx0YVSZILttn45fnYf`^n!tls zLnv-GFVaRQJpzY;oF<7bPPS(ptnv(oPDe^5?BvEZ-$fK955$mYgPrc>liS^aR0XNLx(UjDv%rb2&2tPA z5^>Jz>X<};4lRB5kp=s?HqYc2IXy0(#0s&Nv}o40RYz*oVPIP#_LgqtlVd38qh zy3{ab1v?(p2sI`{nS=#WcQin?Fh*rc#>Yv<2{trb63ieY{G4L&k1C?vgz0dQyi2ZE zC0?t;3-Z!#6rT8Dx%puVm)q&t#HH|RuHAN;X+Mx&(H$G}4>&+R%uaKF}fBY)0Nm z=kNu_N2d6}EHxyO0^PKM8kf%20cF(u%U6>%-GwI8aclI`oH_T_ zNclBloCtUIZ_W9YG%=C!3;AS<=Rn=t$oN&J#{}ylA*#`)$<<=JFNBB4x-W!PTmn3K ziw`zy{BL=3Y09DkLJd*?A8AX6V-boufMc^HWt+vMS6*lUk~tb0n6x8H-`7?j&9ig1 z3do~Ehj_L2^>>hZi>*rhnoUZ&w9RIbkm9PvR5S1;G1VlC0@>3tD+;j)O-r?p^zvs?jdL?9A(5&!r5`az)3xzZ)u!^nl1PM7*8gb*B36* z$6+gInwMu@e0ux#>R0|{{E(H3&Rbk+m^!nv%^}YZa2`2DUp{=dJ7KW3VhJo;0y>yq zB5pmz|Lxv_^)`0F0=prvJqr~bJ32cG=YAwO5g9LZRYa)<(Y%uzV0uZE;DF#A$I=$5 zhN-)@xUvY%*8Qi3u_LL_(?GC7uQ$Kmf4aL3)Y@ngKV>1O^YI`#L^?769+8JPGui@Z z(oA;hIpLX>6xMh@Xhkn1`Y(6sq&u1mTnoNJZg0Me(&MrWCjYquv<>n5z@|JIb z)IYp_{qgo5PyG0#_wMoIe?jIf2xwsT$CC-En9 za9+%Qr<@4m(E=v_=>XUpd&V-yIlF|62@m9fMDO|@d|1AErDM@U@jz$}5y>;tf2o=u?wC74NiIU(|l=*W{5?e-25kp-v;%SnJ{LMXCIJEoQh7R%MLlz6O!nXlf8#gJFw zZOX~dePD6X1z%)Uua7=CypU9*?4cZ$pmJQF4+m%c&!06$)Zk*e#!yYzqGUta!4^9i z+WjM)8NgSQHKAL_1y$PEYk@ed2P%S{kDv6sJANzhXF>X3h|!S8;K3l~EF^1d(*EWG zXQeQ#^|{0aESV4xLc(?q91rHyR4^a5UdlsKXdHKw@Ed!bwsvtTp(vKP48G62 zO;u!d&x)*iO~HgH!Y=}vL40wXxUeDk>T6QGhaWiHc=J+1b%#-o65aE(&w18-U{FKDk*yK17wT{BjZ(Y0;p-7M>`c?7L z+~(g+RvA$|RKRa~dnG^T>0*t!GZ(S+jjByuT8L_hzF(Md(a(mcvVRMxTTI`}1P;fT z5D4ut$IeW*;kpgS1w1wo6TY?(MTikVnb15syJj-Zs%%LU+FUa@yQH+$TsI&i;%((A zyuSI5+fTn%`a-q?)7KE)k-~*AOpHRSdU_zv!q~s69U>U5dOY(m>zy?Q-2iIL%(e~_ z_wNv z!cHtahCI($ui3zdIRT}P5)wEz_F-q%o&xR;HQ3L^fMv^*wIi?@^ zXTnh%XpnY_BF#W$k1xRb%2Mn=k%~ejkw>JVY17W3QlI!d)6O9WlCE6y+_ED1Sj)6Y z1AJO89q@G@2V$>};}MTa1YWIx>U{r+B80Wo3*Id#-ZTg48?E8gHJ?;26?p}P=6>rM z+D+vua@W)1h*1^{U>O^MC6m212|7w2fO|@ZRCjLK(?d#`37i5+0$-!U(&}LHPRcSQ z0w@N+=m~E$D=~B3R#!SqW_1AbcXlRD%C&;>hBQ(LqXfgPVaBI=MAf1v3B@EQ)}f)Cd|fO* z(f-Vx`6;!TuXr;DM=n;ZK8+n;bx$P)9~he?H|nMXu`6`zT+@qfz2{#-gwfJ6voG_ zH(^mw(|^+suO;uOM^JXy^ zCoy$eblq+o15%ZW6vBpv))a#jlf_P)s-!CT4N(uo-YM!qs2oqjJZ?{KZ3LkEo`+%{ zI?NoH;lcu`z#CFKB%8owUgC4~x$sPb`#hXSSW5wl#2ys!HZNeU9%2y+uqHE}y+e*>?tE;2Uxd(y9G#9B$~Q)sHXBeqadUnQ zQ4PH0=qH$u-TOo(KCl;S8|P6Y1YDtFko`arQ}O8G zXanuL2PSxqa4?WdK@^gIyv4b|ya+@z)8kLqefSj=VF+LUM5tv< z<@^tOVjAP1F~-6Fc#QwBC#EqD8)F>)kH`2Adtw?R%9T}Xz4t#J<3H?)X^i`gG4B75 z$M_F>Vj3eP(rO+LFh(9!KSHRV9jpoky#=!0mTu8an4uMsPpHCwz=MkO4F{sd0yb_w zeLh8y9~yY!=buq>f1^1m;e&6#Yu*7f;_uL-yz5_hOWE+p#myb+WLe3N^sL&Qq6$|! zNbdZ?C=iRx9rXm&d||-H^%xd1d7HNV2NFo1p4=*TJ;M;)Dt8~zlekPFO9$iY%jLv# zoNfaHZ-OtelzCgEmri&tdC1xqMZ~^Sm=v)eV2!~wB( zknadeS!S{|?x2@>tR{$2Y?yO=85Wj&SwyS(Z)k7$%k8WemlrvwRc8-0W+l+J9#JDT zy|I1^ZUcI7I>w0_L!(3eB=#4|QJQ|gYLdRWZS0_;xS_M5m#|wyG+7WVq&hiU9na>F zN`jL6Z7s0Pu-P_|$ann14zk2Q`O7ai_fKezfAaCo|G9ng27ZzrhWb%~T)oZREl%MUMi_-Nd=v1e_}be*2S z2jaCndG5-DuP+qwNXUjs+(4xlpBSt@rR$>LFMIetBCn~;nj5A#{P2z`QG73XGejkL z+>Dk?Aro=!+avjg@GSb_5gm=m*_jK^W`{+@rl0R;Z*JeddNTjGf=|Nj4Xo4nJ-&JQ zOZ-0m^!oMf9RcPIS>A@S3b2ODM`#39EUj_;1h_?3ZQ#c55WsJ23VT@*c|P&9JJL z55<#yNHAck7?soo>B+xkID!A2>**y-x+hOl?O(%+{Xn$_4`?Vg3{{4&A|*D@0Su8r z3eqC--5PW|K}e{9ZBM0S8nY_8yUU;_Ye-k&N@yua9X;4SJmL2I^#1<#uG*g9e|7hC zDd(dJ82ZWasCGFZjtYQ2Q(vA;zXzr@OxM%pfoHF#MryT(*&oD#a-5OfJsqsa@)J?B z0G#`(l?|?j`D8CIP9)%Mp+#Nb#65@{Jndv29Hf^xv4up2gtT%RV@R|KMkP$0QzQ@r zeOBu+5VEA6z?2avl)<{Kp3dnq=_dTXHr&47P%LW$Y%b7e=hyo??k)ZUPUUXzh<|V1 zzuLSXm`Afq-*{uatR4;V@In$)g;_0vzNnz6HeA$@Cn@@IL2cxZ1;us2C1y zsCJJ+xBIbExqB4a-BrcehmUMAj9~gT4)|yy&1pD~jiD|^ee9i=$kqSx30NUe@uElB zZX4H~RR@NrzKNY;MVO%X-+Ff3 z!U0W{YR*ScZAZBp#*Hjia^z0ykZk4|+m=Ne?4*Y-3o5|2Q$PWwdLUWj@esKLgt-%QOd6O#X(NDEd5TH>(uPw{dQ(l29ioiHuK;?)6->g*_2mkg zv9kDKDqc4@V?YS|;JqsZ=;-$bQ@XY89K$XkblU;-}6>2lZIS8jk zs0j@8m77BY=(|uAiZhyNBZKY^#-Gv80Ee1?ht>LV60AL-dL6cAwoIMy0Jy~J#ws;w z6*O2gYaZDiHxz!PWGUxROY7L3&(|~5QJEsTV718=uVbPSWAVCB!>bSK7kO zGmy@sOQmhN);;ZfgjYIa0GMvK1-HEiN(N=C^RV6PED9%%;tF+$Y1ajDPU0nSAif5Vh>|?o&vRql?isWym5VFq-t~z5)8X zE^VdkhHly|;D#7YZaRni@P*7m(}v{q?#;)S5S`vZkMe$l5YqcwL`|($EH*G-7l{K> zTa`G#DMUL%Kusa)W0o^cR-OynI_Wzwv*5CjV0Arxwr@q-%1^ zZWG}RE9t!r)j*7YAJAsqCBK)MgQRQiS1FGhSiXYUcNhl-RvEiojIReQSc`4Y(x~33 z>W$$wjOvPQRM;5<8-d&+roa(!v8w~34=qqDkYC%ysKl(Uc4~`$az1jz3R?%2n`()N30R;+XA34y2MHix;&E0BKo*vg-iixH6f^)%wMUb_C3@$HD5KT?9@%M;*o=!wN9_~_8o22Jy z#L0>FU{;ur&9*NDZ)9NU5=;eAPtpBC2?xs<+Fj!rx)-yV?Nuyf6Q-v%Pt%d{Fa^Wz zwSKa|*a&d~nZ!Z1qO>jQ)_^=R9VJ>P)3ed@=>*29wFi_3rRk+UVA4k$@E6Eiwym=? z4&xa}XV6*z>=~=(W~1#3}1&~3;W!Hp??a9hjPRQA3^Yu zXVN5*xYE{ad&pRU=-O*$puWWsr`McuPd2wW-M_)RrJd8$SgJ2LxIB2p z;SBsRTvu7b5VUj^!Ff*Fw}FLeYXgis=gUP+>IRx;?0yPuM`CxIbExw`fktN~lpeda z4n(ICt9dcKKAXeNFsJtj0~%cZ(}|NN7*sPNh>MVJ?IlxA)EWN$szgXs0`jDx?0{|1 zq;GI^RCdsVz10Y^m?7{i%W)5H83w}ua%Ly91o!;Yh3GY z<1`U&Dg_ZGLjD+^9+sg9;6HME!h5FsO_EFl@dZ?08g@lw*|X215W|{i3tPT~>LTDe zH6ZEOQ}iU~*)6a&AT~N66+}j@gvEh3bfM4HSIU7Ah9yUG=~6wa?NqFVNhZ)jY2z7T zGr4=QMht$^&9;>$5A-T^bXF!NVodjy4Tj12co^_6u(d)j>Lv|2kiJd1r!^?E8l*bs z;@lovGQwl1V8O4G`W4(rc&38^ca^+*^ydb>GZ`9J$lnq7J3CXswEm{+NuId$68EX) z3C_vY+REY{D!GT|gh)MH>9r*-007%s*`Hl~@^CK=z7VSit~E7{(!g*t2tUszl4n84 z!r$a2;J;zUb2!md3e)I-(pj@${KGD?UwZt97u~jgnn5r`Z~~^-a;$e3*Ek-G_k#z7 z!u@b5Pm%4+UKbd5;gA{?YH#5t$WAS3A2caGgH8#Hf(FQBH9EUIVF3Bme`~ErbFh!l zI#1>!BoH>K0A?5><)Q$?5Ijn}K>I zsVwV`TS3JB?&-hx5b=6thDm#zqPs7Sd*Fi3v~Bq1K>m&=u{9HZV3^aUPVg<;L=i;G zJ%yC7L;PW0wS=Gp*EHZhFK4Wrok>}X)9-|vTstBaWwP|e70^e#(5FO_Z=;95Qh5A< zS9ZdKebd&^r-OaNywNL0NTJpQh{pjw$JR}L9QJKr4o=}cwemQgCSLE0r^`(O$t$EZ z5k$Ro_X;6zB75C>oW(Ed2oG(CL=rK_Fk#x+6*)hhU7UlrTF#M4WQMqoi_$7;h>ZiM zoS)JK+8pFi4b)tK=s~6){Jduw;6{ETe{B&>?NU5|+?ypIdVuli?x20lB;&mu?r0eR zBDaOO@W-`ntKUanwf?|$aOi}9Y8v&3H!)I07ij+R`y$BNA|NyJ%_|oRko-QP!7i$J9{#rwJLL^ zA3hQk6movDyPHPkoEogy;M8c#4u4Mn?VK8~Dre3%xMbuypk(C0WLY{|Mvc!Am;bGq z6O^KsZKIzcTz=aFD`M7JI43C8!NI{Ew(!B>)A)WQ3FF%7NC}U4ZWk=+!6$M4#Qtjw zW)<6CTx+*7trM)B;9bK1kn>gkhe`s&C?qglFuaBZh)O0ytoC4v~hC?PgQuV?93!K90 zevr}OF{!!S*|E$$kNbZ-e0q5Bbcm##M+bvpfBz6g-FJ_W21i14IKY?&x{#td%h^E< zzXnW7(~O_*>Y+hrCC%&%*5$zVZQ{{o$=59uDKUPAK*NcxxA%7(?luBUuA~N#3^IiQS6JkCH+f# zTR~hi7-VUi+w@?sLt@>@c$mm+QuyVW?1YzzdZt84=MZ&Rm0HNacUFm#fBeN;d?*O_SOM4F+0Url_J?d|Edy6z6=u4FSAmiWN!S*m1N_y*2F;U3t zJ25+n!&A~QoNQMNqxd$@D|9Qk`o~Q9!>^Kt|Kz!iK*eb+>2{wrpC2VQ4_ww zN{OaQ`tBpauIX|mC$z(BXv7uBb^|ngNPow)cb0$!dqAEXb>rm{O z3xM8^ZjiJgaZQnON3(;kQP~;os<^;;*GGABn!&|F-;^)4+X4kZtE39C+A7K@NLOqe zED(jd$^=uX8Arkxprf)%vm-tQzheFlx^>jp)Q(%&L9^1P=B0;j8>*X_ZHCdJbV~U2 zaWg|UQ90+T&0;sf+MSV0T22les0P1zQ3G- zXyGsI4@E4hbBj89br%hax)5x?=>;-pq@S8;#&UR$%wVQUMvA`|-!hm3(Hw>uu>fUu z(@fl`ZD>lfUuCStjizhi(M3=ZaBY&Tj0pGgTe>^oPEr~8hu^;ch@8*3p`bc0cI|nl z7K+DcolJMph|E327UO4#J`MRR&}oi^P_yQpBx^41JEdILf9GrU zp;X4?t@yv?D6rplzv9lZZCuJ>h>U0D_ZA{+4=4lTdFGbG^v&EVSV{u)wcKfPvs;}a z@OK6c(Z^rJoXPL8Xf&J?N*)fTm`P!v1k;0wvdj_#f7De)ni?RRb>n67oE?Z40n8Zi z2q_wm5RDT6TH zOGl29Iq5KUxTiGvve5h*5(5X1fO%|I@U!?o>t>Z6#1%j@oY5pE<$6AW`?AkOt9hOp54;6mq913tU}kMEPi%KLePp=J9Q)nsiE%R;Vq%llZ(kQfH49#C`YNO)7WKeVu+IGCP-Pbbkb@EH;TPdy$F+_EMuQ<5UA$h_@mq648` zoFG_1b0R5T=p#uBsE&~WC;dpL!4^r{J;Qa#L?q`KU>B=YiRB?g+QQJtlnqeJU|T$WKG&!6eW{^( zkxY3H;|m;%jt=~s?7`N|;8FqgqK201=>fD{hpx^fZlU{j)1VBMpp#2?eKy8p*9A9# z{TsL>i)ZJypi7h;NB$(Q5?tdy(`i4{kzT~Ps>J*PmhFr2bSHi&z&2lCa|$J4JN_r5 zXWNhn`EEmyivlbpg%D5#eP!d`X&}#M3i@4DGR@twz zm#hS{NKCY?lb#@PqmcyKo!OeL{Om_zCgwV+%kpx43X@sO_n=|=5C<4K7 zGiDqO<09!RP!o21PDFjyX@5WcigdtAXUl^SY4(xh7O8EOjFaJD2tVqN#P}LNP!Bsl)7Y77hgh?G`bwLi|#E< zyY^MRG$ACou%zyY@D_rUH8ga5j4uM1{jToknan};S}drJ5x?x4r4O5M_zu;1#~LUlA_<1!NLk z)Uvsr&7FX4?}6+l;4zdFgh&}&VM{U8glbw6mR3En+7&_QT%v_Z7m`Um@9chOj&S%$ z{}}T{##H?Jdg?W_ahO$6+npjTN?j}&Z5Iq#*W9U;F*ARS$1|(+ZfyT}X6|n0>1Gih z7-FGn+TC-0I2-|?(;%)C`7IfucD3TnETw5FY-@Uor_kpf89{4DTOk5P8JOd|D>rrr z)cE~ys&Y}3EMYmHNA5^oI{W!lD_jh+U75JeSYE`IKaxUY^!DcutJ}A?FIgdMb3WOJ z=#G%g(b)-er?|^Dn&shvu&h3`L%#DvKjy5iIY$z%d5{C3O}K&|`h%lT4!iaIz&RT% zF5HKXpS#fF*d3?)Fpxus1*r=h)g>oaFp_EFIae;ut88)-SuNzBlAS06zG;QLp^atBa-Zk+3BoI2LzR> z(mCc`pUloz)YAp}MLA+eeBkPtA3D&kC@7X^b4GhFtbF(fc1_>eIMhE5q+l|ek$n*H zknaUVNfq*cvvgoiT3mFhlmt-Zcxf4!IKASaX+gqUdhfiY2Pr^Wp5#W@)RErR2*6HG)FG*(^h^7WdKMybNTMpHzpQ zb=UW&7N&sN{)_{Z*)2bKvS$HGU*_wp^>wa0qbnV)5GElxPdg&8g;)jCyG#YhlY9v(U-hMRDfu5i*lh}qt>Ug-c|{+U zgj|ebE9G5>dY~X!Ak!Tkf>6M>i^zjT?L;x6{UEi&9R&y|OSh^V0l6h%2>0@WX{IZu zbTN`nxDik3;8Db_PK?o~lLD6$Meo6X*Sdrt#ue<*^7Bu~#if)>N>$F}t!t!d^);jh z6zcV(-Z#Je@{MCWe7G{=d;S~xyG4V(d^1I!b5^~9WW9Uxi>2)d$b&%B5ZWbGGS>?MUW1^uwt)^nRANO>|t}40x;ZD zE?rNTPjmc$vbF1_RXjLnHwidFz^Mr)7Y{tvNvXbIF(oRkXNgi%R9b#r^?rNrz0Wy!hzKy#PHWjo#6346ZrtI_gR~@=Z8Qrz zNX;odf(kl zI%e+~OYwLFb>B_X?V$o`P>Dg9oE%g}iGv?)izT%@XlKgG-mx6r0w-@O*TX)L2LvDU z_v-k0OR3?fnIvNRDx7$>E?VH{hxDmJg{C!5MB5F? zon7+Gduh*h3^2JUkS<_!27TtOB>4=OgS(2z59OEOw*U6-ty1MAXN2wt4pO3S^0dg3 zJT-f$e);26(tHj_#PQ;IiN|w820}~a4$2HtrA_K7M`brnM*C(8OJrZa(`$s{QX8X>D=NyEBs>mhS zH>Rj;(R7xo6Xzv+L<{efa+I;_JsBkwGvTlH-k2u+Ydu4^g^&BppR$Y%9M> z(lVH8>MKws?wE51cILO&FCH1g?sbrn{IjTE3~8EM5K3uEJ7+LyH*-LIMh1v?NJ;wP z{TJlUvo8QW))#EBM-*UvpfnzI+&WrbEzOHoeq6fr^H-j?GMS;H+-wR>OPWf&g-;== zpoayJK+K5_H!0XUpklPhcGFq3P~1D&70h{wpGH9b5iWeYKN5T;FhLRE*wrN#l3 zNC&;@O6%g{71i|-JP4GsXUa6pf(e-+VKBf<49!;P52R&UVI5M94D1_FFQRawH?kv$ zA$mN!yZ`C&&+F03tABK6h#N&ls%1-N98??#H^RD*7=iyqO;!sOW5vos^^JoSWwYhB z^!(YkIhOth4WDsf;!`3_q*q<}j=fPLKDzGusfaR8gbTNsZorOA0%|B4;o0ORG&qx& z?rK6~YF32c*I=HaLtU0^f%PzZ!O(f+g(Z!g&2xhWY#de!qk73ODpN7YuB0%6D&D}A zHnJPY7U@i-sHw0TKy_BWOlUP>rhr5Kg?d72m_C6L52>+s2ItOY|J<%_g%dL}SICj? z<{tDE88e8f|s*Sf|Y@R)ta-MIzg09|=E9S;)C#790LEE&?&n(A6QC&@WqV!L@dB z5#(k;{fl)wXiRMd(zFsqRVIf6(%Ufpxf3~1fSR>IU0mG<66sd-5}!Aq^)Yqbv$V!s zIVh+u7YVI1z^=auuRBmfCt@PvLMlm#Nd8-cbQCEyTZ-NfCZ-0aX`o({IwtV&t=E&$ zD8cC_&Yk-L9<=NVF}Xzt-Kb@dYfF{%1kC?y`DQ@qTAvVM3IB|b`pEl?kA>4$t<(>{ zKd7yggGC6mw}skI1!ru?$T=_*C&&|L4o&8;CR}O@PYuLTu$FO+9`tdRxgk2}(HX>}|bzfpAFl2dQGLAeoFW~{y70pHcCGC`i>XDj1mSm&( ziD!=Ije33J@WL?{xw?w0^&nYA;ZcDzDa+{10vZTpIA0-eX{di0ky(pbIY&@7=$bk^ zw1M&_wJ0eF5lJr{W)|sNk_Chmf8cqe0*M#oA0T}vR@BaalqQ< zTw=yvm)ekNvAa9r#qnT51H?<69xleLFm8?u&&g_fdob*@!f=&o@1c;k>{u)qR?Dp5X~ykW?!a<3e zaJ>J)jEcO|1Vb~5ArK!PzEVffb4=c>Nwd~IYzd?}z=sSYNhdhyi0Xj4Efu7fn^!9m z4>#^`6kV7R4Rr}-w$c=&K8}!8om7fFq?=uZGlz%Ewc2Tx0H4Fj+ahu7n$1DVdCJrI zvff0!Oqn{MUhI)|5FH9F zd8iT!!ft>J=E}thXTANNba_>i;aE}kMyL*lVP2`S!ZS^EnVv`2>cas_uMs8#7?*>3 zZEsHv@r5ML{Z%5rEP{v5GfCjqpdCrAXUQod@<9jJjq&DkEA6W*`r492tpg+y2J^H& zxv6;+4wmaEORMq=byRr5f(%~e%4l%PJ5eSF6a#x-Qo8WJlKh- z+%mf9tAp$`VRYe`8Gj3IDD*9`_|yiG+@N)>w5{g#3zlt~mUiegZ3$Bd40^Nq@|00$ zYp@&r`FDFKFManHv|i}}QaL1Q>Nw%rK;Tym15ZU^$iMov217pHqN^M4*}pmgH|`uS zP!DbS5L?nia+97zrt>AX}hdY-M8vVyDA*Mh|dz@80;X zQ%U>YxKyPR!>-Q{FxI$m?P~MI6%e<=Br+MV`tTGoTbP1zWiCOUTs&IQmXJ@5pPagAw9OrcOv=GGO9 zOg0%)tut!o-fU(!nX&*STd^SRo#VPDNdC>70eeb&u~+21fJ|I1F($OM!J7C|j@yWA z6>yQruB(oV^#PXo2Oq~fo#C*!nj)YEs}V6?GsJimEUz)(O7?!Vn%-~;dDxu}HKAHC zo|;w4BQsnrn)Qr3I_O3qU{pgUi;gIm(LSPJMhD6$RQRbe4=%&l%|)yi=?v+-yX8h4 zbcrM4jx|E-rsn9`*>Rmm0e^OJeTtpAI;C261r11isq$O!flPT#-oItgssZSUHHW{( zQ*uIQ2S@r)jXU2d=_UsH%=a zp~mb#t>pw*kE@7*J1QjBuFE`^`q)0nQHx#`0bxohD8pqn^<=d=bHAhyCYq20ta(aN zdd;^jPpLLEFbRDUlf}?CZ4I+8A$2^JrOXxFiJ}=E!9C#fEv_CpZnpRgzg!o7xK%f? zkY-xMIXPZmqwGXrM*Kdi3B;%;f*$n3*cVVZx-3wUEE@Xm-LoLxUb>m%bk%4;!i5fT z{4j4%?|%IH6XFS(u3?2ZEq8}N{CSEafe1cx7sXP~+VJinJ;j#fu7+?ZT56Z>(1J$U z5~2J8s`bH8hPUHhw&I8snOn&VTpq!*OcWdE57sfoQpXAOO+k8IK(%lr4LHll9Q4=u zr@zwsW8zrE-G@gH_@QS8$1I-gwW=Gi^-@^n7pIci}x zdV3IMcXy{a^Y{0Rs=j*`oVPjkQNM>Qc*Y7-{^!3$Eoz*E?KlFNh&)dQeA2s&cgS9n zxhG6Lbb(qcGEa7Cs06bKdTJTLVXP+gwDW_Y_}~VI&JAYkn;#)VO$AtsA!dXMKI2M? zb72h@=c`p_x=fT=Y8XM$f&xowlv60@D-}Oa2-&s+4eT}CPV#G@aM&KOO?_W7jSU}J z$RC>Y)hn=5U=yo!hHx**3J(bne8+}thOA@=TIW8ucs&jy<}L}ywcBrQ)jLb6CTpG@TnG|mVz zaL-QFu_)Nh)$xhxsW!PQac8h>d{;L+;J)-+Xh~#Y*x~UmV45T#Kg;DL6i8cI-NIs2 z7KDh;yk5+XkOcz5vX(;Jnkk3olO@m#elL-j8p83_#iX}hzx#Us1`b?JH|U-I;Jo&O z?oTX{nWfiRez^VlZhZzLHEI>0dOXpCK^%_+M4!tu<~o$U7#U>%5fGY?5C~EH*2?Ai z#*scK12;;((fHjWp}ZPM#tz(vhs+U5yt$tuf`FlAI5@*RaLCU3p!>jmTQMaCsw?1$ znj-Wx(f0;16-aA_(?UZ(60)7bdgT@J^cObgFOP5E-?s_VH90TT&REFdFhx!_=~vOs zUIo4OVs=9Xw;l2&ef9i1h-bRMiR{`&-$``WueAg&T(jP-6v%e6^TJSysRSztM24O* z`yKJqxWkr3t34mnWv)v3n3Y>q4}ECG8gzU8%6#JSS%qkmr5@-qcm zUbm}gWSGXHhmgm>TJgUKKy5eqJ|_1v99aC!y7%GJ{ZF+nis+Mk33#^#vCja#)C3Jo z;ra~QFrV6A;%V{CM#1}#{(7O=QwkZy5_AUEjid=3$vfz%hScrq=+RU`KtcNqU! zniSKJh%*K228PQ?A7eidVJ4e5&@GeKK*NtGGM6urG}c}HiDsdUAkHva!+dGenH)(v zGNzS~FrXvNOJm{PbWVWg05mwoXLnT-iLh?#jNv5*Z8}}sfJs%@3}p-2>R_8@VqUPt zk+)+!hhg@T2|HTL(_ZdkVQnbR80;?qUK5&2_6`>h7ZYbvx>)gs3ZN0cLr&K-z9f zS^f2D0I_0Xj9>|2j)VZ(2b*rZa03#lfj$9b-D{c>y$LH?D$`{W3@NKnG^keCo%UnF z2b>o$82Cc3>a&SY+|VNt=K;A;7+=ei7E~}`X*!U;O*z~Kbrogy&mi?C0!v~K&d)H3 zJ<`nTjwx7ROUR5{^3sFN$FcHtH$)n#Pr3XC)=NqYjJtp}n#i}t*My<7-poy?9;}Un z(II%e;+@NObp)TxVi2y!HMzGmDR)54VE|f!<0~Am(4zJyM2HO2VaPgoc0_WrWaHe0 zDl6Y6AY4B#fPMpzoE-*mXBbW*T8FvZbgi9Y7!1ZXVZq)OQzYKLd-om%*4Ou+KK}S{ zmv~R5ST@dnK=MYy;Dx{1zSsfLWN>xd_ITo2Gsy;q5D^UtREdtZ(s3Z5f5`~cSKIJt z)x&3-G>}`1IO^}@3wcXs42fT;v&!jSbfwAScifC$&aURr{>|yRTjS!&6Gx*Ysh*t= z@c$%Z__ZEr6R-n}#+pe!aP|u2Az$ZBb zeSsXRB(333S~Bfr64!v^KCuRp<(q7N1LEkLbd#~zV4H}|<5Hi_fq{#m=QGy5v=|V= znWjFGR?+@$a6M?nH)m#m;oloHBYjwt461pn6s6{010388=;E72tf(o#mZF2*xLz2vj`2nJ$mddiA9yEbqFrL*!>>8%LOqSL{iHY6bGx_>l;e z!fvk!XqNw;jucJdEw33jMywNCx&W|Zu2?+vY&#ZVUmE9~Ik5tK9A8-HHi;vKO z;B=c79EyD$=l(8Jta?jS!1_;QN#hOAbB`_F>r7bT1qUppO z8X$G&lsiSC+XR&`^Rp|HvF3++3V^5pXryHZ=GEmC59|-t*YHq5?(S2BInqL75C~R9 zI|(jgmn>0g%jDSvr71SvykD`W@eu*jS9H)sg5obgGk--rIQrep`Zj>`9_euBW;h9O5r($Ftqcj5VNyf z0{?Me;rS8Zv(($tl@4X|tV(Z(XW&+4lZVcXCO=eO19pJxl~|A%>=k-(0phHK7|LTVyB7yz3gn|jgRyh9_ygQek<{DD2n%b5S zZ6AG}q*l1s8M1I0cBo}$Iz`xhUMayMfAqNFTCG0wlL}uCcHF|05!PHo zpgbV($EEP^G`81n!p|#BVQI3d7~BN(Z*_Wcb$MkK{x-lm`MF^=%r1`4-NuDle!x<}$=o&h zaiz7PWbDN;hA3}V?}`Rc-_P*n^Yco%UrcZdmQFgR@oE@Ae@1cyQ_D;`^}! z(fn(2V=FO@{EmZ_F-i@cQN2RiV+p2jrC?j6qi)>Lgz6R|MShUb9(@@2!wAEG8ix=` zD^KuZ)lFcnpneM3iOi#@Fn+Tb&Z zQtApW2|3Q1)Kj#PAzKQy%PAbq0oLuUn>sZnnRY!X4{XlE0{G0Wd{Xw4-&62lL zao<&2TlxXXgzv6I!COF^W9&r<)SJRPhlyvKhRzzM?%~RM@3y;0-oft}g-4B?PBhq0gLp!&MJFE(@#JC2gBN?a z1(U{x-T@vk&%zKqD0T^1L|k`*yTzKNOOW1Yx-x}Qy0jg7HhxJSLUlfw@y&l*X3fmy z!xsS@zfz_266;?y>S5)450c-Mr3A)GRveLY^gPSenHz|X?ew}D^%7B*h>p$dr|-rl zRMU)aB4Z4(6%oaJ2pJzL2yIW*VBNv}iYkAjU#RjI@N`dh#yIGd2~3)iGM~HZW;T9_ z1;2fKe0cxk*GJ^0+1mQ+-R)n1Vl#(86^~@qO)wl=wS?*eKi|Ij%iY@-JtaoH zd%J~fr~F(i<_q>Mv%yZDFhfDVHg~ekC59I!hz^nzAgvWK>1+;_9}v(>7)%>Cw7|N_ z^=n`a##!5DSK67rWt%yAV=Fh?b&sjUVZ}d6ndox0Y^cNq(c7y7;Q@c(n~#Hu-!m~r z2cYRay${~3004n3kwbU7KzlK7&QxongvC^s&BIdMC_-PJ+(O-+a@0W?uu>}53&>)# z^ZDvEtr6}nSH@n?F061nbx6#KDJ`HR(Y8C3pHe%dI+2wVRiIE{t+so0v1dBrO7pZl zk*n1;>?33^rr5Wb>Yi83O#y}-WdsvUOCtm#t=O4jf>Aq1WQI7;_HL>S=`Nt*_gQg% zM4zdnL8`RukaA1`iDmC*FeOPXZDKfKAO(Md9%m)`8yDJl`ADIkY2Z4TK?WK3N>)%& z$Gk(4Jk&{(+FWDYG{%s6hb2BLXwW}=OlyP26WK~_KyjrJWi}8Di`!DfR`60i{0T}8 z84s{Lk(_8kxtuCV?l!J;srwWAq~eO1$I{pp!J;#wqha-A&u7!qtMfQvIAHX|<72Gq zE`t9gWTh+nkg&L1T!K&JO0$^{3681VLEETWS1r=s0@F0a|y87-v#NUi;RdXOtQ1V{lX^7=yFSCz-hZ+R#<%yk zAO7~`{THkR^MDscl&nz<@Vj(4?M}u5vTCYmj_csx7sv@wf~3S2B(^uC(~(9y%P*WU2irH&LgK-3O!% zL;us?`D_NO;2&l?d+v2J4kp?-RdM5I-qN6QZgk*mZGLmOLjIr2}f%E``t z6QD=)8tz`NOaGAM?EpS>F`2(a4ALgj>u?_>Xl1E@Z%ZEC9Rgdy^8ntMzCO$=Pre?0 zj_^x8UT^S$6ilx-af6y_ct6k1icCI0b~9wu$R@f1O*A0BC2ZS3R7Vg(!O`XXLR;zq zDQ~hsCb8%azKOR;5(As5NMO&Nx$jT*eUY*$W9=C2lAmlHer>$VdJQsr`-sYNYx~db zPg{R^fB*Icub%fhRS!17#Ctx!5|1{_Zx)?Cuf83AefMtu_)zN_EEw7~5vmH5kCiD9 zDT@}fXyS2qpl>Ql{0zHSA&(J}FdWc5HyEE>w$ssAR_6R3Wjj^1Q@7`cN!069xlVFq zbBJfFSIK?`M4?3V0!4&`kir9riykAtzU?d&{&G>lu5DaYN0kfrU;f35<_O8IQAlFa=LD? z);TI^Lsd0p=PZJk@KEp`7O@De$RACK3%oCh=>G<{o)f#2??Nt^dt^Dje}i)aLS1yj z6G009$xlpUgl}&(#sMPlikJWTuTEq9r#&%^5spdK7>B=kjQ_MJrZM7lS7RLg<}v=$ zo|wkC(-`B+bAaYP-&_wq+ zfUHD14hhi8u`_GaMk-}~e*kM$3M!Hv6?Qr`oIBztS5Sgg;rGk{OKPI2w3%rw)rKC$ zkga@l&0*#bGN=ZOSHW8dE4qXYx%ASi0O}fkTZhnOsCE%2%uPu(Ox^W51&a`lqpYBa;Y1**tBcY~JY{M#xF37MsdSxu zl@5`vQ8UPM!6_#D4u2AJKhY0?l@<(}oI-dU8R;$H{Z&OfEpOCddQ51D;H3&H191{n z2f7j-;1nP-3e_zUIpG(qbveQZ{Fz~{4B0~&Oa;%bF3*u6!xas^p>aggk-=L>3MVeE za_w&qzSfd;y{{WGcm8I?I@>q%ht#2*iK;cTTMe!d_{!#xEWHI=BSk-4saMHN=Ucx4 z#9hV4-cB1^zkJ}su_~5)PsW$c( zkZgokF^I+uv{CT?sHe@=FGKZCuA1!!9aycRTy0Y3Eg>0Cgo*79{bw;zwAT-@sMoNu zFqtD3UQU80z_!`uHc;Zz#x(mdJ3%JGE~_S4jtQ1YR;!#71ABT|e7J93xJt%s;2H4o z;~8njZ1-P=eB_m@kfhHwWrOuGj#5k{vhxtXM3#~9l2HNdpz+zMB_1U^ehN%KUcq~* z*&OvANzhq~YmNf$caiNN8rNlOCLAbNTp4qzco0P)zz4xSR>aV^h)E|L3zt1FPEf3X z#PGvkPVe78E|m|QE8CeZYY)k?RH|{bk4O;Mt>hv$9B$v)v4C0giBN}tr3Id!k9la7 zJFhbn;VzbddG3U2VM)j86i$2_lB+TdlM55oe=aKh^YFqH&?VQ^5e$YfF`S+s;3=ii zvUg#aN1M?wwgaD~2)p%ciZWqdJfR7M4FIk$365Dln$CeI*PL(T_Q+yw;0reN(B7y0 zAHzi$TwTIQA6dZkEt0IED}dT3_PXuz0-%l}z(uZ~fw4Me3!k9L_VkNAPJEGyQKCGx z?6av2G!?TOii*3@S>sF~ykC3jXyb!cG zdtTSJm^}r=2FHrAA@2|JQUJq_5n=7iotkL@7vveJaP2N*-prY`Rvf5oRQNz$Bn|-c zlKV-sxv8J90$xR|;0O!blqidfC9;8y4`#@C1+q?d%@8qgCT23mrlk5-3n)#OQfDc+ z;2!B6emY(JfC04|T@4MJ0_K~Rg|r1yAtZ(o(P2U*7+8kGe1R$Ium-%)Q$GNtdy8 zQmlGMOkx$P9tanE+d1DKE2rt?R)M-$+H`Ghho>~LBO^L1*ID)5mIiDKst2N}B{udC zjH-}4Y|tWwHApkZ!be6fT!ptgED>xSltr0L>vMm_)#&${kQ39#2VcJWWZ*4?G1Na6D7u z+)Ngbp(r53_}?8-_SZKLkBEEDA!T?9;(CiMRV;lACY+W%ohj$=a5$!x^hkCy83+}ASKE2;Rcj(Wb-oNFQZbIRmpE*s!xSRRHE->yw z*}=#4hr8P^j~L10`t9926d`;I@to*qHs1#I+!)H8fN4cJc~*|17jv0QSKw{gY_&<> zx1onbLZCGGmQ_LY6Mij2^QqrzQ@(lt8i31o8lx+#k8paBLT zZuZO+VgKwlw3)?LFkjYYDRd11eY{jDMtDeZEOBw#jj%f!Q@=NSsG-@bkSX>k4tyxyk=xnTh~`_>8e z4YY?11mr{&h^CRM6vO&FXJlcmofnxHl{ zhCN%$Xh(XySd3qX7|^S(o{d>e$xz%7o`L*+dhXp^`A*=(un|rs^UE9fKFp42e{lfcgNT#fm?&_%VlQ#{n~d83tW94Z3q2r3$?hZeMDa!|dJfT$spC zg6TCj`3x+ZEm%BL-crUM_!5AH1;Y*jRA)F{HCPwUc#O3=%%xvPX0=j!XD^?_+l|el zO^{PcRJk4_R}qdL_=XZSqiT3a3W%J$xpI2R^NA}BjC;pD`w)^=DzR&bPqj0m*{uxj zk4R$GKPw}UkzS2uFeY4G`Wc>Gj;E@H5rh+KPYtft4xW#4#k5z+WYX$4w_~KoV-Rhe$`DS+T{YRt*JSDe@ zZhu?e;p{Se^@f92C@9Ck6*}teZ0`;CclPmTu-#|8%J%-zaPZAEY3@Gmnb6=#nssQU zXF0KCQFI5vFULwifc8VPKGk!F{xJjdf&z)ih0D4obsBuD`{<&mvB*aitL!tk;V^h+8A0@T%VM>1wLA(2*- z*x2xmqnm=cul1xt!X`7cmvp-DP0!M|*Atd0XVARe2M zB*>gp;J7vr#8`1UPZ=n?JG2z-yQ5}qRA}01^;NF4Ui#$&MKtpQ9!nk=-Om4*1+B%( zGgyR3hC%=J&7W@{z~-Wm%cpnmzT7>2dMB=fj(W*9;!8`6Z0(wNC56?~WuW3Eg27k> zx7P*2%R+1r1JPj2OSHN%cpf*pCZa|uz&}cq8F;W0@1#z78%M>coVVDl+~7+^V@4^)G*bbIuTk<_~BO0P@^ra?$5MsHImEei*o?Wbt6C>2!~fF~XP=g7(p%mqOAbB~6= z+8~MrL|r==ewfh`!|!QGwH07tDqzw5^b)j< zW^LSodD0%hd47EE-NDh#juEi}Z4i=!+9SY_AjLUyV|!@lz9)6*Bg2bv^`)$0Ig=0n za`kzE=s_MroFfP+RePz^+G}erU8Uuf-m0l{XA!!`@?(i{jvAHxh6Gk+lnh@W# z*v3DAcNZrVd{7Ot=_4lun#$xiRA4C8U}M?4y69%k9q2kv^UT89ilwSy>YmY8rS%Ag zqL6i;R(m*eAIcgxd1dA;0O2xP>er~w^IXX&Ynu~wGKrdhwx92CJt0KH=cz+x8ekFp zr!ST-U+VBu0E^?CQaCveR>Sl_6Psvg7|PHP@2?X1H9MuDNEac6dQGqmQ+P2Fd|@?g zSdc0{w*hP{6ZS)Lulff#G~QnGXCaY5IeW5_D469d3{0}^^lE&@S*9&5a6c!n-Tq9P zEXJsp8R8RiWI~j6JvY+Tc*qLRHxL8DfUV->0y?P$qQN1>_MpHbI}!qp2_M_vL!5wM z6KtrC4DbN{HfFV}hfi&td`q0*>=pBG6;pG*M9nqyhk}Tjg(Ps#&O`t2;`ac9JY#gf z#rCWGM*sW0gT37Y1Tl^FcL&4%&feW0AR?U=es`!F%}@hmWU7Q(_jadno;%drO+@Kw z`%S6-gF}9){tIlc(xK-S2ipMYt-#btvu~T4nye7$5=edNv@)4ru_Q3KgbP$bvu&Ot z-di2)6^7bUPWt{f7ZV^$^4SusVD`|maPK%Wg_-e(fdyZN;of35&3^}zIV>s=4oya4 zH8E*y*N3lHMU_*?gXLHERdI&A_lD0VMqPsLffIBr+RI3`3BqQ8^0ZO(12eZxg;Xtf&N)DegeJ0 z<~aYS?s+P1sfdy@L}F8woAy7FPCsbBv+3ubO?S-9E`Yhw4<93d*~WoB5?8)MK%}} za+mrSK;KOk1^AQ$i^2q(9dIB*o^n@(I7O8x)r<&NXfAG$g35IIklGfgu+H)HwurN{ zL63D(vfs6x<0e#}AzDDB3P^%~c@^N?8^xz&oDmfC##xh|a!H_&WJ z8l&W-D?P-S*qib7j7j10POJdF3(r_Mg4zRd2vqNbrqgBj;!@GR!P@i7xiqx-qLchQ zq$5jL_U_Uq>=9dZ@-^)Z1*9@O(dG39P$SbEy21h!rM}dwk~iDQ(Z%^GP@AS2c8Y}d zVNq=IQbSD#KL-D*aZTnY$)M&0JC931jf)%)m<@1%inz+5OKqHS@p%@s806zO3)Qz4`FL{Ep1%d&{Fn-YsEEmMsALvPDb4cmD}?;)NLn$XKKz za$FzgA3B;L27pBgmvgi@?s>xMPaoN&+6gAEk=RPg5tZ05jmg!s4|FvpRV_5G+dp<_ zT!Hsaw&5yT5#Y8_wy``?o0uerxrAld8CjljvM8q)*ko50$^@#A6-2d`9ZFq0Bw&!o zA3ivcu1L>42VU0wo0QY9@MSF@fw)*u2)SQY+M+&CE~kvB0t~0U0>Q%jh#YVPVJSku zz~R~b`-lPWa8iJ60?!cm8lBL}#C-HPjDZfTP6Tz-5n&r1@ULs$s4E7+4(Y-A1d zbwMskBu_f>&BB97@`FP%ne-9KSrhXLqz6RyE}96ipbDtlZwBgQ1}Ei$P^{#jvnXMs z53?h%u-BN+M*>Tid5b2)$B`-96CtHbQ4c@V`y~P{rjfE)1+z!Go-jx{Wv4ijpoVF3 za$?8|s`=4qVMsF%^mI$`78L3WsBNsY>p`^>mZ`Q-?a;Hy#LwGn1+vn;)1K39RmN#( z05b-ME&7*y&++w?s-a~yBa-6`qQ5v6X>GBS;K`?KFuo4Xt5-dESb+>J9RVb!CrUEs zZsCthdkk8^LAJC_4M+ng?{31$yTHjfjr2ik7>|p+)CI;}#AIhH7#GjRuc5igKXaDd zNvo3P`};T8a@Zu(BV?uS(`~A*4K#sDQO}VZQ(kv$bGc(T+mQJ)_=W0n=Y81)ks}$ z<1d{hxd)rh+LBDN(GL&84#NC#U=W6)v{i!+HKFNSCa_;fpQ;COA%uV<-W>$z^g1z~ z2)tkqrI5i4Za|8_6%C-C$rEUDH#!{fm+f)RU7l6(6~<*~mUZnEiCaVpLz^kLqZwz` z+XS$QiLZ3(>=w^pRXBCg!&m0|Xuih(cyJ35TtyWEKXmNPcX=N|QxOK8{ovcld1&$=y|+s)Z9(M}DCSsv&U! zAT8n~j=^*Oj7*G|Ki@q}AKw3L=hR@PJW3Fk)tPSmbTT-qWYL%{2k9kAw?@n83%CG5 zZ(mB50q+q^A@mm8Lh5l8zTrdhH@9fh+CrJ~$0HQ`ba&^wM41Apkv(N`3iS+trqwfW)G_|~YoP7Fvk5r?+gS;85 z$MBCC-MM{3bw@n4frfCsq!io_X_}}76HWnqBB@3Jf2I!l5R)BHKA|Z)L{m*4lGNAC z9)culNS2~U!s!)0Cs-P)q<04+*2S@^Qaqn<^^Ez(0$cX>aF`)oGijG36?3|9;WsX| zn$#6jBs+^_!Euq+8Y(YPo2D5MOq>BQ%HnY9g()n+iE@Qs&4)bs2lLWYAo3xPC@Bh$ zcttz*yZ{t?$0Q-FHnb>Amx^QuC=?IP2PFhJ6Vpt6`{m2s!{hq%?ZfTIE%Y<_q38um zbWRqyK(#(;Jo+za%ScaBU9}#%{!j0(e?}bP7KDvtc#;1wGQg!AHrakgXXA!G+}Sy- zZO%H>Ftf2zMy8;{`Y3n173(O=9O;^s!b+K3&D{Vc%}WK>oa&7xje0vy*wzT9oyefwO}LtNgydE8R-iyqbzyQ0vS_4}KIGe9JrLD6l6 zQ=wf}?jCVHR*(Z$evDS`K4gVr;-)@vPPuyCu9*Xj!Celrj*_21LnLpUs!-`vf>hmB zIwhfkBm(ZKtag_zHKZe*xk-~RGCvtSEPDvO;T?T0gRz?wwrsdAm|*MA;b(qdmj#rZ(yYGVYLDVkI%4_heb^;F+U`j+{-bMnlML} zKcw`Tdoky;^YI*P;3Wb;j<7Z`dW_F|)gmvtx`;C^^OA!F631R9B}ZF`FLsu(@@X@v zP*M?wJzpF#47(<^ZMeQ9GC>%-TxW+!ZTLbMrs!|7LALLJx+u-KOzi2IiV-o#(p20T z87~0JcDw}H$tFdjPeeNP`-8J;lXlnq2s^(=jZjY#wU_W02i{JdN1j6aS|d+iB{5`7 z{#{{KjEhG~E-z4bK(@U^C@ZVc5^ym+1Fj@t{QvM2C~G2frx#sWfBf|J9Ww3HK6e!! zTG3cOA?Nl)dj3U8K{xe+(*}@%N7o{48)#|e%%!)K1Qv(_R{VI* z9DjmC-jm^>1}7nEkn4m~*W_wZW6xd8jO@(?4IDt}Kt+M}YsHW4AHYZ8!0T_A-9-qL zE_PlaDmZ{p!4@Dtl9D!Pt5ANg(~Dzd$m?i(hHPwB^{B#R%zT7@rew27Q;$+5t~SFw z<1!YJTtW53cmHVY&#LDJ!vsK&Z@N|me#?PO@m*nyNo3*iey)_&(^5wIRC>#ce zXtlA#vIjUt$8kQ%#Vm9ssu#!V3>h*`foRh?iw5;lN#OPM>GJgO4F0U*U(GpwW(7my zLcJRt5z|rxviQZAjlLyKgHjLbi#SF+B8Hrx5uPC>;uF@Hs)tEW5DU(hw9eFoLRc`t zbhdPc%ScK`r+B|haHdk@q+3>t_9G$YH9P6qCUMXKZGPygsM6utL00) z%sK>fX=%|K977;T!BN0dGmO|C5pD`zJybQK^h}sbF!)4lDOCZl?KNtYSd)4JWg6mx zwAMzb$U_mW(t4pQQh)#Ve`8$D_Th&1(T4V&4ebXT+WXs^0LVd|Wv>p4QBu7UHDe0# z$>hzti3Gl^{xoz=nR`1+&X*lJC#UStIZI`S&gm*Ubk1AZ0p-5i3siR4+t48yvo?KZ z>agiEQ-@8TnL2Fx%+vvCm!GM00FCBQmx6G~V@^hNT^nQN)>4;`<4RjQ(eBy#z+?jh zgBJz<%(-d?tHrT|q`FDZu(Ls?Km|>PNHoh9)4eAPmC|Rm=`!SF}-uFh@=fAty<=^J~4!a0KjN$gfE4Yp>amdPzm$ z0V2ikWPvkvg<)yFSyO6)o%4`t5$TR#?WzS~U+F&eLYxp#oyhI;-XFnqhQQ|lioL}P zo-2Phi2u`1wZg$z5olLCo?U@E-jGMZEH!urp9Jpm93^U+-LWsRFna^A^2~LY76cxs zSP)kt)6 zDhA0eq^ z>2}=#uHJ<~(BZlibmKh^Qun-v$Hjh@WKE2&?Lz^;4hS}x;Rk*<{6p>hYZCTCF|8=z z-3HGIk8QLU&#`^OBLFJ16qx}uf;2WMqhX-%^bgnRNLNDjkl>)wX&K7``(nO3;XqAR2;)vB-oedNc+|;-Bm&yIupsTck<7_ zMlPX}nA36tgvVyR!_2H$OXQ`3i`f)zM=Q8%Q!e+G!^_nP{E@Er4tl9GI4soKTtmzM zi+5=rtOjzC$~(kvFhKATGS4Fr<}~k;y9LxJb%IU`z zZjT*wj5n2jA%!4sDMcfZooyX)hm$rj`Mo47eD=&1S zs0NyzE_^)(D{Qz9L5HHTfW)G_d@R_U$%N1N>A#yP+-I#4oBc>h}exMuE9g+Ajx`oUz zbKY>eIkT?btw7p=7*ld-8bKm!Tx+>J0sS`w291|5y^GvMyotM}fk5_6N8D=m(E*EI z!aD(85bh^Q!Ne&Da`T*>^?dK!(L|!{$)}Gnjo*VX z@lBa_ITCTBK!nrHz&BDx7YDC0gbUUDNALfnBx-0Nf;P`3aV5rB^CXViIzBWd%Btee z%PUy3>a9u&l41IY6pQi{!zgJ0+M48&?ATKHx=yiD91Om#0NM-#?J7S!oa?cV?SLug zAy5p@o>bThtAQa8MvPE2_;08fQZF{0FAp8Nr0&fwP=f>^em5N54ZN}9xyGql!pHIv%P4MIhb{`sZmY@V+mnP@XPSHuY(U=B|QUF<-zqN%Wg|Z)%W;%P-gF6vSL(Fu=!@$4|_UEplx~X9oXh*tO_zVg$VR0uT zED&ylM>D;GO&-!9Xr)T_KM*v#E~Yz$B)4R}h)6a-JD$<=9t_D+IEy$voJSH|{M6o# z&5)5s>qWL7njLghY4}9AXoG#N!N5pKfyz5N=oOrG z3Z9?`a2S*tJYQ-`d8%h~C_0{~{ga`3XtQ{1O~aZ{-BPG~a4cM>V~JA=Pz^D`+pPpK z|IUmQG6Vz*h8M<)(DAx|RJq+WK{#Yj9WX)j9eRi}wLBoLvxArJ zi6HwaW%{J?Dg095lrmYpoV|`$k@GSRrrkwvAwA`yofDtdb6tVbcS%4~f)_8YRyObn zF2))D6j{Z+y)C9Y(Q0f8;Uc>VUnFFN&N#t24Q$|`6WtxCB@g}#F7rBZqUoR2dGwTNyq|CgHufa0)I~b?p zb2jvF&jC*JELI;fhx8qoq_LMMsbcnur*?OcnZn}2kno?5T$9@mAASV?B4b4bc?^)p zVWD{WdVC3QnmNLtkC2A|>D?C)bWTo>PrS;`Q(d$#f+lqPiWoU4V1{fJy!cdEOQWA& z8%~E2yBS5yDqTj|ZmW3r@c#3kr?-!{W8%V(cgQG*Jw$;3?0=`CA;I(j9;f9A<@Dt> z*8VK=?4xWWUly99QlV0|>lw6PQ0Sq{nUpM+={u55d7>#4A%%)%K1R6|IcHh2-z$^P z7VAGvfVS&{D{ANv8?2QOGg)OILl?+VNnaT`SH>79u7Rv*geoT~)3Wd2v6e{*E-uW* zB5GYYFu3dkN?W=A6nnG@YWU&qZ*s%kmltlJ1D4ohJq6_CI-ZebOpYpB${h$P!QyI2h1P4&Hl-B|fc52B>X@Kl8aJsspMfeCgHq{=t_;91hx{-UCGcmE$z@9vs69*2cI8Z-m@Npkz8 zsYfzYV-~{@smXE>j8(J}QdjJtbJ4iPg1X3mNz(zgvsYed6+mgM&@WVGk#L&Qj9%8X z2zD5_+gGb025>-MwTMM*+9nj8lRc#&luJ!)= zKT^Dn2g31A!pQJjLP(HF-S6=Y*)Y`V48I}M#2=%64 z6}ucX8)i>vH>Jk90w)79*6VD=OR{|O`Rl_S6fxo=#S!l?F+fgf*`4>Y(Mby;>>I{3 zmy@YU&q#Jd<)J*En-gg0R-ez)6>4^YSYlTrH=DL~Xoo9^Mr9&VBz{a@eYrt%SgNK9 z=b+G5$(&!g!iAhMcv8*~RI{pI8W4~ocJ7p^N143k8q6%T2ff`Y88GdZ{2WwNTJ_vEf@%u%;{MPq%n6e*XNAa6ghyR?#`Y zP^$j1*WU=95IoojM)}k~_J$k5GlEAO!6yXoYy=+>yi2ewAYJY%#byy9uGy?--&hT5 zrPTwGm#);R|0x!_NBU7*>%4Mpa&aa7DpoB+mZ5E-lZ;h=3Z<0m_o;&oZGNeE!9dBQ z@$8wpuiR7FoYE0hjsR)TGq=vRdpKq{S(SwAXGiimeoFrlc$V`4u;X z13+yO&{ESth`21I{ey8Z_~XU-wFk!-yH0OlCi%OWS};XiGyq75{W ze!kpAp?r+La0c3TXDK?H!Z*)CN6Frp|DDuB>0Da`w<{0D(>$HiuG(hFo8eb)v&tn8 zlKf&iXHG-O2ibtJ{cXYoTdp1;>prL$+zMc*CbPmSC_{AEU7mz+<4 zSdpW|N*~=n{Kog|uPl+(W(0!nbsUO>ga6w6xjApq`Pcb9UFhFxEcVGbDL7tRLZ#0e#hU z1dk--_G>uzJ&g9h`_J{quOA+T;V^G-+066SAX^m-7}0iqcmEd5kr{ax2<0fD=t<&L z>zf;$O3srbFhhEv8$x}rH({D#3&R7Yz9Wg#pFj4tSiAQ5HW)GxbW6!V%PW&C9Gx;K z6=BtDi!0zSqy?M7HTmf30wLu8!e_XK4&#{JT+Lm}9#9CpiqpfbL6t z5Vj+zBDO86h5S91TI;WeWNr!%g*%|D3_T-OFjs=->rP`+3DnS(vZ0b*q00_u^vM2vcINB~*Y;w1a_ua1TxzL_7uIJJycz%5 zj*0P2*#I_XC7)F8iZE4DwNUasO_(0SsgCTxu@;VM3y5_k@xzdD3$TWif%#IOkf)X7 zJ+3Fcg&1>si~=(r7ivK2oX#hgRHOco8qI zK%w8a0=+RmzGGbX@36dpK4mcTSJvLdzF@)$(+zkb6pDzZ!2e@&*g17+tn8pW_+hmC zP@t4}hOsaq!X{!Vr`N1U5i%TcE7 zU`MInj&DeBjYyI5d)))2507(xUB2YqcrD_{;Z^l3!pNa#vVDY5icT_z#}6u4wqq_I zAHKeMWNg;a!>5ne@88~intZx{_ugv2(V&UkYa2V+WJE@WvUZTM23QzV7LE3)EZQ|T z%TEawE6qH(O?NeRZR7s4wX)ISgTVJOqc!p^P?w5tsXnEbQ9%>rdx6SNoGm|}Jf7Sq z;m3anviZ^l93>cI?M#bcf_)8S{d5kllMzjSFxw%$62T*eTzELXKpY!gM0o!9w-IMT z;u1PiPipBQ*%;vtuu~+yHlV5m_mBSTMbA4of?_~;5fsy;mxf7NZrqt*a;wwz48aty z@(({;dx-*echkAZGwa%j>_~x+_|;X6Oe^DMj6y|2*^TJ|BTWX}`C9Nw-Ty0vm&wK@$r0Zo%IUnvCx(rEM% zwr;M^Zn0?q?Xk?9LUIS}2K+cXhrfXCa%4iTu?e>u<%cqv1NAK?^UE`N#9>!rv)8Fr z7tQ>uj$=D}*(?>5E}dZbZOTVold1p9|O*oYGvs85sWHnfl{Y)8U;)*%rxbSamhhNuB;kHKA$FMxem5+ zX<s%IDf<&MInYk3-L;OMw44h>aAXN09?>K+W4tlQ7n|rX5Al4H~fI22!zfz!X zOn*v1mS>=Ns62A*+NMV(BF2l!NpG)tLt`>bn~RzD+clmrKT2t@z2F0{0P2dZ;I)%x zXW_W9ufhx4IfuSv9Se?^!HDGub+{<$x3K}piiY8TYcLrfl{Yp1a3u(1jF6&IoSH$9klZ!P65b&Ae%Fy4W(kk*V%v|Xp=u24p}y8$Au%aq;m#J zpR1h5yBQx+AcIk-VX)9#B&_i5n-)YT0m#9Yhq#;Tg;kPzL+<9#vE(Uk2%>J2`;DKZrNySisiiTHyasM7lXI-`+pDUFl( zm~@8|-$nz3Rb34e1Sbdn zsjE|HHjv{53@jXA)Y9*Nw3V7Z>dczp@lSzIH8Dgo@(rJfTC?pT**u5H(q zvPbBM$7?d4Y;)BOT)Iq+2jPcdFzH%b zoHv*k3FBd*`QWyc4u`$vqcx-oF#Xa~(p7HP)6zZL6l6Uiwf#=2Bg^na6UzGV{o}>g zk3S-Xx?QGfL?+)rz^&DQ*DAN0J#Z1F#IG?Yt%&I*%x0b` z(U&gy`FHxV7EsMTHw^Xn2)k%z1*|~oEFm6lYu)Na^siy1i4^Xkpcyj)v2y zOC#-ry+oY=*cX^m64_6_+kVxb@14AizivsyhcJVRZvkMYjned7s5g1pS&wHh z0W3d#eRy*hPeFm;t`H*n8I>SodNI*B7ch%$G^r-A<~HebC}=I=8?e$>40f-WHGt@t z1!ci&s;+E=^Tve->!JtFVt+P0o~3Z!&MpIWc@9rvIObe3)h&%4CCaWL8e-@O2Ru!t z>+#5?xJa!!N-hNVy%G}n__LSV=7C?<)@Jq$VWinL1BuU|jfLZ)T23#3vVfvYd2`L5 zk=V;S)>h3X6_GRwL67HCZj}v*VxZUo55~+n3aHFIPVs~x2huG8n@k|h3CSR~B=d<$ zB=AaFwEwtXyL7rqsgwM9`lh;ro~o>#%44RaCo|CA*?OcfmQ#8E{!$0?jst#<$w%7H zdgjsaOqdf>qdWpayg73K_JS=7)9WI(Rc( zAlus2*=WDCVWn9-al{M8fO{LsnGi(0 z?(7O2Ky_GE+OW921w(%_Uc#Z!@IU~+T3s@>r_~~Q&P|1^hehnCuKWx5ByM8_9ax}? z()9(wv^Ujoky1~APsYvM&n_n;uY{~H=ae6Og4w%S5h<)^R)YDfC%iLyasw<`T4WU8wK^34H*|D zCZ@&lbu%$xhTK$FnI=jV7%`*J()1}Uas(7!LWun>qN9o!C@B5;8`58dO$Owk3%*NR@e zMh?c&(Su}d?%j=`_(_VSKI6u`| zJ6B=0mqO>fi}#<58H@vOuB$UePa*L8Xy!iLUT3f5!feU2-J&(!;uZ~!qw)&T6D7?C zcTr&|ZMO6@XFIgt+LDG#hV)DwLy!H+ z@kVY?FAkhFZ70j+CRtG+9X+XpMkNOBW&Ib3bOmz1PS$ad!*4121v}y(J)CHVEYP27 z9>^|jtcB^Bk+L`ruHx%D4ow-LwSX=NH=Q#tx znLpfpL7+WnhURq|oU>UN^i}PN8>&E>Z!qr)_k{7e9qtqmUv{r!(J08oy#sz5d)}ox zmZCM=C&{uh3VRbQppm49v{KG|tX#|U^Hkm_riY~v;y~yl53-6 z;MJVWR~we6IfMqe7vdMI;z9-H`4<#fn;NzKYzmK8JY%T#QD3S@)1+kdfA)$tXWR0i zDRA;eYzGF5Ra2SXmmhDx^|rpe|KE3?-q~N+5SiI%=!_946*(igDHXIUwdl=7sw4AD zh4Q3Cpiqss_J5N{?dZ^)((?<%W9NCqrQR-%A%%K`_APw7<;`{l6^Oo>q^qd~1nDcW zLkHLfLR_WYLuWy)ZBp@f)$qN#X9&EauCx+$5nqF1|M}*g&6lTV$PKaXF`e%AXtcXM zIvDJ15BtOZ-FN+6m1waYW63$7bZg}AIGZblhkYp5mUD#>W7{2?Xc`y3UHGL8t`^-e zDWJ?t&;`bTQ83IDVG&sDC8SI8l{nZj}YUtddgY_82{Y|g`-a}EkV?cnm@e% z^zi=iZ^sXxzJ7jx{}brICQy!4zqy#+%p{EH%;{1SVHRMFNFIU*yYvt|*f(v1ti*ED z)Bco$;bP@=38H2hafEb4lkt3Yg`x*I$Y3HWg$0cineM;?%SsjXw#X%$vo~UXR^o_k z1sN8_70h{<;k);P!RYR!r;)tD9A9FZvR$(l=R?`V_bWHF21wndW~gW>rZeIETIzgt<wgx zG)`ybc1V_}a61%-q`OMD!?fQQXO}k3#Oab8VWfi`X;P$qFC;-?$eEwLxV!+_ZgRN@ zsYaL3pkPn@0Ox<|DT6LT;O|7S-?Bwu)YM|2R0rH6QR^0Eb7s??N+MyICljlNq@TdaZW|uZ&Rb{Bw*^%Q zkGK!}W-e30J%!WP3t=@J<}0v-FwD_($81?e7f^`PdlcBae{=WUeLRnmw%>#> z0wg+Pl!v@nsGgmopj_RE&z;`A!^q*tD%43wV1~gh@gQ<*XNTj-%Oza{ZN$l5KyNng z3oHlktZW4V%QMnZOF;Zs!EmS9lVv>Tlu^IPCAz7T9SU0QvF%o~(<7&GibeO`uNnnM zH#cG97<=DB*fz5fCi-!JKKTw(WsVjm-F7+{2pE|1{R zY78860MH@7NG|Tz+K3`z+1tdjA=0bJi=vqrP47iOQ_SbmR2atdHmTk< z1>8_1-pgeQ2ymXDgs7`V66u>fcRvThzz;ATIicwxN1_Cd7}jBVoI=4q?#@b@OYE?N zUYd_O5Dj>jtlz9uTSCUojN80JYOPW(2D1#bevRp8B0g}eCUZd6js1!$SF9c7hTX99 z+NrBH?^7MIlX)^iT3<_h3caZ`+znXTixXt90+FxsSYZPL)o>dZj4&^a59TlB?5vzq z`Z$V2KuS_-lp?VYQe$IFV9o4{OUJDJUv$huG?dOSw}+Mfglez6$Xo#VzvSjKKHA{o zb3$R7j_2B@+)&#Gd2kh)aQqMM42y5f2$39@3&`yp5jyOy)l&pAa1Y%JoVPfdoHVUO zHB9SZ6S^n+NF;>rZ7I40Xnlw+xb=;33`FvN_1IRr2o^C z#XgQYeop%MZRCtotr_#|xvt2KD?L^>U#45(frqK`Eo4<~=!`dmfqS)n*@%Gu_!*K3 zRD}qEU;o9$5I8krNArACdm0S`-`3T!Z)XOq&i*E~Hjcl{EzoP{$LX~xn?#w7ur3!O zi*Cu_S%V25GTh{pE=@UOzhcnaQ0+4^(5r8A_7w~n~s(axH1WC`bpdcN? zcyU3~Nk5ZuWj(1Go0QI%C!ISpxy~J*9yOg)8bF&lVrSc*oko%Xsq+L$hNgEve*Fo& z*f}QZ8nbf=1=3CrL9Jmve<6SB2y#qLcGh%`iYkJ@6w$9k2rchu%zT}1CSh2WI;wg3WzESi7slE! zGd)zN#>n`EP=fJ7UW}R{sm%uUs`voT_Lk%hM@Id@Vw$j#a?}DVRgHQGF>>U8Y)okd zDrS_2z(Y1_qE9=0mf~$e%TBdZb3Jlcmw)H3zOg0Qb z+cQ*}*&X$M_u&Io4lAT)YDkv8zX|iEnUtOM`Vh&sk0E7Ml zl+rCq5#-VP`S!!Vn~@2>5cbOW^2O}c4aJ7Cru^@p|0@#k9s}c{fH0r)@4f%&{q@i9 zk@S^a;rPIt@QfFmZhY?L64Q-aa80vajpMk2i2@T(uWd4Tu&N)OTDCH8CEsU$kcKLK z>W5Tez_}PXEZi(=1;g}#PF$%WGmz`A{A5i$&?<yL3%p^d=er#kmcyHf#GzLVXzml;8#dikO z%qV7w-^7)QcOMUBch# zi7s?}GTaCWF&x0ktyz<;gCHHkVzGi!}>7r>%2H-|8F=+ z^@m@fG{ANRKFf%3#-FyJR6C3P!`TIAI8465yzt|TEfUlfK7~`T)N7`?)w?{-!Sy<_ zhT?4u7rDGbML5!Qp0SHd&~hnR3r}T(#qg-LP|!}8zfDi!O&W@H?8yRsP??jPFrU&i zcKA)DdcJyP9%Fb+7ek}Zv|}{5fO@tN=_Fkdd;8@MTsgw}jcF?qOAekD+%VEhNEMrW z?y)46HUKy!<%~v>8IJQv3=9Jw5cW`cOxV!B>-BB1XeF4RB}oGHb&Um*%A3>OLMaW1 zmVC}wY%6%9fNX99Jz2~+O8L-BG$}OpdX4J>w-X}u7JR(0`L5NqYybv@aQgW0{>@`A zeuSCL)4IV1(U55^tK03{w}mSKl^s;IDPEvdcFgCMa%}9XdX_s43KzOEp%JL%S9^QI zo%PKLtid=bRJ|KUN0NvWya!7Lj|Jy=+>{|SRl&8*QUpEHFtdKpYGJM)L(jUj7o4cA zOKJQEF=#@yJLyq_+}~MFqI$tB=&&u&g1)ysT3zn((3``cYbuFbQVqF*nB{z_HPc5N zF3s6LIR&|#NL+zUt4bx8c4G78k3B}^em>17>eyv6B~X8KBkA|BH~tiqRm zvQ3w^4(65#I-dM9d+O$wx!Ew0=MhR~WM6n;sRYw<**7vP1!lOsD7G}GF+P<1y??{( z7`Y?-!<}JZ&yJ6_rB3%@dT6ZRB+6`>ryFwoyeFI9!b9Fe#B^ zfM-mgzA!LYPKBz2Mg(+^`Shd$F7T>N2DZq3g-KQva&hwViQEGPE&%DIqMb{|mh$m|GXy=lUdflFS&HJ5vfVKnXpXn<} z$q&a@Q_3q)$*J(vf|(--;I@JvA$Vbq6*Ewpnf6vsS()~-ktv>}nqYV-{6VlcOBM+> zrTS8yDaAvvX8FES=PbkUp@nz)hga9P+l3uVZ93WDzj(+7^*6s_38{_e~30%_Yk&@DHEoi%$FuPhhmoiNkL*r|bDy!_y@w&?$ z&h+r<2cyH~(yiY9ogh8)%jK!coYtA|bq7PEO(ah*GSwpF-{r z4#yEbW(h7p_)ci0E+AsyR8dL7wlZ*q?K=68=3y~U0RfKj$(9E2vjJo~gfl={T&b7!HXYD}g5mxG=e@m(xChk@n7_onr#qy)1+y1;>C)}a zG(RIaR4vR} z8KS)F$E%qw?P{z|RhQ{ii|f?^bX~#(&bu57#o~Y#hd%sli%|V-y3?9C0`g=jKl{vh3k6IZR~Ja^41YVEe$gys+zJ-u z6dBmWg<2^=2 z)|12*kBSB??r}zdpeRV55!BvDwDAf+e+Ja25cQwf0ln^y0Xig+DfAf#Iz$D%(>uixID z3Pm7Tbo}9`Pv@WB-eInmC)o6CIy=6U;(}MAbtw@k1~W>&Z{!@4-U=Ckq5Wav_eK*V z^t#+heX4`6>gu8i*OxYBZ02z(0EweVyOuPg9p4YZ`YFlE9v9{iy0iakT4lN7tuD6i zwfxGd43$j*QP-NRc!tPAw#~|_fe{6LNx|MiXNL0)~3!I*r4Wij9=hJ34 zjr^Ga>n4dFvZQwg1UW=qO>I9v9z&IPL8kTkyzlW+Xr$dxt)~}o?_&IgF`TED{a`qd zr~zz8edL|xFi`poZHYnNH9Zc#*(j34wf_@xgYrMD97Cm-e{c=bvx!Wyei!9#g-{Cp zE}B9Cc#rg%NbF(TUKu__j)WwLH6)k}9D(eX7^DFSsxQR={4_zV=3rvsorNF*SbF*F z&0IgAMK5s0+4G9LyH#p7zB--+z8W6(WT4GVEDjonhGO@!>PX&ZG!5gowgUW>p<6nd zA&?k8ZSXXN8;zYwup*G6g^po4rK^i>b~ceiV?`?dMFNSGT6&jXLwfE}Y_tb}^PRn#!xRH!*R#n4TA9h@+XWCW z>PN~b(P%Sz&VvpIAkV$7W8dEwCv-`!0Q$9KZn#QSZ-Q7Ca#KoZ<5e(U*ZCr?!It#LR_$2`d8 z;J}5!_hJm)p_Bp0!E%YMznEPrs~wlO1%%6+K}Fg{$vnGU_MDF}5}avq4n8l!NQ)H= zI+~b-pme$zKeL}`Ds5H#=U4@&&*7RGs#L8q6OuWnWWoNiu7K$7quZTM+*~2R0GYx{ zD}4iGZ-dfQmD^_#Y1yZk42D*LD)eh>V8IGxuf&dn%M0wmb#Wn{J*F)%z!AKR5g$EY zTwSaW$*U&}wbgJ6`9p8Z?F*LZh24MO8xEc$&T7jafcIGpH6X~d>Wff>G7g$vl3JF! zLmEBUMMoYKE9AM__-c`dj$Y{zktq#0l=6h05feYrF;4cAW#w9~F7gK&Cr zx@zj5xQ{YS4>FAa$}x}}Q0A$eI-5}4Vu;8KZ77JfE8S@Umyj1`!}vSuly@|Mz$K7< zk2lnY7pV9ExoXa5hA%okp@i$U5=D9Lmxx~|LF!vE308k1?NP@Con3sk&gP^>9aOPE z=^Oh*MF}hrX4y69c(74+Yf@i55YMl;7S2)j*Db2}xa+#yG0{`&5=c4J%WQyii(8CtWn zkIsTY^JDRYeo|}T3VfU70(m%Pu|RBnc6wpr%7(5Y1NCO@L==Xq*+J^~sM7OyJBEo? z+o&Z~Og=L%M7Gw-HTF0tk$$YTOmZkNkJPd7k9`H=EfiA9sSUW#rAm4IQqqsJ zjHpyRsSc$`R#~US`XJ+Cs}feq%!Rf1`~Z{eyX_C}|8lqW?&Bkhle~EM9+8Vb!^ZdU z)AOE9nJu}OAM*=-l2T9_r0OU&9g+oj#+eJ9g&(m#mACa5lz4dm>3-{X-!E=I z9-(-o{H$$vk(mJbKajPgvUUDC35oZ*d?eu=USg4>y5tv|u-IkU@4!VvcSC52h?RSS z@j#`@bPpo7*q>&jCK8fm_~-us-||&&2eU;{X*fWnuw2$mtyA+FB}47GZXIA1EQ zc3$G{4wwZg$jMMDYA-nqV)1`dGAuq0Li68O;w#m(13H z{+ktpWQrCfOf2k8BKieg$lfm9<*K(OVb9@vGrb$*#Ql7?xcm6&@$TmKFLz%*iz*gC z2-_t%xT;g+ID})F*XeRQTM(|zDkob=ZZ;?z;g^Qo!M*Crx4AOTE{~h}NNlGkpk}Ux ztp|<$-qArfDpV6huMEf6swq7-lEl7tFIt`iJ;WtkF9Q`<+S{2|^8f=CAHeBl=sfp& zg|mS9VncU#aCL;&z1C(RcN$8@EF?;7v`g@oHQbqjsG?-rD3Sz)Q6$BKB!Y(0&^h@m zEbw5?=6mKWvq9~jp_*SjBgi%Ch$WijDu5Db-63K{Hk{?l<|0x6E1|k2IK9QI%ZsQb zC%mQAG8c1*D7q?L%(uS=tI72?ZheEj+Y-(cI=7-cEA^!i!}D5VJCB+cUy`Ss3|8^z z9_Zug(|D8O$~?%29|hz9cKb-ItpC<7<1FN?PxA$opV}L$C?MMP1GJv-F>obuVhG8+ z>zT8K`5(aBi$G`;&dz$-U3+?Wc4R0yLCLVhY>?8tbW2pHpD zlH9gDLzYo-(^*aw^UM_G6XsZtB)nWs?xaTEVQn++7|tx2H~B`Sbcak$kP_b6z+dWiCXfO zJiOMbkw>Z&HitA`CraT0QI1(3pN-@O;6nF^6172AGc)fI!fYjbT05GRk-7s(lstuU z8OK+^G>+@(G{&Cw1ViZYOeIP)%6UhP(rDK+gqMI8lKCj&%89Sk?w_1&>L4N5C6`wh zt34`OY{B6R;Svky8}4zCGVos-X#9AG`lSW;=bJJGA`#LY#62!@1%-B?jhmcUQxEyW z2L0p@&-m8q=>isJ<_J-ii==HhJe{g~C{6%`DR}m*dw+n-3?hVXu6~R1SGTuRznSJp zjR>?>@Y5x-Fe1}TNX45Q8px;6aw?u#Hyed(c!CZtA7+80x7KvG?*k5%*LuQ#IoimqE%b9Ul3d zU7racCDX2jLZ$&sn+S7ZmN+sK`WaK`yH7LH?xY8pt{5lyaQWKkIT5W*6tk;aD08pb zz&Bv_$w(3uu^*--EA$@(c7%K6eu=Ggdv&4t3x<*qjg=2`jTqLqOS8G-DlzOyn)cwo zwVaVofNIL|i<&&tC@ii(W^D?p{>s&r2yVJ{Lubsw5o5xB^$qGQds*q4OA}esE!S6~ z;%;rzR*R~zKW+k(?_;e~vzCi@ME-A}HJB`T0F;Q4@l7QkHXx9PP?1mI-MnlrQ?#3Orbv6+?u>DZJ%03u0nJ8MRRt)zBHO*Y7?(e7t=Gy2X|a0?G zjqom(^P-2CQH%jj+2y=(*ej3*UVe)!!u-pm@1^-AL>}34(}fmaOHn#^c~ni+RGeyV z7HTa?UFkOoJDUZ9NT$fPL{=P7RyW+h6mC|K921NiaSu&}rRp*zT1k>vrMlFn#@Pll z3p?h`|Igf;Hn(wQ*`oR>2zT7NluL3D04H^K)qNlc4kZpS0BWfFZXjrivKb|jZjy4@ zw>$c`zqQuh`wW>0ithUG+7%@tbDx~f*=Ntg41XOFyVh7$>r5jf{(VVeN1>=Hbh@O7=)5TrykL#ev z$e2TX*owIHHZbu@%{RV!6F-cE#3J}f&8|yYC#N0lBB9{nv|cChddSjKt0f@;{em)# z%|$cCxiv*I<2YgrC}6@2=+ObT9{-TEM?MAy7%r032N3aJOf`qdfPQQeS6hjD!yLm`Y>Acp|)Qm!;c>20|{1W9P4 zo`+sEAPXr`MSwy|Wy16>$@rKQET*O?p4DF{q`v1}g6dFLYYoMRyXqnO;kt`n)kQ%D zS)WW!&XA6_e?k`o(BVofahU<6({tegw*7dqI> z(jMV=g^VU{LMdL7ZD9h7Q+Bag91o>)9?QSry@WYkyc?fByN) z-PQ5~e6fYYy`kL?g?Qc#H_csRkUl18T|Bu)nCpf5NA9sA|f|ns1*%FW5tb8p=08Q_$KvL;d=TT)I{Tp(~6tO>p^${Y$reD^d zTmUrC&GB5y<^Eq44FQ`wM4l7mm?ZlJhC&jh`J&pc7PSFf94GS;Jj5JjDtZ*S#$V~e zke-WE!h9F^-ogY`x2UZEwlLoF@n$*;rJvj1o<@_y;vHt9l|gB{FGF=N(s6`3vM7O* zbR2=!2lpP$DMu&KBIk}b2k35Ey4s9d8h1Ltx{TC?^{be7`8^_F*AM?HJ6RTiCrGfb z*RO`d7y zgY=nPbmF`OE7G~PWEE%ip;TBQR|3CwS(g_a7Q__knrrbxdTTy_CW`S0(UVQMd49O! z{Kks&=t?fJpd}ZO_9=7wsi+O?IbM7t714z)2L2qdOC<7SIzXjgngn6WT?(wopw+lOgz^Ls-Z>U-q~BR zW5@qJD^uSFm|E;5B0NaeD@44qM5yUG$_N~tOphlh7R5r@iSCqk$eQfcb@SCGOgC4`8ML|a+U4`!rOiJhRp8z*{7~4+mRJC^+rzej-p=Y~ z5;)zi-XhUdHWN(4g_62IJXkmb=||Dsn02W?%5tzsE31BhvPu>p0t`b2T6Z9^0T4*6 z+dD3~1KM$Eo$@-=1N@(9p(2Z!_Gf_JvV+Vk3W&_TDFC&zH-S z{HkN9UVxH>-dbtg$~%@U+BnCgOPVk&LJS^PA^ip75Ydq(JMyaS}qV03C>u>t!sHISg|;z zRLnJROT~1GLOjSX?s+V0ZqlY?kbYJc>PUEzxf$<>^@nqQ6%utoaSc~KWjyGPVSgHe8osu9th% z?srEDRrBAX4j^>NQ#{nSFl2`R0TH<2XkNr$WKQZYhS%crEX6CzI9 zQZyvG0Y=d`VU&*o%wRN{qPfA*er*t-eWXo4CpB}|%~j2B5B zajQo%ascB<6B)UMf}4oP+S_Xe(bllEP!d3x=!!%gc+X8UW7>Q^XDhHku9kY06cQQq z20!U~J7#h347K%N^iVh-2XJ%24c5|7e5Vi*NUe$p#45-FH{e#|FnlS}sxk{IgG{Z% zPod$+&B-h1Qk5bfqJawn0}2A7(W0U(@;eddsX1>CmQ^-&p4eT1O#0Q#pc@LgYaAiMkflV4&NCh{X2co3gv} z%XK8Ul_64x+dWi)-^ZNpEAchCUND>)pjG0DnQROaTZs0GZptoGMgbD~PLV2zt;u5P z$!uY}H^MIDH}8(Sz;;-SX7Ic)I90+)RId-BMUL6|(%d!z`g<>5HI?N&`qGRO_O){X9nHpAn%pnr! zPnHMhO~4)%?Dcwi@#*T$cbG#b3mN8@Hkd}cem@?+YpeDzP$COO0*yq7D^SRA zCK~YNpQ#@0|Mf*L8+F>+5}#g1BtgCr^@PL*S7?vK#eRxI&3*;P!W9Rn=P1B&L=PFf zaX1lzg2$}3RnhJN{xy^#!gX)4qN4Y;qkbNqdaydY7DOTtdU6c1RVyq7V$0ydWPO9R z*Na%eq{kvwTP&$t`2FNa68|r4)gEY2ozmxvfy?EFWIjlhGFzx%D?Wh6Q?nyU=i*Nv zLFXd*fF|5j^+o8v8Z6ER>z)O{-~zX(1^efMm`TF~PP3k65g`O&~m`SB@pbrFIs4vTReJzO`Lq3NuTWjnRAqtzeZRgJRZS;J!jxYt;MdeY?Cv zV-JD<1?SL<>GSpdCH`R8!|mUepDykn*!hF;;q`#eKcJZ`h9NQJyXEro_6zQY_7sl| zLI;p99Q^mopV~wJe)(|w`G>FFurcbWf)a7|w=ukN@-fY_<04ML(b!DP_9 zv@i;&E;cuzPSB9+3J-j=aqoWzda?d$u=8qjbA5ZKKiIr_xxG*O5-+!yC>YAX2IQ4S zX|gqj*h@6EACNvZlmo1OJNuftgt%%5Xi*s%qptEl7Q zCo~EfB1Z?2%^4ji5ad%J2%_~LK_5XKeS(YloC8rZUvxhVSxE}m2q$dHGjbQKT~9U+ z0nfWw;bxRoU{FJt7XD4qx&9ld=I|x5%pAqi$P#+`2yplP6xLs=vC{s{5V)f3RcRz- z;K~M^^o)Q;mO$xnr}$L?HCYxya|Z2kbT;4;@vSLE!T^2(RsO9DFtp?GyC~w&ZU`x4 zE2JBuWkijrR!=g6`7Un&^{)a?lpVFh zk;RgT*~W^&5g{8+(<&TJ#7nagI~9WVxjIVIf`l&5wz&PrFu4HgR-_aP_!)jBAjsgl zhL2&|1X5hAb|ZiEI?swqaR+2`dc?_ql$m`U-fyC9T6DTDDo@%gC-B&^DyX})u>(uf z)|On5An^DPDZy08zL)7ZN%OYgy=-soglpPTbn&J>Bp>SCDmLVig;=e?^Ld;#`I)DF-n{2=DK+!-M+n`Y;7`f0Ql9YQ7Jiskhil@s)VnRB`{OMwh3W2Qpwk8xbQGe5 zuu}MSN<4QDyOTPk6aEHg*k{>1m)>g72;EyYzf{zTw*V<3P*k_HFbK%0@Kx>|;g*Se zyAIB)Yu-(2L%t(--Ew~QZ(pFF_Z3Kkjn?`Dunezz#cwPRbQBgbgQ+gn z<5_z-T;B!}N}&nKQ7-2RGiC})TpMUxm^?;xu~GaDGzXDZg_1x*!hPI~Q%J%C9XK37 zpIswVp&Uc}LPQROwNT!3tE>0r_UasLwCf3%!+9l?6{izwB|?SQ0>R=(7Ghiol_F(6 zLYHc`Q!G<=2N(-D5t(=GB)oPgpP&tyk2Sd!`}5i$btI>s)M&i|OpV@?rg-ZTqPG>h zhWIyzBTZqwbZqfJH}U{unBA=61pMyDs+ew?7KTodR9sICAHkatqDM68XUG->0fkeO z0?4mZY*{ls4zXdyxsXVGg#Y_9A}zQC=^;cNZQ`=fHy|FG4#_T+N@J~92rfAXS~4P4 zQ$c(|STQR`dBH47IY47ydDpeTh*fVW-Z0$vrgJn0>0MD62~gHZoQ=g2X+Xvy`-_+j z8CVX=#ajL?4X~GGsZ~QNe{N?@Z4W4u*V?N9cmZoKLmnylT+9$ZT${+x$ETO=s32AR zLnV56J7}!GuS8F}=&=$#2{|M$*Cn(}e{ku*iBw9W5JgHy!qFO=QMs%>!Ll15bo3vm zT5p!*<0(E3m=J=}pQp$zP@`2zE6Ec83$tQK#n13C#e7K;+&F($MUbn5HmuvYoyVFR z+b_}%AFnd+D@>+m)(`Vd&;Y{M!Sk?H6#EBJ^k7vCvS9iyBQ68P-Xor_rV0MP*NDK@9Ew3?HxKo;~ko( zutPabTsc>2j}|bjM6p8kQo>Tr&LMv&4?4r1SA`76GsOeQtd+)l6lg&qq0y3_rA z=QW8Gol(&D8m5m)$S>*n@fHZ>5M7M08_NExWVtplF9#T{UYSlNGYgT1Pd@ zZAFz@j6#aGN^(!gEG`9+IdG~WwV<@dkrfk521sm>U^;3osEf&htkEDZ2I?dq*2ccI zvk#vZj5O%gayy_nGaq=>#2CWOUeh zHQGfb1;z}A^toE@$D}0bGmXlEKfpj#tx^$@Qf#Rv$kDnAHKdIvdQ3t}YxJ0`hWb`0 zM*HWndailIkhfBAQv3dDfKacr@UeD7!@@UR9v&SabHs%*4+eSKMY=ylz7$T=tB!;Y z+&8j2BEj)BasdpRlK^0PNam(kue{K$Pvt>ER z<-O7Vj$)EQmeNKAg+ZBI%a;hgWGG%5D6!uM4X9+qP=;WFXp(8JU@`%o#EzstEjvjA_wZIE2dKABav~!3P{r!F96zq>QS5^O$ zB0v%6X}884kQNH@86fyyrp+)UG;AxJFbL8tVUO7YE5+B^)0lEzuyjhd|K7X)$Tat0 z^I+x2h>oMBjPJ)QCa6sE@4dULhc9p!ax@e5pz}@5H*Up#+@W?@Og~@@kN)Zf8t;<2W54#rN715m$^+MjD zf#Rtd*1ONkY{Xj}Eq2fMTXdLKqY|noRHDcxMUhPtMTqJ6j|ASN1vsw|{S8xz?XaAp zTZ461Q8U-7e2+ypWalwmg&Ycy?m`?QKb_oMAok+ThY#1cgOgj7J-)pYiU5Wh)*Vne zL?Z4UTB}5(oElVzkW=kCh6m+NJWyQJ zt7nA9Oqw(@B+{uTJJ^lTd>Jp&avQM)bTsX@tmLe*!%Rie&+>j!{K!w zpZ0{U-}?!uPWU??G1%PlU_rM5GW3Bq@aZvf`bpxZBUmB$qk{0PQD1T;WVyUY9d4;f z`B>hOLPDR;_DQ6*=^52QoN8D>Wv^Q#tHCPz&(uHLZtT`D8rL#9q z;Khs4hzUo8t)okMU29kbjn}tt4a>;)=-ncO{400MnEB}45FP!LPslsz(YtLw?QVGw zJbE`oM?dA=80h?@aZg-_{u39X|HPH(KXEDgPh1PM?s(ewK5_mAPn^HO6X$R6#Q7UM zasCERoWH@7=I;&V-KS09;ECv5(DX;~dGN#q89s4AhEH0M0~UgQ`p73Op6>ai<#47a%%Z2PAn*9Zm)u%D@f}fT_i2wtr^2TWeBwJo)O^|VZ>~UDGRV@|9}qR%%f|g&$)f2C@-GDZBP? zj<+b!6-8U2)WME)QdH0PGxqW{?;$XS=GndX=Ho4nHKy|DN5`}r&xZNpo0*#or8H-i z38px$Dd>vfiT1HHXmr6hsylX%(9I=GLluYflqDv$=(3VXe`L?B^&`MR zhE-ir#BM%_n1l8JT_=o|Wg55F0p}9!)?kDgesS|LLUDmmR93>GmG>aGXA^984rD1! zW-KRTg=OMWZa`)*wP7?5P-nB|LW>DJ3TUc^f_IFIKA)hrGV-zQ$uzGpz+gbd2sMeM z^-pH7xdoMQYZNR_d)N0gNZIh)8&r#Um|gK-G;z`b!YqX1t;l?;EiN>aC6FcywxH?J za0PBOL3mR$o-lM3zuvWW9M51Bo-;t|*NQN;4ydR@>Uo}i_}k|KaiRcSJ<>%ph!9u{ z#ptWE1c^pI>7g84EgJezL6!N;r3JJB(hSj@cF52*Iqb~q1X3VfoHRqF3f^pOND-G0 z;Sjb8YVvRm2>s+5MmI$#t?nuA52SB%*(<~1@@V$`;l<4d=62^5Up2%`0;O-u3NNyRe+fR1*i9E72|MK>n&TXMO`=f+FX5d=Vh9JyI?<=71Z%!TRRbG@ zyNI2(l#&!Y?HMMzsLZ?(xd!^-F(*@ol}*RM+tykCRHyurr8;QFwCK8�s#!ypkp& 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 literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/TP4_INIT_TFT.list b/TP4_INIT_TFT/Debug/TP4_INIT_TFT.list new file mode 100644 index 0000000..e279048 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_INIT_TFT.list @@ -0,0 +1,6808 @@ + +TP4_INIT_TFT.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00002850 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00000964 0800298c 0800298c 0000398c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 080032f0 080032f0 0000505c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 080032f0 080032f0 000042f0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 080032f8 080032f8 0000505c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 080032f8 080032f8 000042f8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 080032fc 080032fc 000042fc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000005c 20000000 08003300 00005000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000001b0 2000005c 0800335c 0000505c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 2000020c 0800335c 0000520c 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000505c 2**0 + CONTENTS, READONLY + 12 .debug_info 0000629e 00000000 00000000 00005085 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000016c7 00000000 00000000 0000b323 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 000006d8 00000000 00000000 0000c9f0 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000512 00000000 00000000 0000d0c8 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155d9 00000000 00000000 0000d5da 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 00007c47 00000000 00000000 00022bb3 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 00084a13 00000000 00000000 0002a7fa 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000af20d 2**0 + CONTENTS, READONLY + 20 .debug_frame 00001c78 00000000 00000000 000af250 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000b0ec8 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000005c .word 0x2000005c + 8000158: 00000000 .word 0x00000000 + 800015c: 08002974 .word 0x08002974 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000060 .word 0x20000060 + 8000178: 08002974 .word 0x08002974 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void affiche_nombre(char nombre[], uint8_t col, uint8_t ligne) { + 80004b0: b580 push {r7, lr} + 80004b2: b086 sub sp, #24 + 80004b4: af02 add r7, sp, #8 + 80004b6: 6078 str r0, [r7, #4] + 80004b8: 460b mov r3, r1 + 80004ba: 70fb strb r3, [r7, #3] + 80004bc: 4613 mov r3, r2 + 80004be: 70bb strb r3, [r7, #2] + int nombre_int = atoi(nombre); + 80004c0: 6878 ldr r0, [r7, #4] + 80004c2: f002 f99d bl 8002800 + 80004c6: 60f8 str r0, [r7, #12] + + if (nombre_int < 0 || nombre_int > 9999) { + 80004c8: 68fb ldr r3, [r7, #12] + 80004ca: 2b00 cmp r3, #0 + 80004cc: f2c0 8087 blt.w 80005de + 80004d0: 68fb ldr r3, [r7, #12] + 80004d2: f242 720f movw r2, #9999 @ 0x270f + 80004d6: 4293 cmp r3, r2 + 80004d8: f300 8081 bgt.w 80005de + return; + } + + uint8_t mil = nombre_int / 1000; + 80004dc: 68fb ldr r3, [r7, #12] + 80004de: 4a42 ldr r2, [pc, #264] @ (80005e8 ) + 80004e0: fb82 1203 smull r1, r2, r2, r3 + 80004e4: 1192 asrs r2, r2, #6 + 80004e6: 17db asrs r3, r3, #31 + 80004e8: 1ad3 subs r3, r2, r3 + 80004ea: 72fb strb r3, [r7, #11] + uint8_t cen = (nombre_int / 100) % 10; + 80004ec: 68fb ldr r3, [r7, #12] + 80004ee: 4a3f ldr r2, [pc, #252] @ (80005ec ) + 80004f0: fb82 1203 smull r1, r2, r2, r3 + 80004f4: 1152 asrs r2, r2, #5 + 80004f6: 17db asrs r3, r3, #31 + 80004f8: 1ad2 subs r2, r2, r3 + 80004fa: 4b3d ldr r3, [pc, #244] @ (80005f0 ) + 80004fc: fb83 1302 smull r1, r3, r3, r2 + 8000500: 1099 asrs r1, r3, #2 + 8000502: 17d3 asrs r3, r2, #31 + 8000504: 1ac9 subs r1, r1, r3 + 8000506: 460b mov r3, r1 + 8000508: 009b lsls r3, r3, #2 + 800050a: 440b add r3, r1 + 800050c: 005b lsls r3, r3, #1 + 800050e: 1ad1 subs r1, r2, r3 + 8000510: 460b mov r3, r1 + 8000512: 72bb strb r3, [r7, #10] + uint8_t diz = (nombre_int / 10) % 10; + 8000514: 68fb ldr r3, [r7, #12] + 8000516: 4a36 ldr r2, [pc, #216] @ (80005f0 ) + 8000518: fb82 1203 smull r1, r2, r2, r3 + 800051c: 1092 asrs r2, r2, #2 + 800051e: 17db asrs r3, r3, #31 + 8000520: 1ad2 subs r2, r2, r3 + 8000522: 4b33 ldr r3, [pc, #204] @ (80005f0 ) + 8000524: fb83 1302 smull r1, r3, r3, r2 + 8000528: 1099 asrs r1, r3, #2 + 800052a: 17d3 asrs r3, r2, #31 + 800052c: 1ac9 subs r1, r1, r3 + 800052e: 460b mov r3, r1 + 8000530: 009b lsls r3, r3, #2 + 8000532: 440b add r3, r1 + 8000534: 005b lsls r3, r3, #1 + 8000536: 1ad1 subs r1, r2, r3 + 8000538: 460b mov r3, r1 + 800053a: 727b strb r3, [r7, #9] + uint8_t uni = nombre_int % 10; + 800053c: 68fa ldr r2, [r7, #12] + 800053e: 4b2c ldr r3, [pc, #176] @ (80005f0 ) + 8000540: fb83 1302 smull r1, r3, r3, r2 + 8000544: 1099 asrs r1, r3, #2 + 8000546: 17d3 asrs r3, r2, #31 + 8000548: 1ac9 subs r1, r1, r3 + 800054a: 460b mov r3, r1 + 800054c: 009b lsls r3, r3, #2 + 800054e: 440b add r3, r1 + 8000550: 005b lsls r3, r3, #1 + 8000552: 1ad1 subs r1, r2, r3 + 8000554: 460b mov r3, r1 + 8000556: 723b strb r3, [r7, #8] + + displayChar_TFT(col, ligne, mil + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + 8000558: 78fb ldrb r3, [r7, #3] + 800055a: b298 uxth r0, r3 + 800055c: 78bb ldrb r3, [r7, #2] + 800055e: b299 uxth r1, r3 + 8000560: 7afb ldrb r3, [r7, #11] + 8000562: 3330 adds r3, #48 @ 0x30 + 8000564: b2da uxtb r2, r3 + 8000566: 2302 movs r3, #2 + 8000568: 9301 str r3, [sp, #4] + 800056a: 2300 movs r3, #0 + 800056c: 9300 str r3, [sp, #0] + 800056e: f64f 73e0 movw r3, #65504 @ 0xffe0 + 8000572: f001 ffc7 bl 8002504 + displayChar_TFT(col + 12, ligne, cen + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + 8000576: 78fb ldrb r3, [r7, #3] + 8000578: b29b uxth r3, r3 + 800057a: 330c adds r3, #12 + 800057c: b298 uxth r0, r3 + 800057e: 78bb ldrb r3, [r7, #2] + 8000580: b299 uxth r1, r3 + 8000582: 7abb ldrb r3, [r7, #10] + 8000584: 3330 adds r3, #48 @ 0x30 + 8000586: b2da uxtb r2, r3 + 8000588: 2302 movs r3, #2 + 800058a: 9301 str r3, [sp, #4] + 800058c: 2300 movs r3, #0 + 800058e: 9300 str r3, [sp, #0] + 8000590: f64f 73e0 movw r3, #65504 @ 0xffe0 + 8000594: f001 ffb6 bl 8002504 + displayChar_TFT(col + 24, ligne, diz + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + 8000598: 78fb ldrb r3, [r7, #3] + 800059a: b29b uxth r3, r3 + 800059c: 3318 adds r3, #24 + 800059e: b298 uxth r0, r3 + 80005a0: 78bb ldrb r3, [r7, #2] + 80005a2: b299 uxth r1, r3 + 80005a4: 7a7b ldrb r3, [r7, #9] + 80005a6: 3330 adds r3, #48 @ 0x30 + 80005a8: b2da uxtb r2, r3 + 80005aa: 2302 movs r3, #2 + 80005ac: 9301 str r3, [sp, #4] + 80005ae: 2300 movs r3, #0 + 80005b0: 9300 str r3, [sp, #0] + 80005b2: f64f 73e0 movw r3, #65504 @ 0xffe0 + 80005b6: f001 ffa5 bl 8002504 + displayChar_TFT(col + 36, ligne, uni + 0x30, ST7735_YELLOW, ST7735_BLACK, 2); + 80005ba: 78fb ldrb r3, [r7, #3] + 80005bc: b29b uxth r3, r3 + 80005be: 3324 adds r3, #36 @ 0x24 + 80005c0: b298 uxth r0, r3 + 80005c2: 78bb ldrb r3, [r7, #2] + 80005c4: b299 uxth r1, r3 + 80005c6: 7a3b ldrb r3, [r7, #8] + 80005c8: 3330 adds r3, #48 @ 0x30 + 80005ca: b2da uxtb r2, r3 + 80005cc: 2302 movs r3, #2 + 80005ce: 9301 str r3, [sp, #4] + 80005d0: 2300 movs r3, #0 + 80005d2: 9300 str r3, [sp, #0] + 80005d4: f64f 73e0 movw r3, #65504 @ 0xffe0 + 80005d8: f001 ff94 bl 8002504 + 80005dc: e000 b.n 80005e0 + return; + 80005de: bf00 nop +} + 80005e0: 3710 adds r7, #16 + 80005e2: 46bd mov sp, r7 + 80005e4: bd80 pop {r7, pc} + 80005e6: bf00 nop + 80005e8: 10624dd3 .word 0x10624dd3 + 80005ec: 51eb851f .word 0x51eb851f + 80005f0: 66666667 .word 0x66666667 + +080005f4
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80005f4: b580 push {r7, lr} + 80005f6: b082 sub sp, #8 + 80005f8: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80005fa: f000 fa75 bl 8000ae8 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80005fe: f000 f817 bl 8000630 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 8000602: f000 f891 bl 8000728 + MX_SPI1_Init(); + 8000606: f000 f859 bl 80006bc + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 800060a: f000 f9f0 bl 80009ee + init_TFT(); + 800060e: f001 fe6f bl 80022f0 + MAX7219_Clear(); + 8000612: f000 fa23 bl 8000a5c + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + char nombre[] = "4090"; + 8000616: 4b05 ldr r3, [pc, #20] @ (800062c ) + 8000618: 603b str r3, [r7, #0] + 800061a: 2300 movs r3, #0 + 800061c: 713b strb r3, [r7, #4] + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + affiche_nombre(nombre, 10, 80); + 800061e: 463b mov r3, r7 + 8000620: 2250 movs r2, #80 @ 0x50 + 8000622: 210a movs r1, #10 + 8000624: 4618 mov r0, r3 + 8000626: f7ff ff43 bl 80004b0 + 800062a: e7f8 b.n 800061e + 800062c: 30393034 .word 0x30393034 + +08000630 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000630: b580 push {r7, lr} + 8000632: b092 sub sp, #72 @ 0x48 + 8000634: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000636: f107 0314 add.w r3, r7, #20 + 800063a: 2234 movs r2, #52 @ 0x34 + 800063c: 2100 movs r1, #0 + 800063e: 4618 mov r0, r3 + 8000640: f002 f966 bl 8002910 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000644: 463b mov r3, r7 + 8000646: 2200 movs r2, #0 + 8000648: 601a str r2, [r3, #0] + 800064a: 605a str r2, [r3, #4] + 800064c: 609a str r2, [r3, #8] + 800064e: 60da str r2, [r3, #12] + 8000650: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000652: 4b19 ldr r3, [pc, #100] @ (80006b8 ) + 8000654: 681b ldr r3, [r3, #0] + 8000656: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 800065a: 4a17 ldr r2, [pc, #92] @ (80006b8 ) + 800065c: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000660: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 8000662: 2302 movs r3, #2 + 8000664: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000666: 2301 movs r3, #1 + 8000668: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 800066a: 2310 movs r3, #16 + 800066c: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 800066e: 2300 movs r3, #0 + 8000670: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000672: f107 0314 add.w r3, r7, #20 + 8000676: 4618 mov r0, r3 + 8000678: f000 fd52 bl 8001120 + 800067c: 4603 mov r3, r0 + 800067e: 2b00 cmp r3, #0 + 8000680: d001 beq.n 8000686 + { + Error_Handler(); + 8000682: f000 f8e5 bl 8000850 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000686: 230f movs r3, #15 + 8000688: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 800068a: 2301 movs r3, #1 + 800068c: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800068e: 2300 movs r3, #0 + 8000690: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 8000692: 2300 movs r3, #0 + 8000694: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8000696: 2300 movs r3, #0 + 8000698: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 800069a: 463b mov r3, r7 + 800069c: 2100 movs r1, #0 + 800069e: 4618 mov r0, r3 + 80006a0: f001 f86e bl 8001780 + 80006a4: 4603 mov r3, r0 + 80006a6: 2b00 cmp r3, #0 + 80006a8: d001 beq.n 80006ae + { + Error_Handler(); + 80006aa: f000 f8d1 bl 8000850 + } +} + 80006ae: bf00 nop + 80006b0: 3748 adds r7, #72 @ 0x48 + 80006b2: 46bd mov sp, r7 + 80006b4: bd80 pop {r7, pc} + 80006b6: bf00 nop + 80006b8: 40007000 .word 0x40007000 + +080006bc : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 80006bc: b580 push {r7, lr} + 80006be: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 80006c0: 4b17 ldr r3, [pc, #92] @ (8000720 ) + 80006c2: 4a18 ldr r2, [pc, #96] @ (8000724 ) + 80006c4: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 80006c6: 4b16 ldr r3, [pc, #88] @ (8000720 ) + 80006c8: f44f 7282 mov.w r2, #260 @ 0x104 + 80006cc: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 80006ce: 4b14 ldr r3, [pc, #80] @ (8000720 ) + 80006d0: 2200 movs r2, #0 + 80006d2: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80006d4: 4b12 ldr r3, [pc, #72] @ (8000720 ) + 80006d6: 2200 movs r2, #0 + 80006d8: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 80006da: 4b11 ldr r3, [pc, #68] @ (8000720 ) + 80006dc: 2200 movs r2, #0 + 80006de: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 80006e0: 4b0f ldr r3, [pc, #60] @ (8000720 ) + 80006e2: 2200 movs r2, #0 + 80006e4: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 80006e6: 4b0e ldr r3, [pc, #56] @ (8000720 ) + 80006e8: f44f 7200 mov.w r2, #512 @ 0x200 + 80006ec: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 80006ee: 4b0c ldr r3, [pc, #48] @ (8000720 ) + 80006f0: 2200 movs r2, #0 + 80006f2: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 80006f4: 4b0a ldr r3, [pc, #40] @ (8000720 ) + 80006f6: 2200 movs r2, #0 + 80006f8: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 80006fa: 4b09 ldr r3, [pc, #36] @ (8000720 ) + 80006fc: 2200 movs r2, #0 + 80006fe: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8000700: 4b07 ldr r3, [pc, #28] @ (8000720 ) + 8000702: 2200 movs r2, #0 + 8000704: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 8000706: 4b06 ldr r3, [pc, #24] @ (8000720 ) + 8000708: 220a movs r2, #10 + 800070a: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 800070c: 4804 ldr r0, [pc, #16] @ (8000720 ) + 800070e: f001 fa89 bl 8001c24 + 8000712: 4603 mov r3, r0 + 8000714: 2b00 cmp r3, #0 + 8000716: d001 beq.n 800071c + { + Error_Handler(); + 8000718: f000 f89a bl 8000850 + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 800071c: bf00 nop + 800071e: bd80 pop {r7, pc} + 8000720: 20000078 .word 0x20000078 + 8000724: 40013000 .word 0x40013000 + +08000728 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000728: b580 push {r7, lr} + 800072a: b08a sub sp, #40 @ 0x28 + 800072c: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800072e: f107 0314 add.w r3, r7, #20 + 8000732: 2200 movs r2, #0 + 8000734: 601a str r2, [r3, #0] + 8000736: 605a str r2, [r3, #4] + 8000738: 609a str r2, [r3, #8] + 800073a: 60da str r2, [r3, #12] + 800073c: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 800073e: 4b40 ldr r3, [pc, #256] @ (8000840 ) + 8000740: 69db ldr r3, [r3, #28] + 8000742: 4a3f ldr r2, [pc, #252] @ (8000840 ) + 8000744: f043 0304 orr.w r3, r3, #4 + 8000748: 61d3 str r3, [r2, #28] + 800074a: 4b3d ldr r3, [pc, #244] @ (8000840 ) + 800074c: 69db ldr r3, [r3, #28] + 800074e: f003 0304 and.w r3, r3, #4 + 8000752: 613b str r3, [r7, #16] + 8000754: 693b ldr r3, [r7, #16] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000756: 4b3a ldr r3, [pc, #232] @ (8000840 ) + 8000758: 69db ldr r3, [r3, #28] + 800075a: 4a39 ldr r2, [pc, #228] @ (8000840 ) + 800075c: f043 0301 orr.w r3, r3, #1 + 8000760: 61d3 str r3, [r2, #28] + 8000762: 4b37 ldr r3, [pc, #220] @ (8000840 ) + 8000764: 69db ldr r3, [r3, #28] + 8000766: f003 0301 and.w r3, r3, #1 + 800076a: 60fb str r3, [r7, #12] + 800076c: 68fb ldr r3, [r7, #12] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 800076e: 4b34 ldr r3, [pc, #208] @ (8000840 ) + 8000770: 69db ldr r3, [r3, #28] + 8000772: 4a33 ldr r2, [pc, #204] @ (8000840 ) + 8000774: f043 0302 orr.w r3, r3, #2 + 8000778: 61d3 str r3, [r2, #28] + 800077a: 4b31 ldr r3, [pc, #196] @ (8000840 ) + 800077c: 69db ldr r3, [r3, #28] + 800077e: f003 0302 and.w r3, r3, #2 + 8000782: 60bb str r3, [r7, #8] + 8000784: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOD_CLK_ENABLE(); + 8000786: 4b2e ldr r3, [pc, #184] @ (8000840 ) + 8000788: 69db ldr r3, [r3, #28] + 800078a: 4a2d ldr r2, [pc, #180] @ (8000840 ) + 800078c: f043 0308 orr.w r3, r3, #8 + 8000790: 61d3 str r3, [r2, #28] + 8000792: 4b2b ldr r3, [pc, #172] @ (8000840 ) + 8000794: 69db ldr r3, [r3, #28] + 8000796: f003 0308 and.w r3, r3, #8 + 800079a: 607b str r3, [r7, #4] + 800079c: 687b ldr r3, [r7, #4] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 800079e: 2200 movs r2, #0 + 80007a0: 2101 movs r1, #1 + 80007a2: 4828 ldr r0, [pc, #160] @ (8000844 ) + 80007a4: f000 fca4 bl 80010f0 + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_SET); + 80007a8: 2201 movs r2, #1 + 80007aa: 210e movs r1, #14 + 80007ac: 4825 ldr r0, [pc, #148] @ (8000844 ) + 80007ae: f000 fc9f bl 80010f0 + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); + 80007b2: 2201 movs r2, #1 + 80007b4: 2104 movs r1, #4 + 80007b6: 4824 ldr r0, [pc, #144] @ (8000848 ) + 80007b8: f000 fc9a bl 80010f0 + + /*Configure GPIO pins : PC0 PC1 PC2 PC3 */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + 80007bc: 230f movs r3, #15 + 80007be: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80007c0: 2301 movs r3, #1 + 80007c2: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80007c4: 2300 movs r3, #0 + 80007c6: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80007c8: 2300 movs r3, #0 + 80007ca: 623b str r3, [r7, #32] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80007cc: f107 0314 add.w r3, r7, #20 + 80007d0: 4619 mov r1, r3 + 80007d2: 481c ldr r0, [pc, #112] @ (8000844 ) + 80007d4: f000 fafc bl 8000dd0 + + /*Configure GPIO pin : PB15 */ + GPIO_InitStruct.Pin = GPIO_PIN_15; + 80007d8: f44f 4300 mov.w r3, #32768 @ 0x8000 + 80007dc: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80007de: 2302 movs r3, #2 + 80007e0: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80007e2: 2300 movs r3, #0 + 80007e4: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80007e6: 2300 movs r3, #0 + 80007e8: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + 80007ea: 2303 movs r3, #3 + 80007ec: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 80007ee: f107 0314 add.w r3, r7, #20 + 80007f2: 4619 mov r1, r3 + 80007f4: 4815 ldr r0, [pc, #84] @ (800084c ) + 80007f6: f000 faeb bl 8000dd0 + + /*Configure GPIO pin : PD2 */ + GPIO_InitStruct.Pin = GPIO_PIN_2; + 80007fa: 2304 movs r3, #4 + 80007fc: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80007fe: 2301 movs r3, #1 + 8000800: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000802: 2300 movs r3, #0 + 8000804: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000806: 2300 movs r3, #0 + 8000808: 623b str r3, [r7, #32] + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 800080a: f107 0314 add.w r3, r7, #20 + 800080e: 4619 mov r1, r3 + 8000810: 480d ldr r0, [pc, #52] @ (8000848 ) + 8000812: f000 fadd bl 8000dd0 + + /*Configure GPIO pin : PB7 */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + 8000816: 2380 movs r3, #128 @ 0x80 + 8000818: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 800081a: 2302 movs r3, #2 + 800081c: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800081e: 2300 movs r3, #0 + 8000820: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000822: 2300 movs r3, #0 + 8000824: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + 8000826: 2302 movs r3, #2 + 8000828: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 800082a: f107 0314 add.w r3, r7, #20 + 800082e: 4619 mov r1, r3 + 8000830: 4806 ldr r0, [pc, #24] @ (800084c ) + 8000832: f000 facd bl 8000dd0 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 8000836: bf00 nop + 8000838: 3728 adds r7, #40 @ 0x28 + 800083a: 46bd mov sp, r7 + 800083c: bd80 pop {r7, pc} + 800083e: bf00 nop + 8000840: 40023800 .word 0x40023800 + 8000844: 40020800 .word 0x40020800 + 8000848: 40020c00 .word 0x40020c00 + 800084c: 40020400 .word 0x40020400 + +08000850 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000850: b480 push {r7} + 8000852: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 8000854: b672 cpsid i +} + 8000856: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000858: bf00 nop + 800085a: e7fd b.n 8000858 + +0800085c : +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 800085c: b480 push {r7} + 800085e: b085 sub sp, #20 + 8000860: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 8000862: 4b14 ldr r3, [pc, #80] @ (80008b4 ) + 8000864: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000866: 4a13 ldr r2, [pc, #76] @ (80008b4 ) + 8000868: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 800086c: 6253 str r3, [r2, #36] @ 0x24 + 800086e: 4b11 ldr r3, [pc, #68] @ (80008b4 ) + 8000870: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000872: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 8000876: 60fb str r3, [r7, #12] + 8000878: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 800087a: 4b0e ldr r3, [pc, #56] @ (80008b4 ) + 800087c: 6a1b ldr r3, [r3, #32] + 800087e: 4a0d ldr r2, [pc, #52] @ (80008b4 ) + 8000880: f043 0301 orr.w r3, r3, #1 + 8000884: 6213 str r3, [r2, #32] + 8000886: 4b0b ldr r3, [pc, #44] @ (80008b4 ) + 8000888: 6a1b ldr r3, [r3, #32] + 800088a: f003 0301 and.w r3, r3, #1 + 800088e: 60bb str r3, [r7, #8] + 8000890: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 8000892: 4b08 ldr r3, [pc, #32] @ (80008b4 ) + 8000894: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000896: 4a07 ldr r2, [pc, #28] @ (80008b4 ) + 8000898: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800089c: 6253 str r3, [r2, #36] @ 0x24 + 800089e: 4b05 ldr r3, [pc, #20] @ (80008b4 ) + 80008a0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80008a2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80008a6: 607b str r3, [r7, #4] + 80008a8: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 80008aa: bf00 nop + 80008ac: 3714 adds r7, #20 + 80008ae: 46bd mov sp, r7 + 80008b0: bc80 pop {r7} + 80008b2: 4770 bx lr + 80008b4: 40023800 .word 0x40023800 + +080008b8 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 80008b8: b580 push {r7, lr} + 80008ba: b08a sub sp, #40 @ 0x28 + 80008bc: af00 add r7, sp, #0 + 80008be: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 80008c0: f107 0314 add.w r3, r7, #20 + 80008c4: 2200 movs r2, #0 + 80008c6: 601a str r2, [r3, #0] + 80008c8: 605a str r2, [r3, #4] + 80008ca: 609a str r2, [r3, #8] + 80008cc: 60da str r2, [r3, #12] + 80008ce: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 80008d0: 687b ldr r3, [r7, #4] + 80008d2: 681b ldr r3, [r3, #0] + 80008d4: 4a17 ldr r2, [pc, #92] @ (8000934 ) + 80008d6: 4293 cmp r3, r2 + 80008d8: d127 bne.n 800092a + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 80008da: 4b17 ldr r3, [pc, #92] @ (8000938 ) + 80008dc: 6a1b ldr r3, [r3, #32] + 80008de: 4a16 ldr r2, [pc, #88] @ (8000938 ) + 80008e0: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 80008e4: 6213 str r3, [r2, #32] + 80008e6: 4b14 ldr r3, [pc, #80] @ (8000938 ) + 80008e8: 6a1b ldr r3, [r3, #32] + 80008ea: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80008ee: 613b str r3, [r7, #16] + 80008f0: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80008f2: 4b11 ldr r3, [pc, #68] @ (8000938 ) + 80008f4: 69db ldr r3, [r3, #28] + 80008f6: 4a10 ldr r2, [pc, #64] @ (8000938 ) + 80008f8: f043 0301 orr.w r3, r3, #1 + 80008fc: 61d3 str r3, [r2, #28] + 80008fe: 4b0e ldr r3, [pc, #56] @ (8000938 ) + 8000900: 69db ldr r3, [r3, #28] + 8000902: f003 0301 and.w r3, r3, #1 + 8000906: 60fb str r3, [r7, #12] + 8000908: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 800090a: 23e0 movs r3, #224 @ 0xe0 + 800090c: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 800090e: 2302 movs r3, #2 + 8000910: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000912: 2300 movs r3, #0 + 8000914: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8000916: 2303 movs r3, #3 + 8000918: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 800091a: 2305 movs r3, #5 + 800091c: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 800091e: f107 0314 add.w r3, r7, #20 + 8000922: 4619 mov r1, r3 + 8000924: 4805 ldr r0, [pc, #20] @ (800093c ) + 8000926: f000 fa53 bl 8000dd0 + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 800092a: bf00 nop + 800092c: 3728 adds r7, #40 @ 0x28 + 800092e: 46bd mov sp, r7 + 8000930: bd80 pop {r7, pc} + 8000932: bf00 nop + 8000934: 40013000 .word 0x40013000 + 8000938: 40023800 .word 0x40023800 + 800093c: 40020000 .word 0x40020000 + +08000940 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000940: b480 push {r7} + 8000942: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 8000944: bf00 nop + 8000946: e7fd b.n 8000944 + +08000948 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000948: b480 push {r7} + 800094a: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 800094c: bf00 nop + 800094e: e7fd b.n 800094c + +08000950 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000950: b480 push {r7} + 8000952: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000954: bf00 nop + 8000956: e7fd b.n 8000954 + +08000958 : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000958: b480 push {r7} + 800095a: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 800095c: bf00 nop + 800095e: e7fd b.n 800095c + +08000960 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000960: b480 push {r7} + 8000962: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000964: bf00 nop + 8000966: e7fd b.n 8000964 + +08000968 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000968: b480 push {r7} + 800096a: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 800096c: bf00 nop + 800096e: 46bd mov sp, r7 + 8000970: bc80 pop {r7} + 8000972: 4770 bx lr + +08000974 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000974: b480 push {r7} + 8000976: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000978: bf00 nop + 800097a: 46bd mov sp, r7 + 800097c: bc80 pop {r7} + 800097e: 4770 bx lr + +08000980 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000980: b480 push {r7} + 8000982: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000984: bf00 nop + 8000986: 46bd mov sp, r7 + 8000988: bc80 pop {r7} + 800098a: 4770 bx lr + +0800098c : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 800098c: b580 push {r7, lr} + 800098e: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000990: f000 f8fc bl 8000b8c + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000994: bf00 nop + 8000996: bd80 pop {r7, pc} + +08000998 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000998: b480 push {r7} + 800099a: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 800099c: bf00 nop + 800099e: 46bd mov sp, r7 + 80009a0: bc80 pop {r7} + 80009a2: 4770 bx lr + +080009a4 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 80009a4: f7ff fff8 bl 8000998 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 80009a8: 480b ldr r0, [pc, #44] @ (80009d8 ) + ldr r1, =_edata + 80009aa: 490c ldr r1, [pc, #48] @ (80009dc ) + ldr r2, =_sidata + 80009ac: 4a0c ldr r2, [pc, #48] @ (80009e0 ) + movs r3, #0 + 80009ae: 2300 movs r3, #0 + b LoopCopyDataInit + 80009b0: e002 b.n 80009b8 + +080009b2 : + +CopyDataInit: + ldr r4, [r2, r3] + 80009b2: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 80009b4: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 80009b6: 3304 adds r3, #4 + +080009b8 : + +LoopCopyDataInit: + adds r4, r0, r3 + 80009b8: 18c4 adds r4, r0, r3 + cmp r4, r1 + 80009ba: 428c cmp r4, r1 + bcc CopyDataInit + 80009bc: d3f9 bcc.n 80009b2 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 80009be: 4a09 ldr r2, [pc, #36] @ (80009e4 ) + ldr r4, =_ebss + 80009c0: 4c09 ldr r4, [pc, #36] @ (80009e8 ) + movs r3, #0 + 80009c2: 2300 movs r3, #0 + b LoopFillZerobss + 80009c4: e001 b.n 80009ca + +080009c6 : + +FillZerobss: + str r3, [r2] + 80009c6: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 80009c8: 3204 adds r2, #4 + +080009ca : + +LoopFillZerobss: + cmp r2, r4 + 80009ca: 42a2 cmp r2, r4 + bcc FillZerobss + 80009cc: d3fb bcc.n 80009c6 + +/* Call static constructors */ + bl __libc_init_array + 80009ce: f001 ffad bl 800292c <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 80009d2: f7ff fe0f bl 80005f4
+ bx lr + 80009d6: 4770 bx lr + ldr r0, =_sdata + 80009d8: 20000000 .word 0x20000000 + ldr r1, =_edata + 80009dc: 2000005c .word 0x2000005c + ldr r2, =_sidata + 80009e0: 08003300 .word 0x08003300 + ldr r2, =_sbss + 80009e4: 2000005c .word 0x2000005c + ldr r4, =_ebss + 80009e8: 2000020c .word 0x2000020c + +080009ec : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 80009ec: e7fe b.n 80009ec + +080009ee : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 80009ee: b580 push {r7, lr} + 80009f0: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 80009f2: 2107 movs r1, #7 + 80009f4: 200b movs r0, #11 + 80009f6: f000 f847 bl 8000a88 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 80009fa: 2100 movs r1, #0 + 80009fc: 2009 movs r0, #9 + 80009fe: f000 f843 bl 8000a88 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000a02: f000 f809 bl 8000a18 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000a06: f000 f80f bl 8000a28 + MAX7219_Clear(); // clear all digits + 8000a0a: f000 f827 bl 8000a5c + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000a0e: 200f movs r0, #15 + 8000a10: f000 f812 bl 8000a38 +} + 8000a14: bf00 nop + 8000a16: bd80 pop {r7, pc} + +08000a18 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000a18: b580 push {r7, lr} + 8000a1a: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000a1c: 2101 movs r1, #1 + 8000a1e: 200c movs r0, #12 + 8000a20: f000 f832 bl 8000a88 +} + 8000a24: bf00 nop + 8000a26: bd80 pop {r7, pc} + +08000a28 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000a28: b580 push {r7, lr} + 8000a2a: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000a2c: 2100 movs r1, #0 + 8000a2e: 200f movs r0, #15 + 8000a30: f000 f82a bl 8000a88 +} + 8000a34: bf00 nop + 8000a36: bd80 pop {r7, pc} + +08000a38 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000a38: b580 push {r7, lr} + 8000a3a: b082 sub sp, #8 + 8000a3c: af00 add r7, sp, #0 + 8000a3e: 4603 mov r3, r0 + 8000a40: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000a42: 79fb ldrb r3, [r7, #7] + 8000a44: f003 030f and.w r3, r3, #15 + 8000a48: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000a4a: 79fb ldrb r3, [r7, #7] + 8000a4c: 4619 mov r1, r3 + 8000a4e: 200a movs r0, #10 + 8000a50: f000 f81a bl 8000a88 +} + 8000a54: bf00 nop + 8000a56: 3708 adds r7, #8 + 8000a58: 46bd mov sp, r7 + 8000a5a: bd80 pop {r7, pc} + +08000a5c : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000a5c: b580 push {r7, lr} + 8000a5e: b082 sub sp, #8 + 8000a60: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000a62: 2300 movs r3, #0 + 8000a64: 71fb strb r3, [r7, #7] + 8000a66: e007 b.n 8000a78 + MAX7219_Write(i, 0x00); // turn all segments off + 8000a68: 79fb ldrb r3, [r7, #7] + 8000a6a: 2100 movs r1, #0 + 8000a6c: 4618 mov r0, r3 + 8000a6e: f000 f80b bl 8000a88 + for (i=0; i < 8; i++) + 8000a72: 79fb ldrb r3, [r7, #7] + 8000a74: 3301 adds r3, #1 + 8000a76: 71fb strb r3, [r7, #7] + 8000a78: 79fb ldrb r3, [r7, #7] + 8000a7a: 2b07 cmp r3, #7 + 8000a7c: d9f4 bls.n 8000a68 +} + 8000a7e: bf00 nop + 8000a80: bf00 nop + 8000a82: 3708 adds r7, #8 + 8000a84: 46bd mov sp, r7 + 8000a86: bd80 pop {r7, pc} + +08000a88 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000a88: b580 push {r7, lr} + 8000a8a: b082 sub sp, #8 + 8000a8c: af00 add r7, sp, #0 + 8000a8e: 4603 mov r3, r0 + 8000a90: 460a mov r2, r1 + 8000a92: 71fb strb r3, [r7, #7] + 8000a94: 4613 mov r3, r2 + 8000a96: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000a98: 4b09 ldr r3, [pc, #36] @ (8000ac0 ) + 8000a9a: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000a9e: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000aa0: 79fb ldrb r3, [r7, #7] + 8000aa2: 4618 mov r0, r3 + 8000aa4: f000 f80e bl 8000ac4 + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000aa8: 79bb ldrb r3, [r7, #6] + 8000aaa: 4618 mov r0, r3 + 8000aac: f000 f80a bl 8000ac4 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000ab0: 4b03 ldr r3, [pc, #12] @ (8000ac0 ) + 8000ab2: 2201 movs r2, #1 + 8000ab4: 619a str r2, [r3, #24] + } + 8000ab6: bf00 nop + 8000ab8: 3708 adds r7, #8 + 8000aba: 46bd mov sp, r7 + 8000abc: bd80 pop {r7, pc} + 8000abe: bf00 nop + 8000ac0: 40020800 .word 0x40020800 + +08000ac4 : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000ac4: b580 push {r7, lr} + 8000ac6: b082 sub sp, #8 + 8000ac8: af00 add r7, sp, #0 + 8000aca: 4603 mov r3, r0 + 8000acc: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000ace: 1df9 adds r1, r7, #7 + 8000ad0: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000ad4: 2201 movs r2, #1 + 8000ad6: 4803 ldr r0, [pc, #12] @ (8000ae4 ) + 8000ad8: f001 f92d bl 8001d36 + +} + 8000adc: bf00 nop + 8000ade: 3708 adds r7, #8 + 8000ae0: 46bd mov sp, r7 + 8000ae2: bd80 pop {r7, pc} + 8000ae4: 20000078 .word 0x20000078 + +08000ae8 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000ae8: b580 push {r7, lr} + 8000aea: b082 sub sp, #8 + 8000aec: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000aee: 2300 movs r3, #0 + 8000af0: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000af2: 2003 movs r0, #3 + 8000af4: f000 f938 bl 8000d68 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000af8: 200f movs r0, #15 + 8000afa: f000 f80d bl 8000b18 + 8000afe: 4603 mov r3, r0 + 8000b00: 2b00 cmp r3, #0 + 8000b02: d002 beq.n 8000b0a + { + status = HAL_ERROR; + 8000b04: 2301 movs r3, #1 + 8000b06: 71fb strb r3, [r7, #7] + 8000b08: e001 b.n 8000b0e + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000b0a: f7ff fea7 bl 800085c + } + + /* Return function status */ + return status; + 8000b0e: 79fb ldrb r3, [r7, #7] +} + 8000b10: 4618 mov r0, r3 + 8000b12: 3708 adds r7, #8 + 8000b14: 46bd mov sp, r7 + 8000b16: bd80 pop {r7, pc} + +08000b18 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000b18: b580 push {r7, lr} + 8000b1a: b084 sub sp, #16 + 8000b1c: af00 add r7, sp, #0 + 8000b1e: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000b20: 2300 movs r3, #0 + 8000b22: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000b24: 4b16 ldr r3, [pc, #88] @ (8000b80 ) + 8000b26: 681b ldr r3, [r3, #0] + 8000b28: 2b00 cmp r3, #0 + 8000b2a: d022 beq.n 8000b72 + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000b2c: 4b15 ldr r3, [pc, #84] @ (8000b84 ) + 8000b2e: 681a ldr r2, [r3, #0] + 8000b30: 4b13 ldr r3, [pc, #76] @ (8000b80 ) + 8000b32: 681b ldr r3, [r3, #0] + 8000b34: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000b38: fbb1 f3f3 udiv r3, r1, r3 + 8000b3c: fbb2 f3f3 udiv r3, r2, r3 + 8000b40: 4618 mov r0, r3 + 8000b42: f000 f938 bl 8000db6 + 8000b46: 4603 mov r3, r0 + 8000b48: 2b00 cmp r3, #0 + 8000b4a: d10f bne.n 8000b6c + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000b4c: 687b ldr r3, [r7, #4] + 8000b4e: 2b0f cmp r3, #15 + 8000b50: d809 bhi.n 8000b66 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000b52: 2200 movs r2, #0 + 8000b54: 6879 ldr r1, [r7, #4] + 8000b56: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000b5a: f000 f910 bl 8000d7e + uwTickPrio = TickPriority; + 8000b5e: 4a0a ldr r2, [pc, #40] @ (8000b88 ) + 8000b60: 687b ldr r3, [r7, #4] + 8000b62: 6013 str r3, [r2, #0] + 8000b64: e007 b.n 8000b76 + } + else + { + status = HAL_ERROR; + 8000b66: 2301 movs r3, #1 + 8000b68: 73fb strb r3, [r7, #15] + 8000b6a: e004 b.n 8000b76 + } + } + else + { + status = HAL_ERROR; + 8000b6c: 2301 movs r3, #1 + 8000b6e: 73fb strb r3, [r7, #15] + 8000b70: e001 b.n 8000b76 + } + } + else + { + status = HAL_ERROR; + 8000b72: 2301 movs r3, #1 + 8000b74: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000b76: 7bfb ldrb r3, [r7, #15] +} + 8000b78: 4618 mov r0, r3 + 8000b7a: 3710 adds r7, #16 + 8000b7c: 46bd mov sp, r7 + 8000b7e: bd80 pop {r7, pc} + 8000b80: 20000008 .word 0x20000008 + 8000b84: 20000000 .word 0x20000000 + 8000b88: 20000004 .word 0x20000004 + +08000b8c : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000b8c: b480 push {r7} + 8000b8e: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000b90: 4b05 ldr r3, [pc, #20] @ (8000ba8 ) + 8000b92: 681a ldr r2, [r3, #0] + 8000b94: 4b05 ldr r3, [pc, #20] @ (8000bac ) + 8000b96: 681b ldr r3, [r3, #0] + 8000b98: 4413 add r3, r2 + 8000b9a: 4a03 ldr r2, [pc, #12] @ (8000ba8 ) + 8000b9c: 6013 str r3, [r2, #0] +} + 8000b9e: bf00 nop + 8000ba0: 46bd mov sp, r7 + 8000ba2: bc80 pop {r7} + 8000ba4: 4770 bx lr + 8000ba6: bf00 nop + 8000ba8: 200000d0 .word 0x200000d0 + 8000bac: 20000008 .word 0x20000008 + +08000bb0 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000bb0: b480 push {r7} + 8000bb2: af00 add r7, sp, #0 + return uwTick; + 8000bb4: 4b02 ldr r3, [pc, #8] @ (8000bc0 ) + 8000bb6: 681b ldr r3, [r3, #0] +} + 8000bb8: 4618 mov r0, r3 + 8000bba: 46bd mov sp, r7 + 8000bbc: bc80 pop {r7} + 8000bbe: 4770 bx lr + 8000bc0: 200000d0 .word 0x200000d0 + +08000bc4 : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 8000bc4: b580 push {r7, lr} + 8000bc6: b084 sub sp, #16 + 8000bc8: af00 add r7, sp, #0 + 8000bca: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000bcc: f7ff fff0 bl 8000bb0 + 8000bd0: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 8000bd2: 687b ldr r3, [r7, #4] + 8000bd4: 60fb str r3, [r7, #12] + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + 8000bd6: 68fb ldr r3, [r7, #12] + 8000bd8: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8000bdc: d004 beq.n 8000be8 + { + wait += (uint32_t)(uwTickFreq); + 8000bde: 4b09 ldr r3, [pc, #36] @ (8000c04 ) + 8000be0: 681b ldr r3, [r3, #0] + 8000be2: 68fa ldr r2, [r7, #12] + 8000be4: 4413 add r3, r2 + 8000be6: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8000be8: bf00 nop + 8000bea: f7ff ffe1 bl 8000bb0 + 8000bee: 4602 mov r2, r0 + 8000bf0: 68bb ldr r3, [r7, #8] + 8000bf2: 1ad3 subs r3, r2, r3 + 8000bf4: 68fa ldr r2, [r7, #12] + 8000bf6: 429a cmp r2, r3 + 8000bf8: d8f7 bhi.n 8000bea + { + } +} + 8000bfa: bf00 nop + 8000bfc: bf00 nop + 8000bfe: 3710 adds r7, #16 + 8000c00: 46bd mov sp, r7 + 8000c02: bd80 pop {r7, pc} + 8000c04: 20000008 .word 0x20000008 + +08000c08 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000c08: b480 push {r7} + 8000c0a: b085 sub sp, #20 + 8000c0c: af00 add r7, sp, #0 + 8000c0e: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000c10: 687b ldr r3, [r7, #4] + 8000c12: f003 0307 and.w r3, r3, #7 + 8000c16: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000c18: 4b0c ldr r3, [pc, #48] @ (8000c4c <__NVIC_SetPriorityGrouping+0x44>) + 8000c1a: 68db ldr r3, [r3, #12] + 8000c1c: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000c1e: 68ba ldr r2, [r7, #8] + 8000c20: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000c24: 4013 ands r3, r2 + 8000c26: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000c28: 68fb ldr r3, [r7, #12] + 8000c2a: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000c2c: 68bb ldr r3, [r7, #8] + 8000c2e: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000c30: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000c34: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000c38: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000c3a: 4a04 ldr r2, [pc, #16] @ (8000c4c <__NVIC_SetPriorityGrouping+0x44>) + 8000c3c: 68bb ldr r3, [r7, #8] + 8000c3e: 60d3 str r3, [r2, #12] +} + 8000c40: bf00 nop + 8000c42: 3714 adds r7, #20 + 8000c44: 46bd mov sp, r7 + 8000c46: bc80 pop {r7} + 8000c48: 4770 bx lr + 8000c4a: bf00 nop + 8000c4c: e000ed00 .word 0xe000ed00 + +08000c50 <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000c50: b480 push {r7} + 8000c52: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000c54: 4b04 ldr r3, [pc, #16] @ (8000c68 <__NVIC_GetPriorityGrouping+0x18>) + 8000c56: 68db ldr r3, [r3, #12] + 8000c58: 0a1b lsrs r3, r3, #8 + 8000c5a: f003 0307 and.w r3, r3, #7 +} + 8000c5e: 4618 mov r0, r3 + 8000c60: 46bd mov sp, r7 + 8000c62: bc80 pop {r7} + 8000c64: 4770 bx lr + 8000c66: bf00 nop + 8000c68: e000ed00 .word 0xe000ed00 + +08000c6c <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000c6c: b480 push {r7} + 8000c6e: b083 sub sp, #12 + 8000c70: af00 add r7, sp, #0 + 8000c72: 4603 mov r3, r0 + 8000c74: 6039 str r1, [r7, #0] + 8000c76: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000c78: f997 3007 ldrsb.w r3, [r7, #7] + 8000c7c: 2b00 cmp r3, #0 + 8000c7e: db0a blt.n 8000c96 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000c80: 683b ldr r3, [r7, #0] + 8000c82: b2da uxtb r2, r3 + 8000c84: 490c ldr r1, [pc, #48] @ (8000cb8 <__NVIC_SetPriority+0x4c>) + 8000c86: f997 3007 ldrsb.w r3, [r7, #7] + 8000c8a: 0112 lsls r2, r2, #4 + 8000c8c: b2d2 uxtb r2, r2 + 8000c8e: 440b add r3, r1 + 8000c90: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000c94: e00a b.n 8000cac <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000c96: 683b ldr r3, [r7, #0] + 8000c98: b2da uxtb r2, r3 + 8000c9a: 4908 ldr r1, [pc, #32] @ (8000cbc <__NVIC_SetPriority+0x50>) + 8000c9c: 79fb ldrb r3, [r7, #7] + 8000c9e: f003 030f and.w r3, r3, #15 + 8000ca2: 3b04 subs r3, #4 + 8000ca4: 0112 lsls r2, r2, #4 + 8000ca6: b2d2 uxtb r2, r2 + 8000ca8: 440b add r3, r1 + 8000caa: 761a strb r2, [r3, #24] +} + 8000cac: bf00 nop + 8000cae: 370c adds r7, #12 + 8000cb0: 46bd mov sp, r7 + 8000cb2: bc80 pop {r7} + 8000cb4: 4770 bx lr + 8000cb6: bf00 nop + 8000cb8: e000e100 .word 0xe000e100 + 8000cbc: e000ed00 .word 0xe000ed00 + +08000cc0 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000cc0: b480 push {r7} + 8000cc2: b089 sub sp, #36 @ 0x24 + 8000cc4: af00 add r7, sp, #0 + 8000cc6: 60f8 str r0, [r7, #12] + 8000cc8: 60b9 str r1, [r7, #8] + 8000cca: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000ccc: 68fb ldr r3, [r7, #12] + 8000cce: f003 0307 and.w r3, r3, #7 + 8000cd2: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000cd4: 69fb ldr r3, [r7, #28] + 8000cd6: f1c3 0307 rsb r3, r3, #7 + 8000cda: 2b04 cmp r3, #4 + 8000cdc: bf28 it cs + 8000cde: 2304 movcs r3, #4 + 8000ce0: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000ce2: 69fb ldr r3, [r7, #28] + 8000ce4: 3304 adds r3, #4 + 8000ce6: 2b06 cmp r3, #6 + 8000ce8: d902 bls.n 8000cf0 + 8000cea: 69fb ldr r3, [r7, #28] + 8000cec: 3b03 subs r3, #3 + 8000cee: e000 b.n 8000cf2 + 8000cf0: 2300 movs r3, #0 + 8000cf2: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000cf4: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000cf8: 69bb ldr r3, [r7, #24] + 8000cfa: fa02 f303 lsl.w r3, r2, r3 + 8000cfe: 43da mvns r2, r3 + 8000d00: 68bb ldr r3, [r7, #8] + 8000d02: 401a ands r2, r3 + 8000d04: 697b ldr r3, [r7, #20] + 8000d06: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000d08: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000d0c: 697b ldr r3, [r7, #20] + 8000d0e: fa01 f303 lsl.w r3, r1, r3 + 8000d12: 43d9 mvns r1, r3 + 8000d14: 687b ldr r3, [r7, #4] + 8000d16: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000d18: 4313 orrs r3, r2 + ); +} + 8000d1a: 4618 mov r0, r3 + 8000d1c: 3724 adds r7, #36 @ 0x24 + 8000d1e: 46bd mov sp, r7 + 8000d20: bc80 pop {r7} + 8000d22: 4770 bx lr + +08000d24 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000d24: b580 push {r7, lr} + 8000d26: b082 sub sp, #8 + 8000d28: af00 add r7, sp, #0 + 8000d2a: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000d2c: 687b ldr r3, [r7, #4] + 8000d2e: 3b01 subs r3, #1 + 8000d30: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000d34: d301 bcc.n 8000d3a + { + return (1UL); /* Reload value impossible */ + 8000d36: 2301 movs r3, #1 + 8000d38: e00f b.n 8000d5a + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000d3a: 4a0a ldr r2, [pc, #40] @ (8000d64 ) + 8000d3c: 687b ldr r3, [r7, #4] + 8000d3e: 3b01 subs r3, #1 + 8000d40: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000d42: 210f movs r1, #15 + 8000d44: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000d48: f7ff ff90 bl 8000c6c <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000d4c: 4b05 ldr r3, [pc, #20] @ (8000d64 ) + 8000d4e: 2200 movs r2, #0 + 8000d50: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000d52: 4b04 ldr r3, [pc, #16] @ (8000d64 ) + 8000d54: 2207 movs r2, #7 + 8000d56: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000d58: 2300 movs r3, #0 +} + 8000d5a: 4618 mov r0, r3 + 8000d5c: 3708 adds r7, #8 + 8000d5e: 46bd mov sp, r7 + 8000d60: bd80 pop {r7, pc} + 8000d62: bf00 nop + 8000d64: e000e010 .word 0xe000e010 + +08000d68 : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000d68: b580 push {r7, lr} + 8000d6a: b082 sub sp, #8 + 8000d6c: af00 add r7, sp, #0 + 8000d6e: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000d70: 6878 ldr r0, [r7, #4] + 8000d72: f7ff ff49 bl 8000c08 <__NVIC_SetPriorityGrouping> +} + 8000d76: bf00 nop + 8000d78: 3708 adds r7, #8 + 8000d7a: 46bd mov sp, r7 + 8000d7c: bd80 pop {r7, pc} + +08000d7e : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000d7e: b580 push {r7, lr} + 8000d80: b086 sub sp, #24 + 8000d82: af00 add r7, sp, #0 + 8000d84: 4603 mov r3, r0 + 8000d86: 60b9 str r1, [r7, #8] + 8000d88: 607a str r2, [r7, #4] + 8000d8a: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000d8c: 2300 movs r3, #0 + 8000d8e: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000d90: f7ff ff5e bl 8000c50 <__NVIC_GetPriorityGrouping> + 8000d94: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000d96: 687a ldr r2, [r7, #4] + 8000d98: 68b9 ldr r1, [r7, #8] + 8000d9a: 6978 ldr r0, [r7, #20] + 8000d9c: f7ff ff90 bl 8000cc0 + 8000da0: 4602 mov r2, r0 + 8000da2: f997 300f ldrsb.w r3, [r7, #15] + 8000da6: 4611 mov r1, r2 + 8000da8: 4618 mov r0, r3 + 8000daa: f7ff ff5f bl 8000c6c <__NVIC_SetPriority> +} + 8000dae: bf00 nop + 8000db0: 3718 adds r7, #24 + 8000db2: 46bd mov sp, r7 + 8000db4: bd80 pop {r7, pc} + +08000db6 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000db6: b580 push {r7, lr} + 8000db8: b082 sub sp, #8 + 8000dba: af00 add r7, sp, #0 + 8000dbc: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000dbe: 6878 ldr r0, [r7, #4] + 8000dc0: f7ff ffb0 bl 8000d24 + 8000dc4: 4603 mov r3, r0 +} + 8000dc6: 4618 mov r0, r3 + 8000dc8: 3708 adds r7, #8 + 8000dca: 46bd mov sp, r7 + 8000dcc: bd80 pop {r7, pc} + ... + +08000dd0 : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000dd0: b480 push {r7} + 8000dd2: b087 sub sp, #28 + 8000dd4: af00 add r7, sp, #0 + 8000dd6: 6078 str r0, [r7, #4] + 8000dd8: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8000dda: 2300 movs r3, #0 + 8000ddc: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 8000dde: 2300 movs r3, #0 + 8000de0: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 8000de2: 2300 movs r3, #0 + 8000de4: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8000de6: e160 b.n 80010aa + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8000de8: 683b ldr r3, [r7, #0] + 8000dea: 681a ldr r2, [r3, #0] + 8000dec: 2101 movs r1, #1 + 8000dee: 697b ldr r3, [r7, #20] + 8000df0: fa01 f303 lsl.w r3, r1, r3 + 8000df4: 4013 ands r3, r2 + 8000df6: 60fb str r3, [r7, #12] + + if (iocurrent) + 8000df8: 68fb ldr r3, [r7, #12] + 8000dfa: 2b00 cmp r3, #0 + 8000dfc: f000 8152 beq.w 80010a4 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000e00: 683b ldr r3, [r7, #0] + 8000e02: 685b ldr r3, [r3, #4] + 8000e04: f003 0303 and.w r3, r3, #3 + 8000e08: 2b01 cmp r3, #1 + 8000e0a: d005 beq.n 8000e18 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8000e0c: 683b ldr r3, [r7, #0] + 8000e0e: 685b ldr r3, [r3, #4] + 8000e10: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8000e14: 2b02 cmp r3, #2 + 8000e16: d130 bne.n 8000e7a + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8000e18: 687b ldr r3, [r7, #4] + 8000e1a: 689b ldr r3, [r3, #8] + 8000e1c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 8000e1e: 697b ldr r3, [r7, #20] + 8000e20: 005b lsls r3, r3, #1 + 8000e22: 2203 movs r2, #3 + 8000e24: fa02 f303 lsl.w r3, r2, r3 + 8000e28: 43db mvns r3, r3 + 8000e2a: 693a ldr r2, [r7, #16] + 8000e2c: 4013 ands r3, r2 + 8000e2e: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 8000e30: 683b ldr r3, [r7, #0] + 8000e32: 68da ldr r2, [r3, #12] + 8000e34: 697b ldr r3, [r7, #20] + 8000e36: 005b lsls r3, r3, #1 + 8000e38: fa02 f303 lsl.w r3, r2, r3 + 8000e3c: 693a ldr r2, [r7, #16] + 8000e3e: 4313 orrs r3, r2 + 8000e40: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 8000e42: 687b ldr r3, [r7, #4] + 8000e44: 693a ldr r2, [r7, #16] + 8000e46: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8000e48: 687b ldr r3, [r7, #4] + 8000e4a: 685b ldr r3, [r3, #4] + 8000e4c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 8000e4e: 2201 movs r2, #1 + 8000e50: 697b ldr r3, [r7, #20] + 8000e52: fa02 f303 lsl.w r3, r2, r3 + 8000e56: 43db mvns r3, r3 + 8000e58: 693a ldr r2, [r7, #16] + 8000e5a: 4013 ands r3, r2 + 8000e5c: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8000e5e: 683b ldr r3, [r7, #0] + 8000e60: 685b ldr r3, [r3, #4] + 8000e62: 091b lsrs r3, r3, #4 + 8000e64: f003 0201 and.w r2, r3, #1 + 8000e68: 697b ldr r3, [r7, #20] + 8000e6a: fa02 f303 lsl.w r3, r2, r3 + 8000e6e: 693a ldr r2, [r7, #16] + 8000e70: 4313 orrs r3, r2 + 8000e72: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8000e74: 687b ldr r3, [r7, #4] + 8000e76: 693a ldr r2, [r7, #16] + 8000e78: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8000e7a: 683b ldr r3, [r7, #0] + 8000e7c: 685b ldr r3, [r3, #4] + 8000e7e: f003 0303 and.w r3, r3, #3 + 8000e82: 2b03 cmp r3, #3 + 8000e84: d017 beq.n 8000eb6 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8000e86: 687b ldr r3, [r7, #4] + 8000e88: 68db ldr r3, [r3, #12] + 8000e8a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 8000e8c: 697b ldr r3, [r7, #20] + 8000e8e: 005b lsls r3, r3, #1 + 8000e90: 2203 movs r2, #3 + 8000e92: fa02 f303 lsl.w r3, r2, r3 + 8000e96: 43db mvns r3, r3 + 8000e98: 693a ldr r2, [r7, #16] + 8000e9a: 4013 ands r3, r2 + 8000e9c: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 8000e9e: 683b ldr r3, [r7, #0] + 8000ea0: 689a ldr r2, [r3, #8] + 8000ea2: 697b ldr r3, [r7, #20] + 8000ea4: 005b lsls r3, r3, #1 + 8000ea6: fa02 f303 lsl.w r3, r2, r3 + 8000eaa: 693a ldr r2, [r7, #16] + 8000eac: 4313 orrs r3, r2 + 8000eae: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8000eb0: 687b ldr r3, [r7, #4] + 8000eb2: 693a ldr r2, [r7, #16] + 8000eb4: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8000eb6: 683b ldr r3, [r7, #0] + 8000eb8: 685b ldr r3, [r3, #4] + 8000eba: f003 0303 and.w r3, r3, #3 + 8000ebe: 2b02 cmp r3, #2 + 8000ec0: d123 bne.n 8000f0a + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 8000ec2: 697b ldr r3, [r7, #20] + 8000ec4: 08da lsrs r2, r3, #3 + 8000ec6: 687b ldr r3, [r7, #4] + 8000ec8: 3208 adds r2, #8 + 8000eca: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000ece: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 8000ed0: 697b ldr r3, [r7, #20] + 8000ed2: f003 0307 and.w r3, r3, #7 + 8000ed6: 009b lsls r3, r3, #2 + 8000ed8: 220f movs r2, #15 + 8000eda: fa02 f303 lsl.w r3, r2, r3 + 8000ede: 43db mvns r3, r3 + 8000ee0: 693a ldr r2, [r7, #16] + 8000ee2: 4013 ands r3, r2 + 8000ee4: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8000ee6: 683b ldr r3, [r7, #0] + 8000ee8: 691a ldr r2, [r3, #16] + 8000eea: 697b ldr r3, [r7, #20] + 8000eec: f003 0307 and.w r3, r3, #7 + 8000ef0: 009b lsls r3, r3, #2 + 8000ef2: fa02 f303 lsl.w r3, r2, r3 + 8000ef6: 693a ldr r2, [r7, #16] + 8000ef8: 4313 orrs r3, r2 + 8000efa: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8000efc: 697b ldr r3, [r7, #20] + 8000efe: 08da lsrs r2, r3, #3 + 8000f00: 687b ldr r3, [r7, #4] + 8000f02: 3208 adds r2, #8 + 8000f04: 6939 ldr r1, [r7, #16] + 8000f06: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8000f0a: 687b ldr r3, [r7, #4] + 8000f0c: 681b ldr r3, [r3, #0] + 8000f0e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 8000f10: 697b ldr r3, [r7, #20] + 8000f12: 005b lsls r3, r3, #1 + 8000f14: 2203 movs r2, #3 + 8000f16: fa02 f303 lsl.w r3, r2, r3 + 8000f1a: 43db mvns r3, r3 + 8000f1c: 693a ldr r2, [r7, #16] + 8000f1e: 4013 ands r3, r2 + 8000f20: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 8000f22: 683b ldr r3, [r7, #0] + 8000f24: 685b ldr r3, [r3, #4] + 8000f26: f003 0203 and.w r2, r3, #3 + 8000f2a: 697b ldr r3, [r7, #20] + 8000f2c: 005b lsls r3, r3, #1 + 8000f2e: fa02 f303 lsl.w r3, r2, r3 + 8000f32: 693a ldr r2, [r7, #16] + 8000f34: 4313 orrs r3, r2 + 8000f36: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8000f38: 687b ldr r3, [r7, #4] + 8000f3a: 693a ldr r2, [r7, #16] + 8000f3c: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 8000f3e: 683b ldr r3, [r7, #0] + 8000f40: 685b ldr r3, [r3, #4] + 8000f42: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8000f46: 2b00 cmp r3, #0 + 8000f48: f000 80ac beq.w 80010a4 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000f4c: 4b5e ldr r3, [pc, #376] @ (80010c8 ) + 8000f4e: 6a1b ldr r3, [r3, #32] + 8000f50: 4a5d ldr r2, [pc, #372] @ (80010c8 ) + 8000f52: f043 0301 orr.w r3, r3, #1 + 8000f56: 6213 str r3, [r2, #32] + 8000f58: 4b5b ldr r3, [pc, #364] @ (80010c8 ) + 8000f5a: 6a1b ldr r3, [r3, #32] + 8000f5c: f003 0301 and.w r3, r3, #1 + 8000f60: 60bb str r3, [r7, #8] + 8000f62: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8000f64: 4a59 ldr r2, [pc, #356] @ (80010cc ) + 8000f66: 697b ldr r3, [r7, #20] + 8000f68: 089b lsrs r3, r3, #2 + 8000f6a: 3302 adds r3, #2 + 8000f6c: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000f70: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 8000f72: 697b ldr r3, [r7, #20] + 8000f74: f003 0303 and.w r3, r3, #3 + 8000f78: 009b lsls r3, r3, #2 + 8000f7a: 220f movs r2, #15 + 8000f7c: fa02 f303 lsl.w r3, r2, r3 + 8000f80: 43db mvns r3, r3 + 8000f82: 693a ldr r2, [r7, #16] + 8000f84: 4013 ands r3, r2 + 8000f86: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 8000f88: 687b ldr r3, [r7, #4] + 8000f8a: 4a51 ldr r2, [pc, #324] @ (80010d0 ) + 8000f8c: 4293 cmp r3, r2 + 8000f8e: d025 beq.n 8000fdc + 8000f90: 687b ldr r3, [r7, #4] + 8000f92: 4a50 ldr r2, [pc, #320] @ (80010d4 ) + 8000f94: 4293 cmp r3, r2 + 8000f96: d01f beq.n 8000fd8 + 8000f98: 687b ldr r3, [r7, #4] + 8000f9a: 4a4f ldr r2, [pc, #316] @ (80010d8 ) + 8000f9c: 4293 cmp r3, r2 + 8000f9e: d019 beq.n 8000fd4 + 8000fa0: 687b ldr r3, [r7, #4] + 8000fa2: 4a4e ldr r2, [pc, #312] @ (80010dc ) + 8000fa4: 4293 cmp r3, r2 + 8000fa6: d013 beq.n 8000fd0 + 8000fa8: 687b ldr r3, [r7, #4] + 8000faa: 4a4d ldr r2, [pc, #308] @ (80010e0 ) + 8000fac: 4293 cmp r3, r2 + 8000fae: d00d beq.n 8000fcc + 8000fb0: 687b ldr r3, [r7, #4] + 8000fb2: 4a4c ldr r2, [pc, #304] @ (80010e4 ) + 8000fb4: 4293 cmp r3, r2 + 8000fb6: d007 beq.n 8000fc8 + 8000fb8: 687b ldr r3, [r7, #4] + 8000fba: 4a4b ldr r2, [pc, #300] @ (80010e8 ) + 8000fbc: 4293 cmp r3, r2 + 8000fbe: d101 bne.n 8000fc4 + 8000fc0: 2306 movs r3, #6 + 8000fc2: e00c b.n 8000fde + 8000fc4: 2307 movs r3, #7 + 8000fc6: e00a b.n 8000fde + 8000fc8: 2305 movs r3, #5 + 8000fca: e008 b.n 8000fde + 8000fcc: 2304 movs r3, #4 + 8000fce: e006 b.n 8000fde + 8000fd0: 2303 movs r3, #3 + 8000fd2: e004 b.n 8000fde + 8000fd4: 2302 movs r3, #2 + 8000fd6: e002 b.n 8000fde + 8000fd8: 2301 movs r3, #1 + 8000fda: e000 b.n 8000fde + 8000fdc: 2300 movs r3, #0 + 8000fde: 697a ldr r2, [r7, #20] + 8000fe0: f002 0203 and.w r2, r2, #3 + 8000fe4: 0092 lsls r2, r2, #2 + 8000fe6: 4093 lsls r3, r2 + 8000fe8: 693a ldr r2, [r7, #16] + 8000fea: 4313 orrs r3, r2 + 8000fec: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 8000fee: 4937 ldr r1, [pc, #220] @ (80010cc ) + 8000ff0: 697b ldr r3, [r7, #20] + 8000ff2: 089b lsrs r3, r3, #2 + 8000ff4: 3302 adds r3, #2 + 8000ff6: 693a ldr r2, [r7, #16] + 8000ff8: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 8000ffc: 4b3b ldr r3, [pc, #236] @ (80010ec ) + 8000ffe: 689b ldr r3, [r3, #8] + 8001000: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001002: 68fb ldr r3, [r7, #12] + 8001004: 43db mvns r3, r3 + 8001006: 693a ldr r2, [r7, #16] + 8001008: 4013 ands r3, r2 + 800100a: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 800100c: 683b ldr r3, [r7, #0] + 800100e: 685b ldr r3, [r3, #4] + 8001010: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001014: 2b00 cmp r3, #0 + 8001016: d003 beq.n 8001020 + { + SET_BIT(temp, iocurrent); + 8001018: 693a ldr r2, [r7, #16] + 800101a: 68fb ldr r3, [r7, #12] + 800101c: 4313 orrs r3, r2 + 800101e: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001020: 4a32 ldr r2, [pc, #200] @ (80010ec ) + 8001022: 693b ldr r3, [r7, #16] + 8001024: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8001026: 4b31 ldr r3, [pc, #196] @ (80010ec ) + 8001028: 68db ldr r3, [r3, #12] + 800102a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800102c: 68fb ldr r3, [r7, #12] + 800102e: 43db mvns r3, r3 + 8001030: 693a ldr r2, [r7, #16] + 8001032: 4013 ands r3, r2 + 8001034: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001036: 683b ldr r3, [r7, #0] + 8001038: 685b ldr r3, [r3, #4] + 800103a: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 800103e: 2b00 cmp r3, #0 + 8001040: d003 beq.n 800104a + { + SET_BIT(temp, iocurrent); + 8001042: 693a ldr r2, [r7, #16] + 8001044: 68fb ldr r3, [r7, #12] + 8001046: 4313 orrs r3, r2 + 8001048: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 800104a: 4a28 ldr r2, [pc, #160] @ (80010ec ) + 800104c: 693b ldr r3, [r7, #16] + 800104e: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 8001050: 4b26 ldr r3, [pc, #152] @ (80010ec ) + 8001052: 685b ldr r3, [r3, #4] + 8001054: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001056: 68fb ldr r3, [r7, #12] + 8001058: 43db mvns r3, r3 + 800105a: 693a ldr r2, [r7, #16] + 800105c: 4013 ands r3, r2 + 800105e: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001060: 683b ldr r3, [r7, #0] + 8001062: 685b ldr r3, [r3, #4] + 8001064: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001068: 2b00 cmp r3, #0 + 800106a: d003 beq.n 8001074 + { + SET_BIT(temp, iocurrent); + 800106c: 693a ldr r2, [r7, #16] + 800106e: 68fb ldr r3, [r7, #12] + 8001070: 4313 orrs r3, r2 + 8001072: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8001074: 4a1d ldr r2, [pc, #116] @ (80010ec ) + 8001076: 693b ldr r3, [r7, #16] + 8001078: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 800107a: 4b1c ldr r3, [pc, #112] @ (80010ec ) + 800107c: 681b ldr r3, [r3, #0] + 800107e: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001080: 68fb ldr r3, [r7, #12] + 8001082: 43db mvns r3, r3 + 8001084: 693a ldr r2, [r7, #16] + 8001086: 4013 ands r3, r2 + 8001088: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 800108a: 683b ldr r3, [r7, #0] + 800108c: 685b ldr r3, [r3, #4] + 800108e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001092: 2b00 cmp r3, #0 + 8001094: d003 beq.n 800109e + { + SET_BIT(temp, iocurrent); + 8001096: 693a ldr r2, [r7, #16] + 8001098: 68fb ldr r3, [r7, #12] + 800109a: 4313 orrs r3, r2 + 800109c: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 800109e: 4a13 ldr r2, [pc, #76] @ (80010ec ) + 80010a0: 693b ldr r3, [r7, #16] + 80010a2: 6013 str r3, [r2, #0] + } + } + + position++; + 80010a4: 697b ldr r3, [r7, #20] + 80010a6: 3301 adds r3, #1 + 80010a8: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80010aa: 683b ldr r3, [r7, #0] + 80010ac: 681a ldr r2, [r3, #0] + 80010ae: 697b ldr r3, [r7, #20] + 80010b0: fa22 f303 lsr.w r3, r2, r3 + 80010b4: 2b00 cmp r3, #0 + 80010b6: f47f ae97 bne.w 8000de8 + } +} + 80010ba: bf00 nop + 80010bc: bf00 nop + 80010be: 371c adds r7, #28 + 80010c0: 46bd mov sp, r7 + 80010c2: bc80 pop {r7} + 80010c4: 4770 bx lr + 80010c6: bf00 nop + 80010c8: 40023800 .word 0x40023800 + 80010cc: 40010000 .word 0x40010000 + 80010d0: 40020000 .word 0x40020000 + 80010d4: 40020400 .word 0x40020400 + 80010d8: 40020800 .word 0x40020800 + 80010dc: 40020c00 .word 0x40020c00 + 80010e0: 40021000 .word 0x40021000 + 80010e4: 40021400 .word 0x40021400 + 80010e8: 40021800 .word 0x40021800 + 80010ec: 40010400 .word 0x40010400 + +080010f0 : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 80010f0: b480 push {r7} + 80010f2: b083 sub sp, #12 + 80010f4: af00 add r7, sp, #0 + 80010f6: 6078 str r0, [r7, #4] + 80010f8: 460b mov r3, r1 + 80010fa: 807b strh r3, [r7, #2] + 80010fc: 4613 mov r3, r2 + 80010fe: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 8001100: 787b ldrb r3, [r7, #1] + 8001102: 2b00 cmp r3, #0 + 8001104: d003 beq.n 800110e + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001106: 887a ldrh r2, [r7, #2] + 8001108: 687b ldr r3, [r7, #4] + 800110a: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 800110c: e003 b.n 8001116 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 800110e: 887b ldrh r3, [r7, #2] + 8001110: 041a lsls r2, r3, #16 + 8001112: 687b ldr r3, [r7, #4] + 8001114: 619a str r2, [r3, #24] +} + 8001116: bf00 nop + 8001118: 370c adds r7, #12 + 800111a: 46bd mov sp, r7 + 800111c: bc80 pop {r7} + 800111e: 4770 bx lr + +08001120 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8001120: b580 push {r7, lr} + 8001122: b088 sub sp, #32 + 8001124: af00 add r7, sp, #0 + 8001126: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8001128: 687b ldr r3, [r7, #4] + 800112a: 2b00 cmp r3, #0 + 800112c: d101 bne.n 8001132 + { + return HAL_ERROR; + 800112e: 2301 movs r3, #1 + 8001130: e31d b.n 800176e + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8001132: 4b94 ldr r3, [pc, #592] @ (8001384 ) + 8001134: 689b ldr r3, [r3, #8] + 8001136: f003 030c and.w r3, r3, #12 + 800113a: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 800113c: 4b91 ldr r3, [pc, #580] @ (8001384 ) + 800113e: 689b ldr r3, [r3, #8] + 8001140: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001144: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8001146: 687b ldr r3, [r7, #4] + 8001148: 681b ldr r3, [r3, #0] + 800114a: f003 0301 and.w r3, r3, #1 + 800114e: 2b00 cmp r3, #0 + 8001150: d07b beq.n 800124a + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 8001152: 69bb ldr r3, [r7, #24] + 8001154: 2b08 cmp r3, #8 + 8001156: d006 beq.n 8001166 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 8001158: 69bb ldr r3, [r7, #24] + 800115a: 2b0c cmp r3, #12 + 800115c: d10f bne.n 800117e + 800115e: 697b ldr r3, [r7, #20] + 8001160: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8001164: d10b bne.n 800117e + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001166: 4b87 ldr r3, [pc, #540] @ (8001384 ) + 8001168: 681b ldr r3, [r3, #0] + 800116a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800116e: 2b00 cmp r3, #0 + 8001170: d06a beq.n 8001248 + 8001172: 687b ldr r3, [r7, #4] + 8001174: 685b ldr r3, [r3, #4] + 8001176: 2b00 cmp r3, #0 + 8001178: d166 bne.n 8001248 + { + return HAL_ERROR; + 800117a: 2301 movs r3, #1 + 800117c: e2f7 b.n 800176e + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 800117e: 687b ldr r3, [r7, #4] + 8001180: 685b ldr r3, [r3, #4] + 8001182: 2b01 cmp r3, #1 + 8001184: d106 bne.n 8001194 + 8001186: 4b7f ldr r3, [pc, #508] @ (8001384 ) + 8001188: 681b ldr r3, [r3, #0] + 800118a: 4a7e ldr r2, [pc, #504] @ (8001384 ) + 800118c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001190: 6013 str r3, [r2, #0] + 8001192: e02d b.n 80011f0 + 8001194: 687b ldr r3, [r7, #4] + 8001196: 685b ldr r3, [r3, #4] + 8001198: 2b00 cmp r3, #0 + 800119a: d10c bne.n 80011b6 + 800119c: 4b79 ldr r3, [pc, #484] @ (8001384 ) + 800119e: 681b ldr r3, [r3, #0] + 80011a0: 4a78 ldr r2, [pc, #480] @ (8001384 ) + 80011a2: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 80011a6: 6013 str r3, [r2, #0] + 80011a8: 4b76 ldr r3, [pc, #472] @ (8001384 ) + 80011aa: 681b ldr r3, [r3, #0] + 80011ac: 4a75 ldr r2, [pc, #468] @ (8001384 ) + 80011ae: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 80011b2: 6013 str r3, [r2, #0] + 80011b4: e01c b.n 80011f0 + 80011b6: 687b ldr r3, [r7, #4] + 80011b8: 685b ldr r3, [r3, #4] + 80011ba: 2b05 cmp r3, #5 + 80011bc: d10c bne.n 80011d8 + 80011be: 4b71 ldr r3, [pc, #452] @ (8001384 ) + 80011c0: 681b ldr r3, [r3, #0] + 80011c2: 4a70 ldr r2, [pc, #448] @ (8001384 ) + 80011c4: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 80011c8: 6013 str r3, [r2, #0] + 80011ca: 4b6e ldr r3, [pc, #440] @ (8001384 ) + 80011cc: 681b ldr r3, [r3, #0] + 80011ce: 4a6d ldr r2, [pc, #436] @ (8001384 ) + 80011d0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80011d4: 6013 str r3, [r2, #0] + 80011d6: e00b b.n 80011f0 + 80011d8: 4b6a ldr r3, [pc, #424] @ (8001384 ) + 80011da: 681b ldr r3, [r3, #0] + 80011dc: 4a69 ldr r2, [pc, #420] @ (8001384 ) + 80011de: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 80011e2: 6013 str r3, [r2, #0] + 80011e4: 4b67 ldr r3, [pc, #412] @ (8001384 ) + 80011e6: 681b ldr r3, [r3, #0] + 80011e8: 4a66 ldr r2, [pc, #408] @ (8001384 ) + 80011ea: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 80011ee: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 80011f0: 687b ldr r3, [r7, #4] + 80011f2: 685b ldr r3, [r3, #4] + 80011f4: 2b00 cmp r3, #0 + 80011f6: d013 beq.n 8001220 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80011f8: f7ff fcda bl 8000bb0 + 80011fc: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 80011fe: e008 b.n 8001212 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001200: f7ff fcd6 bl 8000bb0 + 8001204: 4602 mov r2, r0 + 8001206: 693b ldr r3, [r7, #16] + 8001208: 1ad3 subs r3, r2, r3 + 800120a: 2b64 cmp r3, #100 @ 0x64 + 800120c: d901 bls.n 8001212 + { + return HAL_TIMEOUT; + 800120e: 2303 movs r3, #3 + 8001210: e2ad b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001212: 4b5c ldr r3, [pc, #368] @ (8001384 ) + 8001214: 681b ldr r3, [r3, #0] + 8001216: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800121a: 2b00 cmp r3, #0 + 800121c: d0f0 beq.n 8001200 + 800121e: e014 b.n 800124a + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001220: f7ff fcc6 bl 8000bb0 + 8001224: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001226: e008 b.n 800123a + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001228: f7ff fcc2 bl 8000bb0 + 800122c: 4602 mov r2, r0 + 800122e: 693b ldr r3, [r7, #16] + 8001230: 1ad3 subs r3, r2, r3 + 8001232: 2b64 cmp r3, #100 @ 0x64 + 8001234: d901 bls.n 800123a + { + return HAL_TIMEOUT; + 8001236: 2303 movs r3, #3 + 8001238: e299 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800123a: 4b52 ldr r3, [pc, #328] @ (8001384 ) + 800123c: 681b ldr r3, [r3, #0] + 800123e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001242: 2b00 cmp r3, #0 + 8001244: d1f0 bne.n 8001228 + 8001246: e000 b.n 800124a + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8001248: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 800124a: 687b ldr r3, [r7, #4] + 800124c: 681b ldr r3, [r3, #0] + 800124e: f003 0302 and.w r3, r3, #2 + 8001252: 2b00 cmp r3, #0 + 8001254: d05a beq.n 800130c + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 8001256: 69bb ldr r3, [r7, #24] + 8001258: 2b04 cmp r3, #4 + 800125a: d005 beq.n 8001268 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 800125c: 69bb ldr r3, [r7, #24] + 800125e: 2b0c cmp r3, #12 + 8001260: d119 bne.n 8001296 + 8001262: 697b ldr r3, [r7, #20] + 8001264: 2b00 cmp r3, #0 + 8001266: d116 bne.n 8001296 + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001268: 4b46 ldr r3, [pc, #280] @ (8001384 ) + 800126a: 681b ldr r3, [r3, #0] + 800126c: f003 0302 and.w r3, r3, #2 + 8001270: 2b00 cmp r3, #0 + 8001272: d005 beq.n 8001280 + 8001274: 687b ldr r3, [r7, #4] + 8001276: 68db ldr r3, [r3, #12] + 8001278: 2b01 cmp r3, #1 + 800127a: d001 beq.n 8001280 + { + return HAL_ERROR; + 800127c: 2301 movs r3, #1 + 800127e: e276 b.n 800176e + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8001280: 4b40 ldr r3, [pc, #256] @ (8001384 ) + 8001282: 685b ldr r3, [r3, #4] + 8001284: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001288: 687b ldr r3, [r7, #4] + 800128a: 691b ldr r3, [r3, #16] + 800128c: 021b lsls r3, r3, #8 + 800128e: 493d ldr r1, [pc, #244] @ (8001384 ) + 8001290: 4313 orrs r3, r2 + 8001292: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001294: e03a b.n 800130c + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8001296: 687b ldr r3, [r7, #4] + 8001298: 68db ldr r3, [r3, #12] + 800129a: 2b00 cmp r3, #0 + 800129c: d020 beq.n 80012e0 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 800129e: 4b3a ldr r3, [pc, #232] @ (8001388 ) + 80012a0: 2201 movs r2, #1 + 80012a2: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012a4: f7ff fc84 bl 8000bb0 + 80012a8: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80012aa: e008 b.n 80012be + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 80012ac: f7ff fc80 bl 8000bb0 + 80012b0: 4602 mov r2, r0 + 80012b2: 693b ldr r3, [r7, #16] + 80012b4: 1ad3 subs r3, r2, r3 + 80012b6: 2b02 cmp r3, #2 + 80012b8: d901 bls.n 80012be + { + return HAL_TIMEOUT; + 80012ba: 2303 movs r3, #3 + 80012bc: e257 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 80012be: 4b31 ldr r3, [pc, #196] @ (8001384 ) + 80012c0: 681b ldr r3, [r3, #0] + 80012c2: f003 0302 and.w r3, r3, #2 + 80012c6: 2b00 cmp r3, #0 + 80012c8: d0f0 beq.n 80012ac + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80012ca: 4b2e ldr r3, [pc, #184] @ (8001384 ) + 80012cc: 685b ldr r3, [r3, #4] + 80012ce: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80012d2: 687b ldr r3, [r7, #4] + 80012d4: 691b ldr r3, [r3, #16] + 80012d6: 021b lsls r3, r3, #8 + 80012d8: 492a ldr r1, [pc, #168] @ (8001384 ) + 80012da: 4313 orrs r3, r2 + 80012dc: 604b str r3, [r1, #4] + 80012de: e015 b.n 800130c + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 80012e0: 4b29 ldr r3, [pc, #164] @ (8001388 ) + 80012e2: 2200 movs r2, #0 + 80012e4: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80012e6: f7ff fc63 bl 8000bb0 + 80012ea: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 80012ec: e008 b.n 8001300 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 80012ee: f7ff fc5f bl 8000bb0 + 80012f2: 4602 mov r2, r0 + 80012f4: 693b ldr r3, [r7, #16] + 80012f6: 1ad3 subs r3, r2, r3 + 80012f8: 2b02 cmp r3, #2 + 80012fa: d901 bls.n 8001300 + { + return HAL_TIMEOUT; + 80012fc: 2303 movs r3, #3 + 80012fe: e236 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001300: 4b20 ldr r3, [pc, #128] @ (8001384 ) + 8001302: 681b ldr r3, [r3, #0] + 8001304: f003 0302 and.w r3, r3, #2 + 8001308: 2b00 cmp r3, #0 + 800130a: d1f0 bne.n 80012ee + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 800130c: 687b ldr r3, [r7, #4] + 800130e: 681b ldr r3, [r3, #0] + 8001310: f003 0310 and.w r3, r3, #16 + 8001314: 2b00 cmp r3, #0 + 8001316: f000 80b8 beq.w 800148a + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 800131a: 69bb ldr r3, [r7, #24] + 800131c: 2b00 cmp r3, #0 + 800131e: d170 bne.n 8001402 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 8001320: 4b18 ldr r3, [pc, #96] @ (8001384 ) + 8001322: 681b ldr r3, [r3, #0] + 8001324: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001328: 2b00 cmp r3, #0 + 800132a: d005 beq.n 8001338 + 800132c: 687b ldr r3, [r7, #4] + 800132e: 699b ldr r3, [r3, #24] + 8001330: 2b00 cmp r3, #0 + 8001332: d101 bne.n 8001338 + { + return HAL_ERROR; + 8001334: 2301 movs r3, #1 + 8001336: e21a b.n 800176e + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 8001338: 687b ldr r3, [r7, #4] + 800133a: 6a1a ldr r2, [r3, #32] + 800133c: 4b11 ldr r3, [pc, #68] @ (8001384 ) + 800133e: 685b ldr r3, [r3, #4] + 8001340: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 8001344: 429a cmp r2, r3 + 8001346: d921 bls.n 800138c + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001348: 687b ldr r3, [r7, #4] + 800134a: 6a1b ldr r3, [r3, #32] + 800134c: 4618 mov r0, r3 + 800134e: f000 fc09 bl 8001b64 + 8001352: 4603 mov r3, r0 + 8001354: 2b00 cmp r3, #0 + 8001356: d001 beq.n 800135c + { + return HAL_ERROR; + 8001358: 2301 movs r3, #1 + 800135a: e208 b.n 800176e + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800135c: 4b09 ldr r3, [pc, #36] @ (8001384 ) + 800135e: 685b ldr r3, [r3, #4] + 8001360: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001364: 687b ldr r3, [r7, #4] + 8001366: 6a1b ldr r3, [r3, #32] + 8001368: 4906 ldr r1, [pc, #24] @ (8001384 ) + 800136a: 4313 orrs r3, r2 + 800136c: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800136e: 4b05 ldr r3, [pc, #20] @ (8001384 ) + 8001370: 685b ldr r3, [r3, #4] + 8001372: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001376: 687b ldr r3, [r7, #4] + 8001378: 69db ldr r3, [r3, #28] + 800137a: 061b lsls r3, r3, #24 + 800137c: 4901 ldr r1, [pc, #4] @ (8001384 ) + 800137e: 4313 orrs r3, r2 + 8001380: 604b str r3, [r1, #4] + 8001382: e020 b.n 80013c6 + 8001384: 40023800 .word 0x40023800 + 8001388: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800138c: 4b99 ldr r3, [pc, #612] @ (80015f4 ) + 800138e: 685b ldr r3, [r3, #4] + 8001390: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001394: 687b ldr r3, [r7, #4] + 8001396: 6a1b ldr r3, [r3, #32] + 8001398: 4996 ldr r1, [pc, #600] @ (80015f4 ) + 800139a: 4313 orrs r3, r2 + 800139c: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800139e: 4b95 ldr r3, [pc, #596] @ (80015f4 ) + 80013a0: 685b ldr r3, [r3, #4] + 80013a2: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80013a6: 687b ldr r3, [r7, #4] + 80013a8: 69db ldr r3, [r3, #28] + 80013aa: 061b lsls r3, r3, #24 + 80013ac: 4991 ldr r1, [pc, #580] @ (80015f4 ) + 80013ae: 4313 orrs r3, r2 + 80013b0: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80013b2: 687b ldr r3, [r7, #4] + 80013b4: 6a1b ldr r3, [r3, #32] + 80013b6: 4618 mov r0, r3 + 80013b8: f000 fbd4 bl 8001b64 + 80013bc: 4603 mov r3, r0 + 80013be: 2b00 cmp r3, #0 + 80013c0: d001 beq.n 80013c6 + { + return HAL_ERROR; + 80013c2: 2301 movs r3, #1 + 80013c4: e1d3 b.n 800176e + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 80013c6: 687b ldr r3, [r7, #4] + 80013c8: 6a1b ldr r3, [r3, #32] + 80013ca: 0b5b lsrs r3, r3, #13 + 80013cc: 3301 adds r3, #1 + 80013ce: f44f 4200 mov.w r2, #32768 @ 0x8000 + 80013d2: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 80013d6: 4a87 ldr r2, [pc, #540] @ (80015f4 ) + 80013d8: 6892 ldr r2, [r2, #8] + 80013da: 0912 lsrs r2, r2, #4 + 80013dc: f002 020f and.w r2, r2, #15 + 80013e0: 4985 ldr r1, [pc, #532] @ (80015f8 ) + 80013e2: 5c8a ldrb r2, [r1, r2] + 80013e4: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 80013e6: 4a85 ldr r2, [pc, #532] @ (80015fc ) + 80013e8: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 80013ea: 4b85 ldr r3, [pc, #532] @ (8001600 ) + 80013ec: 681b ldr r3, [r3, #0] + 80013ee: 4618 mov r0, r3 + 80013f0: f7ff fb92 bl 8000b18 + 80013f4: 4603 mov r3, r0 + 80013f6: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 80013f8: 7bfb ldrb r3, [r7, #15] + 80013fa: 2b00 cmp r3, #0 + 80013fc: d045 beq.n 800148a + { + return status; + 80013fe: 7bfb ldrb r3, [r7, #15] + 8001400: e1b5 b.n 800176e + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8001402: 687b ldr r3, [r7, #4] + 8001404: 699b ldr r3, [r3, #24] + 8001406: 2b00 cmp r3, #0 + 8001408: d029 beq.n 800145e + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 800140a: 4b7e ldr r3, [pc, #504] @ (8001604 ) + 800140c: 2201 movs r2, #1 + 800140e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001410: f7ff fbce bl 8000bb0 + 8001414: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001416: e008 b.n 800142a + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001418: f7ff fbca bl 8000bb0 + 800141c: 4602 mov r2, r0 + 800141e: 693b ldr r3, [r7, #16] + 8001420: 1ad3 subs r3, r2, r3 + 8001422: 2b02 cmp r3, #2 + 8001424: d901 bls.n 800142a + { + return HAL_TIMEOUT; + 8001426: 2303 movs r3, #3 + 8001428: e1a1 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800142a: 4b72 ldr r3, [pc, #456] @ (80015f4 ) + 800142c: 681b ldr r3, [r3, #0] + 800142e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001432: 2b00 cmp r3, #0 + 8001434: d0f0 beq.n 8001418 + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 8001436: 4b6f ldr r3, [pc, #444] @ (80015f4 ) + 8001438: 685b ldr r3, [r3, #4] + 800143a: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 800143e: 687b ldr r3, [r7, #4] + 8001440: 6a1b ldr r3, [r3, #32] + 8001442: 496c ldr r1, [pc, #432] @ (80015f4 ) + 8001444: 4313 orrs r3, r2 + 8001446: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8001448: 4b6a ldr r3, [pc, #424] @ (80015f4 ) + 800144a: 685b ldr r3, [r3, #4] + 800144c: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001450: 687b ldr r3, [r7, #4] + 8001452: 69db ldr r3, [r3, #28] + 8001454: 061b lsls r3, r3, #24 + 8001456: 4967 ldr r1, [pc, #412] @ (80015f4 ) + 8001458: 4313 orrs r3, r2 + 800145a: 604b str r3, [r1, #4] + 800145c: e015 b.n 800148a + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 800145e: 4b69 ldr r3, [pc, #420] @ (8001604 ) + 8001460: 2200 movs r2, #0 + 8001462: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001464: f7ff fba4 bl 8000bb0 + 8001468: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 800146a: e008 b.n 800147e + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 800146c: f7ff fba0 bl 8000bb0 + 8001470: 4602 mov r2, r0 + 8001472: 693b ldr r3, [r7, #16] + 8001474: 1ad3 subs r3, r2, r3 + 8001476: 2b02 cmp r3, #2 + 8001478: d901 bls.n 800147e + { + return HAL_TIMEOUT; + 800147a: 2303 movs r3, #3 + 800147c: e177 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 800147e: 4b5d ldr r3, [pc, #372] @ (80015f4 ) + 8001480: 681b ldr r3, [r3, #0] + 8001482: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001486: 2b00 cmp r3, #0 + 8001488: d1f0 bne.n 800146c + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 800148a: 687b ldr r3, [r7, #4] + 800148c: 681b ldr r3, [r3, #0] + 800148e: f003 0308 and.w r3, r3, #8 + 8001492: 2b00 cmp r3, #0 + 8001494: d030 beq.n 80014f8 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8001496: 687b ldr r3, [r7, #4] + 8001498: 695b ldr r3, [r3, #20] + 800149a: 2b00 cmp r3, #0 + 800149c: d016 beq.n 80014cc + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 800149e: 4b5a ldr r3, [pc, #360] @ (8001608 ) + 80014a0: 2201 movs r2, #1 + 80014a2: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80014a4: f7ff fb84 bl 8000bb0 + 80014a8: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 80014aa: e008 b.n 80014be + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 80014ac: f7ff fb80 bl 8000bb0 + 80014b0: 4602 mov r2, r0 + 80014b2: 693b ldr r3, [r7, #16] + 80014b4: 1ad3 subs r3, r2, r3 + 80014b6: 2b02 cmp r3, #2 + 80014b8: d901 bls.n 80014be + { + return HAL_TIMEOUT; + 80014ba: 2303 movs r3, #3 + 80014bc: e157 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 80014be: 4b4d ldr r3, [pc, #308] @ (80015f4 ) + 80014c0: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014c2: f003 0302 and.w r3, r3, #2 + 80014c6: 2b00 cmp r3, #0 + 80014c8: d0f0 beq.n 80014ac + 80014ca: e015 b.n 80014f8 + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 80014cc: 4b4e ldr r3, [pc, #312] @ (8001608 ) + 80014ce: 2200 movs r2, #0 + 80014d0: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80014d2: f7ff fb6d bl 8000bb0 + 80014d6: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 80014d8: e008 b.n 80014ec + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 80014da: f7ff fb69 bl 8000bb0 + 80014de: 4602 mov r2, r0 + 80014e0: 693b ldr r3, [r7, #16] + 80014e2: 1ad3 subs r3, r2, r3 + 80014e4: 2b02 cmp r3, #2 + 80014e6: d901 bls.n 80014ec + { + return HAL_TIMEOUT; + 80014e8: 2303 movs r3, #3 + 80014ea: e140 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 80014ec: 4b41 ldr r3, [pc, #260] @ (80015f4 ) + 80014ee: 6b5b ldr r3, [r3, #52] @ 0x34 + 80014f0: f003 0302 and.w r3, r3, #2 + 80014f4: 2b00 cmp r3, #0 + 80014f6: d1f0 bne.n 80014da + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 80014f8: 687b ldr r3, [r7, #4] + 80014fa: 681b ldr r3, [r3, #0] + 80014fc: f003 0304 and.w r3, r3, #4 + 8001500: 2b00 cmp r3, #0 + 8001502: f000 80b5 beq.w 8001670 + { + FlagStatus pwrclkchanged = RESET; + 8001506: 2300 movs r3, #0 + 8001508: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 800150a: 4b3a ldr r3, [pc, #232] @ (80015f4 ) + 800150c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800150e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001512: 2b00 cmp r3, #0 + 8001514: d10d bne.n 8001532 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001516: 4b37 ldr r3, [pc, #220] @ (80015f4 ) + 8001518: 6a5b ldr r3, [r3, #36] @ 0x24 + 800151a: 4a36 ldr r2, [pc, #216] @ (80015f4 ) + 800151c: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001520: 6253 str r3, [r2, #36] @ 0x24 + 8001522: 4b34 ldr r3, [pc, #208] @ (80015f4 ) + 8001524: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001526: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800152a: 60bb str r3, [r7, #8] + 800152c: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 800152e: 2301 movs r3, #1 + 8001530: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001532: 4b36 ldr r3, [pc, #216] @ (800160c ) + 8001534: 681b ldr r3, [r3, #0] + 8001536: f403 7380 and.w r3, r3, #256 @ 0x100 + 800153a: 2b00 cmp r3, #0 + 800153c: d118 bne.n 8001570 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 800153e: 4b33 ldr r3, [pc, #204] @ (800160c ) + 8001540: 681b ldr r3, [r3, #0] + 8001542: 4a32 ldr r2, [pc, #200] @ (800160c ) + 8001544: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001548: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 800154a: f7ff fb31 bl 8000bb0 + 800154e: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001550: e008 b.n 8001564 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8001552: f7ff fb2d bl 8000bb0 + 8001556: 4602 mov r2, r0 + 8001558: 693b ldr r3, [r7, #16] + 800155a: 1ad3 subs r3, r2, r3 + 800155c: 2b64 cmp r3, #100 @ 0x64 + 800155e: d901 bls.n 8001564 + { + return HAL_TIMEOUT; + 8001560: 2303 movs r3, #3 + 8001562: e104 b.n 800176e + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8001564: 4b29 ldr r3, [pc, #164] @ (800160c ) + 8001566: 681b ldr r3, [r3, #0] + 8001568: f403 7380 and.w r3, r3, #256 @ 0x100 + 800156c: 2b00 cmp r3, #0 + 800156e: d0f0 beq.n 8001552 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8001570: 687b ldr r3, [r7, #4] + 8001572: 689b ldr r3, [r3, #8] + 8001574: 2b01 cmp r3, #1 + 8001576: d106 bne.n 8001586 + 8001578: 4b1e ldr r3, [pc, #120] @ (80015f4 ) + 800157a: 6b5b ldr r3, [r3, #52] @ 0x34 + 800157c: 4a1d ldr r2, [pc, #116] @ (80015f4 ) + 800157e: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001582: 6353 str r3, [r2, #52] @ 0x34 + 8001584: e02d b.n 80015e2 + 8001586: 687b ldr r3, [r7, #4] + 8001588: 689b ldr r3, [r3, #8] + 800158a: 2b00 cmp r3, #0 + 800158c: d10c bne.n 80015a8 + 800158e: 4b19 ldr r3, [pc, #100] @ (80015f4 ) + 8001590: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001592: 4a18 ldr r2, [pc, #96] @ (80015f4 ) + 8001594: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001598: 6353 str r3, [r2, #52] @ 0x34 + 800159a: 4b16 ldr r3, [pc, #88] @ (80015f4 ) + 800159c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800159e: 4a15 ldr r2, [pc, #84] @ (80015f4 ) + 80015a0: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 80015a4: 6353 str r3, [r2, #52] @ 0x34 + 80015a6: e01c b.n 80015e2 + 80015a8: 687b ldr r3, [r7, #4] + 80015aa: 689b ldr r3, [r3, #8] + 80015ac: 2b05 cmp r3, #5 + 80015ae: d10c bne.n 80015ca + 80015b0: 4b10 ldr r3, [pc, #64] @ (80015f4 ) + 80015b2: 6b5b ldr r3, [r3, #52] @ 0x34 + 80015b4: 4a0f ldr r2, [pc, #60] @ (80015f4 ) + 80015b6: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 80015ba: 6353 str r3, [r2, #52] @ 0x34 + 80015bc: 4b0d ldr r3, [pc, #52] @ (80015f4 ) + 80015be: 6b5b ldr r3, [r3, #52] @ 0x34 + 80015c0: 4a0c ldr r2, [pc, #48] @ (80015f4 ) + 80015c2: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80015c6: 6353 str r3, [r2, #52] @ 0x34 + 80015c8: e00b b.n 80015e2 + 80015ca: 4b0a ldr r3, [pc, #40] @ (80015f4 ) + 80015cc: 6b5b ldr r3, [r3, #52] @ 0x34 + 80015ce: 4a09 ldr r2, [pc, #36] @ (80015f4 ) + 80015d0: f423 7380 bic.w r3, r3, #256 @ 0x100 + 80015d4: 6353 str r3, [r2, #52] @ 0x34 + 80015d6: 4b07 ldr r3, [pc, #28] @ (80015f4 ) + 80015d8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80015da: 4a06 ldr r2, [pc, #24] @ (80015f4 ) + 80015dc: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 80015e0: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 80015e2: 687b ldr r3, [r7, #4] + 80015e4: 689b ldr r3, [r3, #8] + 80015e6: 2b00 cmp r3, #0 + 80015e8: d024 beq.n 8001634 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80015ea: f7ff fae1 bl 8000bb0 + 80015ee: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 80015f0: e019 b.n 8001626 + 80015f2: bf00 nop + 80015f4: 40023800 .word 0x40023800 + 80015f8: 08002998 .word 0x08002998 + 80015fc: 20000000 .word 0x20000000 + 8001600: 20000004 .word 0x20000004 + 8001604: 42470020 .word 0x42470020 + 8001608: 42470680 .word 0x42470680 + 800160c: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001610: f7ff face bl 8000bb0 + 8001614: 4602 mov r2, r0 + 8001616: 693b ldr r3, [r7, #16] + 8001618: 1ad3 subs r3, r2, r3 + 800161a: f241 3288 movw r2, #5000 @ 0x1388 + 800161e: 4293 cmp r3, r2 + 8001620: d901 bls.n 8001626 + { + return HAL_TIMEOUT; + 8001622: 2303 movs r3, #3 + 8001624: e0a3 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001626: 4b54 ldr r3, [pc, #336] @ (8001778 ) + 8001628: 6b5b ldr r3, [r3, #52] @ 0x34 + 800162a: f403 7300 and.w r3, r3, #512 @ 0x200 + 800162e: 2b00 cmp r3, #0 + 8001630: d0ee beq.n 8001610 + 8001632: e014 b.n 800165e + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001634: f7ff fabc bl 8000bb0 + 8001638: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 800163a: e00a b.n 8001652 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 800163c: f7ff fab8 bl 8000bb0 + 8001640: 4602 mov r2, r0 + 8001642: 693b ldr r3, [r7, #16] + 8001644: 1ad3 subs r3, r2, r3 + 8001646: f241 3288 movw r2, #5000 @ 0x1388 + 800164a: 4293 cmp r3, r2 + 800164c: d901 bls.n 8001652 + { + return HAL_TIMEOUT; + 800164e: 2303 movs r3, #3 + 8001650: e08d b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 8001652: 4b49 ldr r3, [pc, #292] @ (8001778 ) + 8001654: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001656: f403 7300 and.w r3, r3, #512 @ 0x200 + 800165a: 2b00 cmp r3, #0 + 800165c: d1ee bne.n 800163c + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 800165e: 7ffb ldrb r3, [r7, #31] + 8001660: 2b01 cmp r3, #1 + 8001662: d105 bne.n 8001670 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8001664: 4b44 ldr r3, [pc, #272] @ (8001778 ) + 8001666: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001668: 4a43 ldr r2, [pc, #268] @ (8001778 ) + 800166a: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 800166e: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 8001670: 687b ldr r3, [r7, #4] + 8001672: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001674: 2b00 cmp r3, #0 + 8001676: d079 beq.n 800176c + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001678: 69bb ldr r3, [r7, #24] + 800167a: 2b0c cmp r3, #12 + 800167c: d056 beq.n 800172c + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 800167e: 687b ldr r3, [r7, #4] + 8001680: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001682: 2b02 cmp r3, #2 + 8001684: d13b bne.n 80016fe + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8001686: 4b3d ldr r3, [pc, #244] @ (800177c ) + 8001688: 2200 movs r2, #0 + 800168a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800168c: f7ff fa90 bl 8000bb0 + 8001690: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001692: e008 b.n 80016a6 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001694: f7ff fa8c bl 8000bb0 + 8001698: 4602 mov r2, r0 + 800169a: 693b ldr r3, [r7, #16] + 800169c: 1ad3 subs r3, r2, r3 + 800169e: 2b02 cmp r3, #2 + 80016a0: d901 bls.n 80016a6 + { + return HAL_TIMEOUT; + 80016a2: 2303 movs r3, #3 + 80016a4: e063 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80016a6: 4b34 ldr r3, [pc, #208] @ (8001778 ) + 80016a8: 681b ldr r3, [r3, #0] + 80016aa: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80016ae: 2b00 cmp r3, #0 + 80016b0: d1f0 bne.n 8001694 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 80016b2: 4b31 ldr r3, [pc, #196] @ (8001778 ) + 80016b4: 689b ldr r3, [r3, #8] + 80016b6: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 80016ba: 687b ldr r3, [r7, #4] + 80016bc: 6a99 ldr r1, [r3, #40] @ 0x28 + 80016be: 687b ldr r3, [r7, #4] + 80016c0: 6adb ldr r3, [r3, #44] @ 0x2c + 80016c2: 4319 orrs r1, r3 + 80016c4: 687b ldr r3, [r7, #4] + 80016c6: 6b1b ldr r3, [r3, #48] @ 0x30 + 80016c8: 430b orrs r3, r1 + 80016ca: 492b ldr r1, [pc, #172] @ (8001778 ) + 80016cc: 4313 orrs r3, r2 + 80016ce: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 80016d0: 4b2a ldr r3, [pc, #168] @ (800177c ) + 80016d2: 2201 movs r2, #1 + 80016d4: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80016d6: f7ff fa6b bl 8000bb0 + 80016da: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 80016dc: e008 b.n 80016f0 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80016de: f7ff fa67 bl 8000bb0 + 80016e2: 4602 mov r2, r0 + 80016e4: 693b ldr r3, [r7, #16] + 80016e6: 1ad3 subs r3, r2, r3 + 80016e8: 2b02 cmp r3, #2 + 80016ea: d901 bls.n 80016f0 + { + return HAL_TIMEOUT; + 80016ec: 2303 movs r3, #3 + 80016ee: e03e b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 80016f0: 4b21 ldr r3, [pc, #132] @ (8001778 ) + 80016f2: 681b ldr r3, [r3, #0] + 80016f4: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80016f8: 2b00 cmp r3, #0 + 80016fa: d0f0 beq.n 80016de + 80016fc: e036 b.n 800176c + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80016fe: 4b1f ldr r3, [pc, #124] @ (800177c ) + 8001700: 2200 movs r2, #0 + 8001702: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001704: f7ff fa54 bl 8000bb0 + 8001708: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800170a: e008 b.n 800171e + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800170c: f7ff fa50 bl 8000bb0 + 8001710: 4602 mov r2, r0 + 8001712: 693b ldr r3, [r7, #16] + 8001714: 1ad3 subs r3, r2, r3 + 8001716: 2b02 cmp r3, #2 + 8001718: d901 bls.n 800171e + { + return HAL_TIMEOUT; + 800171a: 2303 movs r3, #3 + 800171c: e027 b.n 800176e + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800171e: 4b16 ldr r3, [pc, #88] @ (8001778 ) + 8001720: 681b ldr r3, [r3, #0] + 8001722: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001726: 2b00 cmp r3, #0 + 8001728: d1f0 bne.n 800170c + 800172a: e01f b.n 800176c + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 800172c: 687b ldr r3, [r7, #4] + 800172e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001730: 2b01 cmp r3, #1 + 8001732: d101 bne.n 8001738 + { + return HAL_ERROR; + 8001734: 2301 movs r3, #1 + 8001736: e01a b.n 800176e + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8001738: 4b0f ldr r3, [pc, #60] @ (8001778 ) + 800173a: 689b ldr r3, [r3, #8] + 800173c: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 800173e: 697b ldr r3, [r7, #20] + 8001740: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8001744: 687b ldr r3, [r7, #4] + 8001746: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001748: 429a cmp r2, r3 + 800174a: d10d bne.n 8001768 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 800174c: 697b ldr r3, [r7, #20] + 800174e: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8001752: 687b ldr r3, [r7, #4] + 8001754: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8001756: 429a cmp r2, r3 + 8001758: d106 bne.n 8001768 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 800175a: 697b ldr r3, [r7, #20] + 800175c: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 8001760: 687b ldr r3, [r7, #4] + 8001762: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8001764: 429a cmp r2, r3 + 8001766: d001 beq.n 800176c + { + return HAL_ERROR; + 8001768: 2301 movs r3, #1 + 800176a: e000 b.n 800176e + } + } + } + } + + return HAL_OK; + 800176c: 2300 movs r3, #0 +} + 800176e: 4618 mov r0, r3 + 8001770: 3720 adds r7, #32 + 8001772: 46bd mov sp, r7 + 8001774: bd80 pop {r7, pc} + 8001776: bf00 nop + 8001778: 40023800 .word 0x40023800 + 800177c: 42470060 .word 0x42470060 + +08001780 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 8001780: b580 push {r7, lr} + 8001782: b084 sub sp, #16 + 8001784: af00 add r7, sp, #0 + 8001786: 6078 str r0, [r7, #4] + 8001788: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 800178a: 687b ldr r3, [r7, #4] + 800178c: 2b00 cmp r3, #0 + 800178e: d101 bne.n 8001794 + { + return HAL_ERROR; + 8001790: 2301 movs r3, #1 + 8001792: e11a b.n 80019ca + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001794: 4b8f ldr r3, [pc, #572] @ (80019d4 ) + 8001796: 681b ldr r3, [r3, #0] + 8001798: f003 0301 and.w r3, r3, #1 + 800179c: 683a ldr r2, [r7, #0] + 800179e: 429a cmp r2, r3 + 80017a0: d919 bls.n 80017d6 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 80017a2: 683b ldr r3, [r7, #0] + 80017a4: 2b01 cmp r3, #1 + 80017a6: d105 bne.n 80017b4 + 80017a8: 4b8a ldr r3, [pc, #552] @ (80019d4 ) + 80017aa: 681b ldr r3, [r3, #0] + 80017ac: 4a89 ldr r2, [pc, #548] @ (80019d4 ) + 80017ae: f043 0304 orr.w r3, r3, #4 + 80017b2: 6013 str r3, [r2, #0] + 80017b4: 4b87 ldr r3, [pc, #540] @ (80019d4 ) + 80017b6: 681b ldr r3, [r3, #0] + 80017b8: f023 0201 bic.w r2, r3, #1 + 80017bc: 4985 ldr r1, [pc, #532] @ (80019d4 ) + 80017be: 683b ldr r3, [r7, #0] + 80017c0: 4313 orrs r3, r2 + 80017c2: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 80017c4: 4b83 ldr r3, [pc, #524] @ (80019d4 ) + 80017c6: 681b ldr r3, [r3, #0] + 80017c8: f003 0301 and.w r3, r3, #1 + 80017cc: 683a ldr r2, [r7, #0] + 80017ce: 429a cmp r2, r3 + 80017d0: d001 beq.n 80017d6 + { + return HAL_ERROR; + 80017d2: 2301 movs r3, #1 + 80017d4: e0f9 b.n 80019ca + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 80017d6: 687b ldr r3, [r7, #4] + 80017d8: 681b ldr r3, [r3, #0] + 80017da: f003 0302 and.w r3, r3, #2 + 80017de: 2b00 cmp r3, #0 + 80017e0: d008 beq.n 80017f4 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 80017e2: 4b7d ldr r3, [pc, #500] @ (80019d8 ) + 80017e4: 689b ldr r3, [r3, #8] + 80017e6: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 80017ea: 687b ldr r3, [r7, #4] + 80017ec: 689b ldr r3, [r3, #8] + 80017ee: 497a ldr r1, [pc, #488] @ (80019d8 ) + 80017f0: 4313 orrs r3, r2 + 80017f2: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 80017f4: 687b ldr r3, [r7, #4] + 80017f6: 681b ldr r3, [r3, #0] + 80017f8: f003 0301 and.w r3, r3, #1 + 80017fc: 2b00 cmp r3, #0 + 80017fe: f000 808e beq.w 800191e + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001802: 687b ldr r3, [r7, #4] + 8001804: 685b ldr r3, [r3, #4] + 8001806: 2b02 cmp r3, #2 + 8001808: d107 bne.n 800181a + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800180a: 4b73 ldr r3, [pc, #460] @ (80019d8 ) + 800180c: 681b ldr r3, [r3, #0] + 800180e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001812: 2b00 cmp r3, #0 + 8001814: d121 bne.n 800185a + { + return HAL_ERROR; + 8001816: 2301 movs r3, #1 + 8001818: e0d7 b.n 80019ca + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 800181a: 687b ldr r3, [r7, #4] + 800181c: 685b ldr r3, [r3, #4] + 800181e: 2b03 cmp r3, #3 + 8001820: d107 bne.n 8001832 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001822: 4b6d ldr r3, [pc, #436] @ (80019d8 ) + 8001824: 681b ldr r3, [r3, #0] + 8001826: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800182a: 2b00 cmp r3, #0 + 800182c: d115 bne.n 800185a + { + return HAL_ERROR; + 800182e: 2301 movs r3, #1 + 8001830: e0cb b.n 80019ca + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001832: 687b ldr r3, [r7, #4] + 8001834: 685b ldr r3, [r3, #4] + 8001836: 2b01 cmp r3, #1 + 8001838: d107 bne.n 800184a + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800183a: 4b67 ldr r3, [pc, #412] @ (80019d8 ) + 800183c: 681b ldr r3, [r3, #0] + 800183e: f003 0302 and.w r3, r3, #2 + 8001842: 2b00 cmp r3, #0 + 8001844: d109 bne.n 800185a + { + return HAL_ERROR; + 8001846: 2301 movs r3, #1 + 8001848: e0bf b.n 80019ca + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800184a: 4b63 ldr r3, [pc, #396] @ (80019d8 ) + 800184c: 681b ldr r3, [r3, #0] + 800184e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001852: 2b00 cmp r3, #0 + 8001854: d101 bne.n 800185a + { + return HAL_ERROR; + 8001856: 2301 movs r3, #1 + 8001858: e0b7 b.n 80019ca + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 800185a: 4b5f ldr r3, [pc, #380] @ (80019d8 ) + 800185c: 689b ldr r3, [r3, #8] + 800185e: f023 0203 bic.w r2, r3, #3 + 8001862: 687b ldr r3, [r7, #4] + 8001864: 685b ldr r3, [r3, #4] + 8001866: 495c ldr r1, [pc, #368] @ (80019d8 ) + 8001868: 4313 orrs r3, r2 + 800186a: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800186c: f7ff f9a0 bl 8000bb0 + 8001870: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001872: 687b ldr r3, [r7, #4] + 8001874: 685b ldr r3, [r3, #4] + 8001876: 2b02 cmp r3, #2 + 8001878: d112 bne.n 80018a0 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 800187a: e00a b.n 8001892 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 800187c: f7ff f998 bl 8000bb0 + 8001880: 4602 mov r2, r0 + 8001882: 68fb ldr r3, [r7, #12] + 8001884: 1ad3 subs r3, r2, r3 + 8001886: f241 3288 movw r2, #5000 @ 0x1388 + 800188a: 4293 cmp r3, r2 + 800188c: d901 bls.n 8001892 + { + return HAL_TIMEOUT; + 800188e: 2303 movs r3, #3 + 8001890: e09b b.n 80019ca + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001892: 4b51 ldr r3, [pc, #324] @ (80019d8 ) + 8001894: 689b ldr r3, [r3, #8] + 8001896: f003 030c and.w r3, r3, #12 + 800189a: 2b08 cmp r3, #8 + 800189c: d1ee bne.n 800187c + 800189e: e03e b.n 800191e + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80018a0: 687b ldr r3, [r7, #4] + 80018a2: 685b ldr r3, [r3, #4] + 80018a4: 2b03 cmp r3, #3 + 80018a6: d112 bne.n 80018ce + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80018a8: e00a b.n 80018c0 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80018aa: f7ff f981 bl 8000bb0 + 80018ae: 4602 mov r2, r0 + 80018b0: 68fb ldr r3, [r7, #12] + 80018b2: 1ad3 subs r3, r2, r3 + 80018b4: f241 3288 movw r2, #5000 @ 0x1388 + 80018b8: 4293 cmp r3, r2 + 80018ba: d901 bls.n 80018c0 + { + return HAL_TIMEOUT; + 80018bc: 2303 movs r3, #3 + 80018be: e084 b.n 80019ca + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80018c0: 4b45 ldr r3, [pc, #276] @ (80019d8 ) + 80018c2: 689b ldr r3, [r3, #8] + 80018c4: f003 030c and.w r3, r3, #12 + 80018c8: 2b0c cmp r3, #12 + 80018ca: d1ee bne.n 80018aa + 80018cc: e027 b.n 800191e + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 80018ce: 687b ldr r3, [r7, #4] + 80018d0: 685b ldr r3, [r3, #4] + 80018d2: 2b01 cmp r3, #1 + 80018d4: d11d bne.n 8001912 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 80018d6: e00a b.n 80018ee + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80018d8: f7ff f96a bl 8000bb0 + 80018dc: 4602 mov r2, r0 + 80018de: 68fb ldr r3, [r7, #12] + 80018e0: 1ad3 subs r3, r2, r3 + 80018e2: f241 3288 movw r2, #5000 @ 0x1388 + 80018e6: 4293 cmp r3, r2 + 80018e8: d901 bls.n 80018ee + { + return HAL_TIMEOUT; + 80018ea: 2303 movs r3, #3 + 80018ec: e06d b.n 80019ca + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 80018ee: 4b3a ldr r3, [pc, #232] @ (80019d8 ) + 80018f0: 689b ldr r3, [r3, #8] + 80018f2: f003 030c and.w r3, r3, #12 + 80018f6: 2b04 cmp r3, #4 + 80018f8: d1ee bne.n 80018d8 + 80018fa: e010 b.n 800191e + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 80018fc: f7ff f958 bl 8000bb0 + 8001900: 4602 mov r2, r0 + 8001902: 68fb ldr r3, [r7, #12] + 8001904: 1ad3 subs r3, r2, r3 + 8001906: f241 3288 movw r2, #5000 @ 0x1388 + 800190a: 4293 cmp r3, r2 + 800190c: d901 bls.n 8001912 + { + return HAL_TIMEOUT; + 800190e: 2303 movs r3, #3 + 8001910: e05b b.n 80019ca + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8001912: 4b31 ldr r3, [pc, #196] @ (80019d8 ) + 8001914: 689b ldr r3, [r3, #8] + 8001916: f003 030c and.w r3, r3, #12 + 800191a: 2b00 cmp r3, #0 + 800191c: d1ee bne.n 80018fc + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 800191e: 4b2d ldr r3, [pc, #180] @ (80019d4 ) + 8001920: 681b ldr r3, [r3, #0] + 8001922: f003 0301 and.w r3, r3, #1 + 8001926: 683a ldr r2, [r7, #0] + 8001928: 429a cmp r2, r3 + 800192a: d219 bcs.n 8001960 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 800192c: 683b ldr r3, [r7, #0] + 800192e: 2b01 cmp r3, #1 + 8001930: d105 bne.n 800193e + 8001932: 4b28 ldr r3, [pc, #160] @ (80019d4 ) + 8001934: 681b ldr r3, [r3, #0] + 8001936: 4a27 ldr r2, [pc, #156] @ (80019d4 ) + 8001938: f043 0304 orr.w r3, r3, #4 + 800193c: 6013 str r3, [r2, #0] + 800193e: 4b25 ldr r3, [pc, #148] @ (80019d4 ) + 8001940: 681b ldr r3, [r3, #0] + 8001942: f023 0201 bic.w r2, r3, #1 + 8001946: 4923 ldr r1, [pc, #140] @ (80019d4 ) + 8001948: 683b ldr r3, [r7, #0] + 800194a: 4313 orrs r3, r2 + 800194c: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 800194e: 4b21 ldr r3, [pc, #132] @ (80019d4 ) + 8001950: 681b ldr r3, [r3, #0] + 8001952: f003 0301 and.w r3, r3, #1 + 8001956: 683a ldr r2, [r7, #0] + 8001958: 429a cmp r2, r3 + 800195a: d001 beq.n 8001960 + { + return HAL_ERROR; + 800195c: 2301 movs r3, #1 + 800195e: e034 b.n 80019ca + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001960: 687b ldr r3, [r7, #4] + 8001962: 681b ldr r3, [r3, #0] + 8001964: f003 0304 and.w r3, r3, #4 + 8001968: 2b00 cmp r3, #0 + 800196a: d008 beq.n 800197e + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 800196c: 4b1a ldr r3, [pc, #104] @ (80019d8 ) + 800196e: 689b ldr r3, [r3, #8] + 8001970: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001974: 687b ldr r3, [r7, #4] + 8001976: 68db ldr r3, [r3, #12] + 8001978: 4917 ldr r1, [pc, #92] @ (80019d8 ) + 800197a: 4313 orrs r3, r2 + 800197c: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 800197e: 687b ldr r3, [r7, #4] + 8001980: 681b ldr r3, [r3, #0] + 8001982: f003 0308 and.w r3, r3, #8 + 8001986: 2b00 cmp r3, #0 + 8001988: d009 beq.n 800199e + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 800198a: 4b13 ldr r3, [pc, #76] @ (80019d8 ) + 800198c: 689b ldr r3, [r3, #8] + 800198e: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001992: 687b ldr r3, [r7, #4] + 8001994: 691b ldr r3, [r3, #16] + 8001996: 00db lsls r3, r3, #3 + 8001998: 490f ldr r1, [pc, #60] @ (80019d8 ) + 800199a: 4313 orrs r3, r2 + 800199c: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 800199e: f000 f823 bl 80019e8 + 80019a2: 4602 mov r2, r0 + 80019a4: 4b0c ldr r3, [pc, #48] @ (80019d8 ) + 80019a6: 689b ldr r3, [r3, #8] + 80019a8: 091b lsrs r3, r3, #4 + 80019aa: f003 030f and.w r3, r3, #15 + 80019ae: 490b ldr r1, [pc, #44] @ (80019dc ) + 80019b0: 5ccb ldrb r3, [r1, r3] + 80019b2: fa22 f303 lsr.w r3, r2, r3 + 80019b6: 4a0a ldr r2, [pc, #40] @ (80019e0 ) + 80019b8: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 80019ba: 4b0a ldr r3, [pc, #40] @ (80019e4 ) + 80019bc: 681b ldr r3, [r3, #0] + 80019be: 4618 mov r0, r3 + 80019c0: f7ff f8aa bl 8000b18 + 80019c4: 4603 mov r3, r0 + 80019c6: 72fb strb r3, [r7, #11] + + return status; + 80019c8: 7afb ldrb r3, [r7, #11] +} + 80019ca: 4618 mov r0, r3 + 80019cc: 3710 adds r7, #16 + 80019ce: 46bd mov sp, r7 + 80019d0: bd80 pop {r7, pc} + 80019d2: bf00 nop + 80019d4: 40023c00 .word 0x40023c00 + 80019d8: 40023800 .word 0x40023800 + 80019dc: 08002998 .word 0x08002998 + 80019e0: 20000000 .word 0x20000000 + 80019e4: 20000004 .word 0x20000004 + +080019e8 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 80019e8: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 80019ec: b08e sub sp, #56 @ 0x38 + 80019ee: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 80019f0: 4b58 ldr r3, [pc, #352] @ (8001b54 ) + 80019f2: 689b ldr r3, [r3, #8] + 80019f4: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 80019f6: 6afb ldr r3, [r7, #44] @ 0x2c + 80019f8: f003 030c and.w r3, r3, #12 + 80019fc: 2b0c cmp r3, #12 + 80019fe: d00d beq.n 8001a1c + 8001a00: 2b0c cmp r3, #12 + 8001a02: f200 8092 bhi.w 8001b2a + 8001a06: 2b04 cmp r3, #4 + 8001a08: d002 beq.n 8001a10 + 8001a0a: 2b08 cmp r3, #8 + 8001a0c: d003 beq.n 8001a16 + 8001a0e: e08c b.n 8001b2a + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001a10: 4b51 ldr r3, [pc, #324] @ (8001b58 ) + 8001a12: 633b str r3, [r7, #48] @ 0x30 + break; + 8001a14: e097 b.n 8001b46 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001a16: 4b51 ldr r3, [pc, #324] @ (8001b5c ) + 8001a18: 633b str r3, [r7, #48] @ 0x30 + break; + 8001a1a: e094 b.n 8001b46 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001a1c: 6afb ldr r3, [r7, #44] @ 0x2c + 8001a1e: 0c9b lsrs r3, r3, #18 + 8001a20: f003 020f and.w r2, r3, #15 + 8001a24: 4b4e ldr r3, [pc, #312] @ (8001b60 ) + 8001a26: 5c9b ldrb r3, [r3, r2] + 8001a28: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001a2a: 6afb ldr r3, [r7, #44] @ 0x2c + 8001a2c: 0d9b lsrs r3, r3, #22 + 8001a2e: f003 0303 and.w r3, r3, #3 + 8001a32: 3301 adds r3, #1 + 8001a34: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001a36: 4b47 ldr r3, [pc, #284] @ (8001b54 ) + 8001a38: 689b ldr r3, [r3, #8] + 8001a3a: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001a3e: 2b00 cmp r3, #0 + 8001a40: d021 beq.n 8001a86 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001a42: 6abb ldr r3, [r7, #40] @ 0x28 + 8001a44: 2200 movs r2, #0 + 8001a46: 61bb str r3, [r7, #24] + 8001a48: 61fa str r2, [r7, #28] + 8001a4a: 4b44 ldr r3, [pc, #272] @ (8001b5c ) + 8001a4c: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001a50: 464a mov r2, r9 + 8001a52: fb03 f202 mul.w r2, r3, r2 + 8001a56: 2300 movs r3, #0 + 8001a58: 4644 mov r4, r8 + 8001a5a: fb04 f303 mul.w r3, r4, r3 + 8001a5e: 4413 add r3, r2 + 8001a60: 4a3e ldr r2, [pc, #248] @ (8001b5c ) + 8001a62: 4644 mov r4, r8 + 8001a64: fba4 0102 umull r0, r1, r4, r2 + 8001a68: 440b add r3, r1 + 8001a6a: 4619 mov r1, r3 + 8001a6c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001a6e: 2200 movs r2, #0 + 8001a70: 613b str r3, [r7, #16] + 8001a72: 617a str r2, [r7, #20] + 8001a74: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001a78: f7fe fb80 bl 800017c <__aeabi_uldivmod> + 8001a7c: 4602 mov r2, r0 + 8001a7e: 460b mov r3, r1 + 8001a80: 4613 mov r3, r2 + 8001a82: 637b str r3, [r7, #52] @ 0x34 + 8001a84: e04e b.n 8001b24 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001a86: 6abb ldr r3, [r7, #40] @ 0x28 + 8001a88: 2200 movs r2, #0 + 8001a8a: 469a mov sl, r3 + 8001a8c: 4693 mov fp, r2 + 8001a8e: 4652 mov r2, sl + 8001a90: 465b mov r3, fp + 8001a92: f04f 0000 mov.w r0, #0 + 8001a96: f04f 0100 mov.w r1, #0 + 8001a9a: 0159 lsls r1, r3, #5 + 8001a9c: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001aa0: 0150 lsls r0, r2, #5 + 8001aa2: 4602 mov r2, r0 + 8001aa4: 460b mov r3, r1 + 8001aa6: ebb2 080a subs.w r8, r2, sl + 8001aaa: eb63 090b sbc.w r9, r3, fp + 8001aae: f04f 0200 mov.w r2, #0 + 8001ab2: f04f 0300 mov.w r3, #0 + 8001ab6: ea4f 1389 mov.w r3, r9, lsl #6 + 8001aba: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001abe: ea4f 1288 mov.w r2, r8, lsl #6 + 8001ac2: ebb2 0408 subs.w r4, r2, r8 + 8001ac6: eb63 0509 sbc.w r5, r3, r9 + 8001aca: f04f 0200 mov.w r2, #0 + 8001ace: f04f 0300 mov.w r3, #0 + 8001ad2: 00eb lsls r3, r5, #3 + 8001ad4: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001ad8: 00e2 lsls r2, r4, #3 + 8001ada: 4614 mov r4, r2 + 8001adc: 461d mov r5, r3 + 8001ade: eb14 030a adds.w r3, r4, sl + 8001ae2: 603b str r3, [r7, #0] + 8001ae4: eb45 030b adc.w r3, r5, fp + 8001ae8: 607b str r3, [r7, #4] + 8001aea: f04f 0200 mov.w r2, #0 + 8001aee: f04f 0300 mov.w r3, #0 + 8001af2: e9d7 4500 ldrd r4, r5, [r7] + 8001af6: 4629 mov r1, r5 + 8001af8: 028b lsls r3, r1, #10 + 8001afa: 4620 mov r0, r4 + 8001afc: 4629 mov r1, r5 + 8001afe: 4604 mov r4, r0 + 8001b00: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001b04: 4601 mov r1, r0 + 8001b06: 028a lsls r2, r1, #10 + 8001b08: 4610 mov r0, r2 + 8001b0a: 4619 mov r1, r3 + 8001b0c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001b0e: 2200 movs r2, #0 + 8001b10: 60bb str r3, [r7, #8] + 8001b12: 60fa str r2, [r7, #12] + 8001b14: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001b18: f7fe fb30 bl 800017c <__aeabi_uldivmod> + 8001b1c: 4602 mov r2, r0 + 8001b1e: 460b mov r3, r1 + 8001b20: 4613 mov r3, r2 + 8001b22: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001b24: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001b26: 633b str r3, [r7, #48] @ 0x30 + break; + 8001b28: e00d b.n 8001b46 + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001b2a: 4b0a ldr r3, [pc, #40] @ (8001b54 ) + 8001b2c: 685b ldr r3, [r3, #4] + 8001b2e: 0b5b lsrs r3, r3, #13 + 8001b30: f003 0307 and.w r3, r3, #7 + 8001b34: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001b36: 6a3b ldr r3, [r7, #32] + 8001b38: 3301 adds r3, #1 + 8001b3a: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001b3e: fa02 f303 lsl.w r3, r2, r3 + 8001b42: 633b str r3, [r7, #48] @ 0x30 + break; + 8001b44: bf00 nop + } + } + return sysclockfreq; + 8001b46: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001b48: 4618 mov r0, r3 + 8001b4a: 3738 adds r7, #56 @ 0x38 + 8001b4c: 46bd mov sp, r7 + 8001b4e: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001b52: bf00 nop + 8001b54: 40023800 .word 0x40023800 + 8001b58: 00f42400 .word 0x00f42400 + 8001b5c: 016e3600 .word 0x016e3600 + 8001b60: 0800298c .word 0x0800298c + +08001b64 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001b64: b480 push {r7} + 8001b66: b087 sub sp, #28 + 8001b68: af00 add r7, sp, #0 + 8001b6a: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001b6c: 2300 movs r3, #0 + 8001b6e: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001b70: 4b29 ldr r3, [pc, #164] @ (8001c18 ) + 8001b72: 689b ldr r3, [r3, #8] + 8001b74: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001b78: 2b00 cmp r3, #0 + 8001b7a: d12c bne.n 8001bd6 + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001b7c: 4b26 ldr r3, [pc, #152] @ (8001c18 ) + 8001b7e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001b80: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001b84: 2b00 cmp r3, #0 + 8001b86: d005 beq.n 8001b94 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001b88: 4b24 ldr r3, [pc, #144] @ (8001c1c ) + 8001b8a: 681b ldr r3, [r3, #0] + 8001b8c: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001b90: 617b str r3, [r7, #20] + 8001b92: e016 b.n 8001bc2 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001b94: 4b20 ldr r3, [pc, #128] @ (8001c18 ) + 8001b96: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001b98: 4a1f ldr r2, [pc, #124] @ (8001c18 ) + 8001b9a: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001b9e: 6253 str r3, [r2, #36] @ 0x24 + 8001ba0: 4b1d ldr r3, [pc, #116] @ (8001c18 ) + 8001ba2: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001ba4: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001ba8: 60fb str r3, [r7, #12] + 8001baa: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001bac: 4b1b ldr r3, [pc, #108] @ (8001c1c ) + 8001bae: 681b ldr r3, [r3, #0] + 8001bb0: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001bb4: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001bb6: 4b18 ldr r3, [pc, #96] @ (8001c18 ) + 8001bb8: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001bba: 4a17 ldr r2, [pc, #92] @ (8001c18 ) + 8001bbc: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001bc0: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001bc2: 697b ldr r3, [r7, #20] + 8001bc4: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001bc8: d105 bne.n 8001bd6 + 8001bca: 687b ldr r3, [r7, #4] + 8001bcc: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001bd0: d101 bne.n 8001bd6 + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001bd2: 2301 movs r3, #1 + 8001bd4: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001bd6: 693b ldr r3, [r7, #16] + 8001bd8: 2b01 cmp r3, #1 + 8001bda: d105 bne.n 8001be8 + 8001bdc: 4b10 ldr r3, [pc, #64] @ (8001c20 ) + 8001bde: 681b ldr r3, [r3, #0] + 8001be0: 4a0f ldr r2, [pc, #60] @ (8001c20 ) + 8001be2: f043 0304 orr.w r3, r3, #4 + 8001be6: 6013 str r3, [r2, #0] + 8001be8: 4b0d ldr r3, [pc, #52] @ (8001c20 ) + 8001bea: 681b ldr r3, [r3, #0] + 8001bec: f023 0201 bic.w r2, r3, #1 + 8001bf0: 490b ldr r1, [pc, #44] @ (8001c20 ) + 8001bf2: 693b ldr r3, [r7, #16] + 8001bf4: 4313 orrs r3, r2 + 8001bf6: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001bf8: 4b09 ldr r3, [pc, #36] @ (8001c20 ) + 8001bfa: 681b ldr r3, [r3, #0] + 8001bfc: f003 0301 and.w r3, r3, #1 + 8001c00: 693a ldr r2, [r7, #16] + 8001c02: 429a cmp r2, r3 + 8001c04: d001 beq.n 8001c0a + { + return HAL_ERROR; + 8001c06: 2301 movs r3, #1 + 8001c08: e000 b.n 8001c0c + } + + return HAL_OK; + 8001c0a: 2300 movs r3, #0 +} + 8001c0c: 4618 mov r0, r3 + 8001c0e: 371c adds r7, #28 + 8001c10: 46bd mov sp, r7 + 8001c12: bc80 pop {r7} + 8001c14: 4770 bx lr + 8001c16: bf00 nop + 8001c18: 40023800 .word 0x40023800 + 8001c1c: 40007000 .word 0x40007000 + 8001c20: 40023c00 .word 0x40023c00 + +08001c24 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001c24: b580 push {r7, lr} + 8001c26: b082 sub sp, #8 + 8001c28: af00 add r7, sp, #0 + 8001c2a: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001c2c: 687b ldr r3, [r7, #4] + 8001c2e: 2b00 cmp r3, #0 + 8001c30: d101 bne.n 8001c36 + { + return HAL_ERROR; + 8001c32: 2301 movs r3, #1 + 8001c34: e07b b.n 8001d2e + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001c36: 687b ldr r3, [r7, #4] + 8001c38: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001c3a: 2b00 cmp r3, #0 + 8001c3c: d108 bne.n 8001c50 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001c3e: 687b ldr r3, [r7, #4] + 8001c40: 685b ldr r3, [r3, #4] + 8001c42: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001c46: d009 beq.n 8001c5c + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001c48: 687b ldr r3, [r7, #4] + 8001c4a: 2200 movs r2, #0 + 8001c4c: 61da str r2, [r3, #28] + 8001c4e: e005 b.n 8001c5c + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001c50: 687b ldr r3, [r7, #4] + 8001c52: 2200 movs r2, #0 + 8001c54: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001c56: 687b ldr r3, [r7, #4] + 8001c58: 2200 movs r2, #0 + 8001c5a: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001c5c: 687b ldr r3, [r7, #4] + 8001c5e: 2200 movs r2, #0 + 8001c60: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001c62: 687b ldr r3, [r7, #4] + 8001c64: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001c68: b2db uxtb r3, r3 + 8001c6a: 2b00 cmp r3, #0 + 8001c6c: d106 bne.n 8001c7c + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001c6e: 687b ldr r3, [r7, #4] + 8001c70: 2200 movs r2, #0 + 8001c72: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001c76: 6878 ldr r0, [r7, #4] + 8001c78: f7fe fe1e bl 80008b8 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001c7c: 687b ldr r3, [r7, #4] + 8001c7e: 2202 movs r2, #2 + 8001c80: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001c84: 687b ldr r3, [r7, #4] + 8001c86: 681b ldr r3, [r3, #0] + 8001c88: 681a ldr r2, [r3, #0] + 8001c8a: 687b ldr r3, [r7, #4] + 8001c8c: 681b ldr r3, [r3, #0] + 8001c8e: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001c92: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001c94: 687b ldr r3, [r7, #4] + 8001c96: 685b ldr r3, [r3, #4] + 8001c98: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001c9c: 687b ldr r3, [r7, #4] + 8001c9e: 689b ldr r3, [r3, #8] + 8001ca0: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001ca4: 431a orrs r2, r3 + 8001ca6: 687b ldr r3, [r7, #4] + 8001ca8: 68db ldr r3, [r3, #12] + 8001caa: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001cae: 431a orrs r2, r3 + 8001cb0: 687b ldr r3, [r7, #4] + 8001cb2: 691b ldr r3, [r3, #16] + 8001cb4: f003 0302 and.w r3, r3, #2 + 8001cb8: 431a orrs r2, r3 + 8001cba: 687b ldr r3, [r7, #4] + 8001cbc: 695b ldr r3, [r3, #20] + 8001cbe: f003 0301 and.w r3, r3, #1 + 8001cc2: 431a orrs r2, r3 + 8001cc4: 687b ldr r3, [r7, #4] + 8001cc6: 699b ldr r3, [r3, #24] + 8001cc8: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001ccc: 431a orrs r2, r3 + 8001cce: 687b ldr r3, [r7, #4] + 8001cd0: 69db ldr r3, [r3, #28] + 8001cd2: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001cd6: 431a orrs r2, r3 + 8001cd8: 687b ldr r3, [r7, #4] + 8001cda: 6a1b ldr r3, [r3, #32] + 8001cdc: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001ce0: ea42 0103 orr.w r1, r2, r3 + 8001ce4: 687b ldr r3, [r7, #4] + 8001ce6: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001ce8: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001cec: 687b ldr r3, [r7, #4] + 8001cee: 681b ldr r3, [r3, #0] + 8001cf0: 430a orrs r2, r1 + 8001cf2: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001cf4: 687b ldr r3, [r7, #4] + 8001cf6: 699b ldr r3, [r3, #24] + 8001cf8: 0c1b lsrs r3, r3, #16 + 8001cfa: f003 0104 and.w r1, r3, #4 + 8001cfe: 687b ldr r3, [r7, #4] + 8001d00: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001d02: f003 0210 and.w r2, r3, #16 + 8001d06: 687b ldr r3, [r7, #4] + 8001d08: 681b ldr r3, [r3, #0] + 8001d0a: 430a orrs r2, r1 + 8001d0c: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001d0e: 687b ldr r3, [r7, #4] + 8001d10: 681b ldr r3, [r3, #0] + 8001d12: 69da ldr r2, [r3, #28] + 8001d14: 687b ldr r3, [r7, #4] + 8001d16: 681b ldr r3, [r3, #0] + 8001d18: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001d1c: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001d1e: 687b ldr r3, [r7, #4] + 8001d20: 2200 movs r2, #0 + 8001d22: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001d24: 687b ldr r3, [r7, #4] + 8001d26: 2201 movs r2, #1 + 8001d28: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001d2c: 2300 movs r3, #0 +} + 8001d2e: 4618 mov r0, r3 + 8001d30: 3708 adds r7, #8 + 8001d32: 46bd mov sp, r7 + 8001d34: bd80 pop {r7, pc} + +08001d36 : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001d36: b580 push {r7, lr} + 8001d38: b088 sub sp, #32 + 8001d3a: af00 add r7, sp, #0 + 8001d3c: 60f8 str r0, [r7, #12] + 8001d3e: 60b9 str r1, [r7, #8] + 8001d40: 603b str r3, [r7, #0] + 8001d42: 4613 mov r3, r2 + 8001d44: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001d46: f7fe ff33 bl 8000bb0 + 8001d4a: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001d4c: 88fb ldrh r3, [r7, #6] + 8001d4e: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001d50: 68fb ldr r3, [r7, #12] + 8001d52: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001d56: b2db uxtb r3, r3 + 8001d58: 2b01 cmp r3, #1 + 8001d5a: d001 beq.n 8001d60 + { + return HAL_BUSY; + 8001d5c: 2302 movs r3, #2 + 8001d5e: e12a b.n 8001fb6 + } + + if ((pData == NULL) || (Size == 0U)) + 8001d60: 68bb ldr r3, [r7, #8] + 8001d62: 2b00 cmp r3, #0 + 8001d64: d002 beq.n 8001d6c + 8001d66: 88fb ldrh r3, [r7, #6] + 8001d68: 2b00 cmp r3, #0 + 8001d6a: d101 bne.n 8001d70 + { + return HAL_ERROR; + 8001d6c: 2301 movs r3, #1 + 8001d6e: e122 b.n 8001fb6 + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001d70: 68fb ldr r3, [r7, #12] + 8001d72: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001d76: 2b01 cmp r3, #1 + 8001d78: d101 bne.n 8001d7e + 8001d7a: 2302 movs r3, #2 + 8001d7c: e11b b.n 8001fb6 + 8001d7e: 68fb ldr r3, [r7, #12] + 8001d80: 2201 movs r2, #1 + 8001d82: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001d86: 68fb ldr r3, [r7, #12] + 8001d88: 2203 movs r2, #3 + 8001d8a: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001d8e: 68fb ldr r3, [r7, #12] + 8001d90: 2200 movs r2, #0 + 8001d92: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8001d94: 68fb ldr r3, [r7, #12] + 8001d96: 68ba ldr r2, [r7, #8] + 8001d98: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 8001d9a: 68fb ldr r3, [r7, #12] + 8001d9c: 88fa ldrh r2, [r7, #6] + 8001d9e: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8001da0: 68fb ldr r3, [r7, #12] + 8001da2: 88fa ldrh r2, [r7, #6] + 8001da4: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8001da6: 68fb ldr r3, [r7, #12] + 8001da8: 2200 movs r2, #0 + 8001daa: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 8001dac: 68fb ldr r3, [r7, #12] + 8001dae: 2200 movs r2, #0 + 8001db0: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8001db2: 68fb ldr r3, [r7, #12] + 8001db4: 2200 movs r2, #0 + 8001db6: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8001db8: 68fb ldr r3, [r7, #12] + 8001dba: 2200 movs r2, #0 + 8001dbc: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 8001dbe: 68fb ldr r3, [r7, #12] + 8001dc0: 2200 movs r2, #0 + 8001dc2: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8001dc4: 68fb ldr r3, [r7, #12] + 8001dc6: 689b ldr r3, [r3, #8] + 8001dc8: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8001dcc: d10f bne.n 8001dee + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8001dce: 68fb ldr r3, [r7, #12] + 8001dd0: 681b ldr r3, [r3, #0] + 8001dd2: 681a ldr r2, [r3, #0] + 8001dd4: 68fb ldr r3, [r7, #12] + 8001dd6: 681b ldr r3, [r3, #0] + 8001dd8: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001ddc: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8001dde: 68fb ldr r3, [r7, #12] + 8001de0: 681b ldr r3, [r3, #0] + 8001de2: 681a ldr r2, [r3, #0] + 8001de4: 68fb ldr r3, [r7, #12] + 8001de6: 681b ldr r3, [r3, #0] + 8001de8: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8001dec: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8001dee: 68fb ldr r3, [r7, #12] + 8001df0: 681b ldr r3, [r3, #0] + 8001df2: 681b ldr r3, [r3, #0] + 8001df4: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001df8: 2b40 cmp r3, #64 @ 0x40 + 8001dfa: d007 beq.n 8001e0c + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8001dfc: 68fb ldr r3, [r7, #12] + 8001dfe: 681b ldr r3, [r3, #0] + 8001e00: 681a ldr r2, [r3, #0] + 8001e02: 68fb ldr r3, [r7, #12] + 8001e04: 681b ldr r3, [r3, #0] + 8001e06: f042 0240 orr.w r2, r2, #64 @ 0x40 + 8001e0a: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 8001e0c: 68fb ldr r3, [r7, #12] + 8001e0e: 68db ldr r3, [r3, #12] + 8001e10: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8001e14: d152 bne.n 8001ebc + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001e16: 68fb ldr r3, [r7, #12] + 8001e18: 685b ldr r3, [r3, #4] + 8001e1a: 2b00 cmp r3, #0 + 8001e1c: d002 beq.n 8001e24 + 8001e1e: 8b7b ldrh r3, [r7, #26] + 8001e20: 2b01 cmp r3, #1 + 8001e22: d145 bne.n 8001eb0 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001e24: 68fb ldr r3, [r7, #12] + 8001e26: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001e28: 881a ldrh r2, [r3, #0] + 8001e2a: 68fb ldr r3, [r7, #12] + 8001e2c: 681b ldr r3, [r3, #0] + 8001e2e: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001e30: 68fb ldr r3, [r7, #12] + 8001e32: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001e34: 1c9a adds r2, r3, #2 + 8001e36: 68fb ldr r3, [r7, #12] + 8001e38: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001e3a: 68fb ldr r3, [r7, #12] + 8001e3c: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001e3e: b29b uxth r3, r3 + 8001e40: 3b01 subs r3, #1 + 8001e42: b29a uxth r2, r3 + 8001e44: 68fb ldr r3, [r7, #12] + 8001e46: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8001e48: e032 b.n 8001eb0 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001e4a: 68fb ldr r3, [r7, #12] + 8001e4c: 681b ldr r3, [r3, #0] + 8001e4e: 689b ldr r3, [r3, #8] + 8001e50: f003 0302 and.w r3, r3, #2 + 8001e54: 2b02 cmp r3, #2 + 8001e56: d112 bne.n 8001e7e + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8001e58: 68fb ldr r3, [r7, #12] + 8001e5a: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001e5c: 881a ldrh r2, [r3, #0] + 8001e5e: 68fb ldr r3, [r7, #12] + 8001e60: 681b ldr r3, [r3, #0] + 8001e62: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8001e64: 68fb ldr r3, [r7, #12] + 8001e66: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001e68: 1c9a adds r2, r3, #2 + 8001e6a: 68fb ldr r3, [r7, #12] + 8001e6c: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001e6e: 68fb ldr r3, [r7, #12] + 8001e70: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001e72: b29b uxth r3, r3 + 8001e74: 3b01 subs r3, #1 + 8001e76: b29a uxth r2, r3 + 8001e78: 68fb ldr r3, [r7, #12] + 8001e7a: 86da strh r2, [r3, #54] @ 0x36 + 8001e7c: e018 b.n 8001eb0 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001e7e: f7fe fe97 bl 8000bb0 + 8001e82: 4602 mov r2, r0 + 8001e84: 69fb ldr r3, [r7, #28] + 8001e86: 1ad3 subs r3, r2, r3 + 8001e88: 683a ldr r2, [r7, #0] + 8001e8a: 429a cmp r2, r3 + 8001e8c: d803 bhi.n 8001e96 + 8001e8e: 683b ldr r3, [r7, #0] + 8001e90: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001e94: d102 bne.n 8001e9c + 8001e96: 683b ldr r3, [r7, #0] + 8001e98: 2b00 cmp r3, #0 + 8001e9a: d109 bne.n 8001eb0 + { + hspi->State = HAL_SPI_STATE_READY; + 8001e9c: 68fb ldr r3, [r7, #12] + 8001e9e: 2201 movs r2, #1 + 8001ea0: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001ea4: 68fb ldr r3, [r7, #12] + 8001ea6: 2200 movs r2, #0 + 8001ea8: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001eac: 2303 movs r3, #3 + 8001eae: e082 b.n 8001fb6 + while (hspi->TxXferCount > 0U) + 8001eb0: 68fb ldr r3, [r7, #12] + 8001eb2: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001eb4: b29b uxth r3, r3 + 8001eb6: 2b00 cmp r3, #0 + 8001eb8: d1c7 bne.n 8001e4a + 8001eba: e053 b.n 8001f64 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8001ebc: 68fb ldr r3, [r7, #12] + 8001ebe: 685b ldr r3, [r3, #4] + 8001ec0: 2b00 cmp r3, #0 + 8001ec2: d002 beq.n 8001eca + 8001ec4: 8b7b ldrh r3, [r7, #26] + 8001ec6: 2b01 cmp r3, #1 + 8001ec8: d147 bne.n 8001f5a + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001eca: 68fb ldr r3, [r7, #12] + 8001ecc: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001ece: 68fb ldr r3, [r7, #12] + 8001ed0: 681b ldr r3, [r3, #0] + 8001ed2: 330c adds r3, #12 + 8001ed4: 7812 ldrb r2, [r2, #0] + 8001ed6: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001ed8: 68fb ldr r3, [r7, #12] + 8001eda: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001edc: 1c5a adds r2, r3, #1 + 8001ede: 68fb ldr r3, [r7, #12] + 8001ee0: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001ee2: 68fb ldr r3, [r7, #12] + 8001ee4: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001ee6: b29b uxth r3, r3 + 8001ee8: 3b01 subs r3, #1 + 8001eea: b29a uxth r2, r3 + 8001eec: 68fb ldr r3, [r7, #12] + 8001eee: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8001ef0: e033 b.n 8001f5a + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8001ef2: 68fb ldr r3, [r7, #12] + 8001ef4: 681b ldr r3, [r3, #0] + 8001ef6: 689b ldr r3, [r3, #8] + 8001ef8: f003 0302 and.w r3, r3, #2 + 8001efc: 2b02 cmp r3, #2 + 8001efe: d113 bne.n 8001f28 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8001f00: 68fb ldr r3, [r7, #12] + 8001f02: 6b1a ldr r2, [r3, #48] @ 0x30 + 8001f04: 68fb ldr r3, [r7, #12] + 8001f06: 681b ldr r3, [r3, #0] + 8001f08: 330c adds r3, #12 + 8001f0a: 7812 ldrb r2, [r2, #0] + 8001f0c: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8001f0e: 68fb ldr r3, [r7, #12] + 8001f10: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001f12: 1c5a adds r2, r3, #1 + 8001f14: 68fb ldr r3, [r7, #12] + 8001f16: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8001f18: 68fb ldr r3, [r7, #12] + 8001f1a: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f1c: b29b uxth r3, r3 + 8001f1e: 3b01 subs r3, #1 + 8001f20: b29a uxth r2, r3 + 8001f22: 68fb ldr r3, [r7, #12] + 8001f24: 86da strh r2, [r3, #54] @ 0x36 + 8001f26: e018 b.n 8001f5a + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8001f28: f7fe fe42 bl 8000bb0 + 8001f2c: 4602 mov r2, r0 + 8001f2e: 69fb ldr r3, [r7, #28] + 8001f30: 1ad3 subs r3, r2, r3 + 8001f32: 683a ldr r2, [r7, #0] + 8001f34: 429a cmp r2, r3 + 8001f36: d803 bhi.n 8001f40 + 8001f38: 683b ldr r3, [r7, #0] + 8001f3a: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001f3e: d102 bne.n 8001f46 + 8001f40: 683b ldr r3, [r7, #0] + 8001f42: 2b00 cmp r3, #0 + 8001f44: d109 bne.n 8001f5a + { + hspi->State = HAL_SPI_STATE_READY; + 8001f46: 68fb ldr r3, [r7, #12] + 8001f48: 2201 movs r2, #1 + 8001f4a: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8001f4e: 68fb ldr r3, [r7, #12] + 8001f50: 2200 movs r2, #0 + 8001f52: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 8001f56: 2303 movs r3, #3 + 8001f58: e02d b.n 8001fb6 + while (hspi->TxXferCount > 0U) + 8001f5a: 68fb ldr r3, [r7, #12] + 8001f5c: 8edb ldrh r3, [r3, #54] @ 0x36 + 8001f5e: b29b uxth r3, r3 + 8001f60: 2b00 cmp r3, #0 + 8001f62: d1c6 bne.n 8001ef2 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8001f64: 69fa ldr r2, [r7, #28] + 8001f66: 6839 ldr r1, [r7, #0] + 8001f68: 68f8 ldr r0, [r7, #12] + 8001f6a: f000 f8b1 bl 80020d0 + 8001f6e: 4603 mov r3, r0 + 8001f70: 2b00 cmp r3, #0 + 8001f72: d002 beq.n 8001f7a + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8001f74: 68fb ldr r3, [r7, #12] + 8001f76: 2220 movs r2, #32 + 8001f78: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 8001f7a: 68fb ldr r3, [r7, #12] + 8001f7c: 689b ldr r3, [r3, #8] + 8001f7e: 2b00 cmp r3, #0 + 8001f80: d10a bne.n 8001f98 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 8001f82: 2300 movs r3, #0 + 8001f84: 617b str r3, [r7, #20] + 8001f86: 68fb ldr r3, [r7, #12] + 8001f88: 681b ldr r3, [r3, #0] + 8001f8a: 68db ldr r3, [r3, #12] + 8001f8c: 617b str r3, [r7, #20] + 8001f8e: 68fb ldr r3, [r7, #12] + 8001f90: 681b ldr r3, [r3, #0] + 8001f92: 689b ldr r3, [r3, #8] + 8001f94: 617b str r3, [r7, #20] + 8001f96: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 8001f98: 68fb ldr r3, [r7, #12] + 8001f9a: 2201 movs r2, #1 + 8001f9c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8001fa0: 68fb ldr r3, [r7, #12] + 8001fa2: 2200 movs r2, #0 + 8001fa4: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8001fa8: 68fb ldr r3, [r7, #12] + 8001faa: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001fac: 2b00 cmp r3, #0 + 8001fae: d001 beq.n 8001fb4 + { + return HAL_ERROR; + 8001fb0: 2301 movs r3, #1 + 8001fb2: e000 b.n 8001fb6 + } + else + { + return HAL_OK; + 8001fb4: 2300 movs r3, #0 + } +} + 8001fb6: 4618 mov r0, r3 + 8001fb8: 3720 adds r7, #32 + 8001fba: 46bd mov sp, r7 + 8001fbc: bd80 pop {r7, pc} + ... + +08001fc0 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8001fc0: b580 push {r7, lr} + 8001fc2: b088 sub sp, #32 + 8001fc4: af00 add r7, sp, #0 + 8001fc6: 60f8 str r0, [r7, #12] + 8001fc8: 60b9 str r1, [r7, #8] + 8001fca: 603b str r3, [r7, #0] + 8001fcc: 4613 mov r3, r2 + 8001fce: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8001fd0: f7fe fdee bl 8000bb0 + 8001fd4: 4602 mov r2, r0 + 8001fd6: 6abb ldr r3, [r7, #40] @ 0x28 + 8001fd8: 1a9b subs r3, r3, r2 + 8001fda: 683a ldr r2, [r7, #0] + 8001fdc: 4413 add r3, r2 + 8001fde: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8001fe0: f7fe fde6 bl 8000bb0 + 8001fe4: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8001fe6: 4b39 ldr r3, [pc, #228] @ (80020cc ) + 8001fe8: 681b ldr r3, [r3, #0] + 8001fea: 015b lsls r3, r3, #5 + 8001fec: 0d1b lsrs r3, r3, #20 + 8001fee: 69fa ldr r2, [r7, #28] + 8001ff0: fb02 f303 mul.w r3, r2, r3 + 8001ff4: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8001ff6: e054 b.n 80020a2 + { + if (Timeout != HAL_MAX_DELAY) + 8001ff8: 683b ldr r3, [r7, #0] + 8001ffa: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8001ffe: d050 beq.n 80020a2 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8002000: f7fe fdd6 bl 8000bb0 + 8002004: 4602 mov r2, r0 + 8002006: 69bb ldr r3, [r7, #24] + 8002008: 1ad3 subs r3, r2, r3 + 800200a: 69fa ldr r2, [r7, #28] + 800200c: 429a cmp r2, r3 + 800200e: d902 bls.n 8002016 + 8002010: 69fb ldr r3, [r7, #28] + 8002012: 2b00 cmp r3, #0 + 8002014: d13d bne.n 8002092 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8002016: 68fb ldr r3, [r7, #12] + 8002018: 681b ldr r3, [r3, #0] + 800201a: 685a ldr r2, [r3, #4] + 800201c: 68fb ldr r3, [r7, #12] + 800201e: 681b ldr r3, [r3, #0] + 8002020: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002024: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002026: 68fb ldr r3, [r7, #12] + 8002028: 685b ldr r3, [r3, #4] + 800202a: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800202e: d111 bne.n 8002054 + 8002030: 68fb ldr r3, [r7, #12] + 8002032: 689b ldr r3, [r3, #8] + 8002034: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002038: d004 beq.n 8002044 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 800203a: 68fb ldr r3, [r7, #12] + 800203c: 689b ldr r3, [r3, #8] + 800203e: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8002042: d107 bne.n 8002054 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8002044: 68fb ldr r3, [r7, #12] + 8002046: 681b ldr r3, [r3, #0] + 8002048: 681a ldr r2, [r3, #0] + 800204a: 68fb ldr r3, [r7, #12] + 800204c: 681b ldr r3, [r3, #0] + 800204e: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8002052: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8002054: 68fb ldr r3, [r7, #12] + 8002056: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002058: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800205c: d10f bne.n 800207e + { + SPI_RESET_CRC(hspi); + 800205e: 68fb ldr r3, [r7, #12] + 8002060: 681b ldr r3, [r3, #0] + 8002062: 681a ldr r2, [r3, #0] + 8002064: 68fb ldr r3, [r7, #12] + 8002066: 681b ldr r3, [r3, #0] + 8002068: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 800206c: 601a str r2, [r3, #0] + 800206e: 68fb ldr r3, [r7, #12] + 8002070: 681b ldr r3, [r3, #0] + 8002072: 681a ldr r2, [r3, #0] + 8002074: 68fb ldr r3, [r7, #12] + 8002076: 681b ldr r3, [r3, #0] + 8002078: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 800207c: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 800207e: 68fb ldr r3, [r7, #12] + 8002080: 2201 movs r2, #1 + 8002082: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8002086: 68fb ldr r3, [r7, #12] + 8002088: 2200 movs r2, #0 + 800208a: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 800208e: 2303 movs r3, #3 + 8002090: e017 b.n 80020c2 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 8002092: 697b ldr r3, [r7, #20] + 8002094: 2b00 cmp r3, #0 + 8002096: d101 bne.n 800209c + { + tmp_timeout = 0U; + 8002098: 2300 movs r3, #0 + 800209a: 61fb str r3, [r7, #28] + } + count--; + 800209c: 697b ldr r3, [r7, #20] + 800209e: 3b01 subs r3, #1 + 80020a0: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 80020a2: 68fb ldr r3, [r7, #12] + 80020a4: 681b ldr r3, [r3, #0] + 80020a6: 689a ldr r2, [r3, #8] + 80020a8: 68bb ldr r3, [r7, #8] + 80020aa: 4013 ands r3, r2 + 80020ac: 68ba ldr r2, [r7, #8] + 80020ae: 429a cmp r2, r3 + 80020b0: bf0c ite eq + 80020b2: 2301 moveq r3, #1 + 80020b4: 2300 movne r3, #0 + 80020b6: b2db uxtb r3, r3 + 80020b8: 461a mov r2, r3 + 80020ba: 79fb ldrb r3, [r7, #7] + 80020bc: 429a cmp r2, r3 + 80020be: d19b bne.n 8001ff8 + } + } + + return HAL_OK; + 80020c0: 2300 movs r3, #0 +} + 80020c2: 4618 mov r0, r3 + 80020c4: 3720 adds r7, #32 + 80020c6: 46bd mov sp, r7 + 80020c8: bd80 pop {r7, pc} + 80020ca: bf00 nop + 80020cc: 20000000 .word 0x20000000 + +080020d0 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 80020d0: b580 push {r7, lr} + 80020d2: b088 sub sp, #32 + 80020d4: af02 add r7, sp, #8 + 80020d6: 60f8 str r0, [r7, #12] + 80020d8: 60b9 str r1, [r7, #8] + 80020da: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 80020dc: 687b ldr r3, [r7, #4] + 80020de: 9300 str r3, [sp, #0] + 80020e0: 68bb ldr r3, [r7, #8] + 80020e2: 2201 movs r2, #1 + 80020e4: 2102 movs r1, #2 + 80020e6: 68f8 ldr r0, [r7, #12] + 80020e8: f7ff ff6a bl 8001fc0 + 80020ec: 4603 mov r3, r0 + 80020ee: 2b00 cmp r3, #0 + 80020f0: d007 beq.n 8002102 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 80020f2: 68fb ldr r3, [r7, #12] + 80020f4: 6d5b ldr r3, [r3, #84] @ 0x54 + 80020f6: f043 0220 orr.w r2, r3, #32 + 80020fa: 68fb ldr r3, [r7, #12] + 80020fc: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80020fe: 2303 movs r3, #3 + 8002100: e032 b.n 8002168 + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8002102: 4b1b ldr r3, [pc, #108] @ (8002170 ) + 8002104: 681b ldr r3, [r3, #0] + 8002106: 4a1b ldr r2, [pc, #108] @ (8002174 ) + 8002108: fba2 2303 umull r2, r3, r2, r3 + 800210c: 0d5b lsrs r3, r3, #21 + 800210e: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8002112: fb02 f303 mul.w r3, r2, r3 + 8002116: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8002118: 68fb ldr r3, [r7, #12] + 800211a: 685b ldr r3, [r3, #4] + 800211c: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002120: d112 bne.n 8002148 + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8002122: 687b ldr r3, [r7, #4] + 8002124: 9300 str r3, [sp, #0] + 8002126: 68bb ldr r3, [r7, #8] + 8002128: 2200 movs r2, #0 + 800212a: 2180 movs r1, #128 @ 0x80 + 800212c: 68f8 ldr r0, [r7, #12] + 800212e: f7ff ff47 bl 8001fc0 + 8002132: 4603 mov r3, r0 + 8002134: 2b00 cmp r3, #0 + 8002136: d016 beq.n 8002166 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002138: 68fb ldr r3, [r7, #12] + 800213a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800213c: f043 0220 orr.w r2, r3, #32 + 8002140: 68fb ldr r3, [r7, #12] + 8002142: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 8002144: 2303 movs r3, #3 + 8002146: e00f b.n 8002168 + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 8002148: 697b ldr r3, [r7, #20] + 800214a: 2b00 cmp r3, #0 + 800214c: d00a beq.n 8002164 + { + break; + } + count--; + 800214e: 697b ldr r3, [r7, #20] + 8002150: 3b01 subs r3, #1 + 8002152: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 8002154: 68fb ldr r3, [r7, #12] + 8002156: 681b ldr r3, [r3, #0] + 8002158: 689b ldr r3, [r3, #8] + 800215a: f003 0380 and.w r3, r3, #128 @ 0x80 + 800215e: 2b80 cmp r3, #128 @ 0x80 + 8002160: d0f2 beq.n 8002148 + 8002162: e000 b.n 8002166 + break; + 8002164: bf00 nop + } + + return HAL_OK; + 8002166: 2300 movs r3, #0 +} + 8002168: 4618 mov r0, r3 + 800216a: 3718 adds r7, #24 + 800216c: 46bd mov sp, r7 + 800216e: bd80 pop {r7, pc} + 8002170: 20000000 .word 0x20000000 + 8002174: 165e9f81 .word 0x165e9f81 + +08002178 : +* Input : command byte to write +* Output : None +* Return : None +*******************************************************************************/ +void writecommand(unsigned char cmdout) +{ + 8002178: b580 push {r7, lr} + 800217a: b082 sub sp, #8 + 800217c: af00 add r7, sp, #0 + 800217e: 4603 mov r3, r0 + 8002180: 71fb strb r3, [r7, #7] + + //HAL_SPI_Transmit(&hspi1, &cmdout, 1, 100); // HAL_ERROR + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN << 16 ;// D/nC = 0 commande + 8002182: 4b0a ldr r3, [pc, #40] @ (80021ac ) + 8002184: f44f 2280 mov.w r2, #262144 @ 0x40000 + 8002188: 619a str r2, [r3, #24] + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN << 16 ;// nCS = 0 + 800218a: 4b08 ldr r3, [pc, #32] @ (80021ac ) + 800218c: f44f 3200 mov.w r2, #131072 @ 0x20000 + 8002190: 619a str r2, [r3, #24] + HAL_SPI_Transmit(&hspi1, &cmdout, 1, 100); // + 8002192: 1df9 adds r1, r7, #7 + 8002194: 2364 movs r3, #100 @ 0x64 + 8002196: 2201 movs r2, #1 + 8002198: 4805 ldr r0, [pc, #20] @ (80021b0 ) + 800219a: f7ff fdcc bl 8001d36 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + 800219e: 4b03 ldr r3, [pc, #12] @ (80021ac ) + 80021a0: 2202 movs r2, #2 + 80021a2: 619a str r2, [r3, #24] + +} + 80021a4: bf00 nop + 80021a6: 3708 adds r7, #8 + 80021a8: 46bd mov sp, r7 + 80021aa: bd80 pop {r7, pc} + 80021ac: 40020800 .word 0x40020800 + 80021b0: 20000078 .word 0x20000078 + +080021b4 : +* Input : data byte to write +* Output : None +* Return : None +*******************************************************************************/ +void writedata(unsigned char dataout) +{ + 80021b4: b580 push {r7, lr} + 80021b6: b082 sub sp, #8 + 80021b8: af00 add r7, sp, #0 + 80021ba: 4603 mov r3, r0 + 80021bc: 71fb strb r3, [r7, #7] + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + + + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + 80021be: 4b0a ldr r3, [pc, #40] @ (80021e8 ) + 80021c0: 2204 movs r2, #4 + 80021c2: 619a str r2, [r3, #24] + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN << 16 ;// nCS = 0 + 80021c4: 4b08 ldr r3, [pc, #32] @ (80021e8 ) + 80021c6: f44f 3200 mov.w r2, #131072 @ 0x20000 + 80021ca: 619a str r2, [r3, #24] + HAL_SPI_Transmit(&hspi1, &dataout, 1, 100); // + 80021cc: 1df9 adds r1, r7, #7 + 80021ce: 2364 movs r3, #100 @ 0x64 + 80021d0: 2201 movs r2, #1 + 80021d2: 4806 ldr r0, [pc, #24] @ (80021ec ) + 80021d4: f7ff fdaf bl 8001d36 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + 80021d8: 4b03 ldr r3, [pc, #12] @ (80021e8 ) + 80021da: 2202 movs r2, #2 + 80021dc: 619a str r2, [r3, #24] + +} + 80021de: bf00 nop + 80021e0: 3708 adds r7, #8 + 80021e2: 46bd mov sp, r7 + 80021e4: bd80 pop {r7, pc} + 80021e6: bf00 nop + 80021e8: 40020800 .word 0x40020800 + 80021ec: 20000078 .word 0x20000078 + +080021f0 : +* Input : addr = pointer on command byte array +* Output : None +* Return : None +*******************************************************************************/ +void commandList(const uint8_t *addr) +{ + 80021f0: b580 push {r7, lr} + 80021f2: b084 sub sp, #16 + 80021f4: af00 add r7, sp, #0 + 80021f6: 6078 str r0, [r7, #4] + uint8_t numCommands, numArgs; + uint16_t ms; + + numCommands = pgm_read_byte(addr++); // Number of commands to follow + 80021f8: 687b ldr r3, [r7, #4] + 80021fa: 1c5a adds r2, r3, #1 + 80021fc: 607a str r2, [r7, #4] + 80021fe: 781b ldrb r3, [r3, #0] + 8002200: 73fb strb r3, [r7, #15] + while(numCommands--) + 8002202: e033 b.n 800226c + { // For each command... + writecommand(pgm_read_byte(addr++)); // Read, issue command + 8002204: 687b ldr r3, [r7, #4] + 8002206: 1c5a adds r2, r3, #1 + 8002208: 607a str r2, [r7, #4] + 800220a: 781b ldrb r3, [r3, #0] + 800220c: 4618 mov r0, r3 + 800220e: f7ff ffb3 bl 8002178 + numArgs = pgm_read_byte(addr++); // Number of args to follow + 8002212: 687b ldr r3, [r7, #4] + 8002214: 1c5a adds r2, r3, #1 + 8002216: 607a str r2, [r7, #4] + 8002218: 781b ldrb r3, [r3, #0] + 800221a: 73bb strb r3, [r7, #14] + ms = numArgs & DELAY; // If hibit set, delay follows args + 800221c: 7bbb ldrb r3, [r7, #14] + 800221e: b29b uxth r3, r3 + 8002220: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002224: 81bb strh r3, [r7, #12] + numArgs &= ~DELAY; // Mask out delay bit + 8002226: 7bbb ldrb r3, [r7, #14] + 8002228: f003 037f and.w r3, r3, #127 @ 0x7f + 800222c: 73bb strb r3, [r7, #14] + while(numArgs--) { // For each argument... + 800222e: e006 b.n 800223e + writedata(pgm_read_byte(addr++)); // Read, issue argument + 8002230: 687b ldr r3, [r7, #4] + 8002232: 1c5a adds r2, r3, #1 + 8002234: 607a str r2, [r7, #4] + 8002236: 781b ldrb r3, [r3, #0] + 8002238: 4618 mov r0, r3 + 800223a: f7ff ffbb bl 80021b4 + while(numArgs--) { // For each argument... + 800223e: 7bbb ldrb r3, [r7, #14] + 8002240: 1e5a subs r2, r3, #1 + 8002242: 73ba strb r2, [r7, #14] + 8002244: 2b00 cmp r3, #0 + 8002246: d1f3 bne.n 8002230 + } + + if(ms) { + 8002248: 89bb ldrh r3, [r7, #12] + 800224a: 2b00 cmp r3, #0 + 800224c: d00e beq.n 800226c + ms = pgm_read_byte(addr++); // Read post-command delay time (ms) + 800224e: 687b ldr r3, [r7, #4] + 8002250: 1c5a adds r2, r3, #1 + 8002252: 607a str r2, [r7, #4] + 8002254: 781b ldrb r3, [r3, #0] + 8002256: 81bb strh r3, [r7, #12] + if(ms == 255) ms = 500; // If 255, delay for 500 ms + 8002258: 89bb ldrh r3, [r7, #12] + 800225a: 2bff cmp r3, #255 @ 0xff + 800225c: d102 bne.n 8002264 + 800225e: f44f 73fa mov.w r3, #500 @ 0x1f4 + 8002262: 81bb strh r3, [r7, #12] + HAL_Delay(500); + 8002264: f44f 70fa mov.w r0, #500 @ 0x1f4 + 8002268: f7fe fcac bl 8000bc4 + while(numCommands--) + 800226c: 7bfb ldrb r3, [r7, #15] + 800226e: 1e5a subs r2, r3, #1 + 8002270: 73fa strb r2, [r7, #15] + 8002272: 2b00 cmp r3, #0 + 8002274: d1c6 bne.n 8002204 + } + } +} + 8002276: bf00 nop + 8002278: bf00 nop + 800227a: 3710 adds r7, #16 + 800227c: 46bd mov sp, r7 + 800227e: bd80 pop {r7, pc} + +08002280 : +* : y2 vertical position = y1 to ST7735_TFTHEIGHT-1-y1 +* Output : None +* Return : None +*******************************************************************************/ +void setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) +{ + 8002280: b590 push {r4, r7, lr} + 8002282: b083 sub sp, #12 + 8002284: af00 add r7, sp, #0 + 8002286: 4604 mov r4, r0 + 8002288: 4608 mov r0, r1 + 800228a: 4611 mov r1, r2 + 800228c: 461a mov r2, r3 + 800228e: 4623 mov r3, r4 + 8002290: 71fb strb r3, [r7, #7] + 8002292: 4603 mov r3, r0 + 8002294: 71bb strb r3, [r7, #6] + 8002296: 460b mov r3, r1 + 8002298: 717b strb r3, [r7, #5] + 800229a: 4613 mov r3, r2 + 800229c: 713b strb r3, [r7, #4] + + writecommand(ST7735_CASET); // Column addr set + 800229e: 202a movs r0, #42 @ 0x2a + 80022a0: f7ff ff6a bl 8002178 + writedata(0x00); + 80022a4: 2000 movs r0, #0 + 80022a6: f7ff ff85 bl 80021b4 + writedata(x0); // XSTART + 80022aa: 79fb ldrb r3, [r7, #7] + 80022ac: 4618 mov r0, r3 + 80022ae: f7ff ff81 bl 80021b4 + writedata(0x00); + 80022b2: 2000 movs r0, #0 + 80022b4: f7ff ff7e bl 80021b4 + writedata(x1); // XEND + 80022b8: 797b ldrb r3, [r7, #5] + 80022ba: 4618 mov r0, r3 + 80022bc: f7ff ff7a bl 80021b4 + + writecommand(ST7735_RASET); // Row addr set + 80022c0: 202b movs r0, #43 @ 0x2b + 80022c2: f7ff ff59 bl 8002178 + writedata(0x00); + 80022c6: 2000 movs r0, #0 + 80022c8: f7ff ff74 bl 80021b4 + writedata(y0); // YSTART + 80022cc: 79bb ldrb r3, [r7, #6] + 80022ce: 4618 mov r0, r3 + 80022d0: f7ff ff70 bl 80021b4 + writedata(0x00); + 80022d4: 2000 movs r0, #0 + 80022d6: f7ff ff6d bl 80021b4 + writedata(y1); // YEND + 80022da: 793b ldrb r3, [r7, #4] + 80022dc: 4618 mov r0, r3 + 80022de: f7ff ff69 bl 80021b4 + + writecommand(ST7735_RAMWR); // write to RAM + 80022e2: 202c movs r0, #44 @ 0x2c + 80022e4: f7ff ff48 bl 8002178 +} + 80022e8: bf00 nop + 80022ea: 370c adds r7, #12 + 80022ec: 46bd mov sp, r7 + 80022ee: bd90 pop {r4, r7, pc} + +080022f0 : +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void init_TFT( void) +{ + 80022f0: b580 push {r7, lr} + 80022f2: b082 sub sp, #8 + 80022f4: af02 add r7, sp, #8 + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, 1); // nRESET = 1 + attend_500ms(); + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1*/ + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // DC= 1 + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + 80022f6: 4b1e ldr r3, [pc, #120] @ (8002370 ) + 80022f8: 2204 movs r2, #4 + 80022fa: 619a str r2, [r3, #24] + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN;// nRESET = 1 + 80022fc: 4b1d ldr r3, [pc, #116] @ (8002374 ) + 80022fe: 2204 movs r2, #4 + 8002300: 619a str r2, [r3, #24] + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + 8002302: 4b1b ldr r3, [pc, #108] @ (8002370 ) + 8002304: f44f 3200 mov.w r2, #131072 @ 0x20000 + 8002308: 619a str r2, [r3, #24] + HAL_Delay(500); + 800230a: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800230e: f7fe fc59 bl 8000bc4 + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN<<16;// nRESET = 0 + 8002312: 4b18 ldr r3, [pc, #96] @ (8002374 ) + 8002314: f44f 2280 mov.w r2, #262144 @ 0x40000 + 8002318: 619a str r2, [r3, #24] + HAL_Delay(500); + 800231a: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800231e: f7fe fc51 bl 8000bc4 + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN;// nRESET = 1 + 8002322: 4b14 ldr r3, [pc, #80] @ (8002374 ) + 8002324: 2204 movs r2, #4 + 8002326: 619a str r2, [r3, #24] + HAL_Delay(500); + 8002328: f44f 70fa mov.w r0, #500 @ 0x1f4 + 800232c: f7fe fc4a bl 8000bc4 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + 8002330: 4b0f ldr r3, [pc, #60] @ (8002370 ) + 8002332: 2202 movs r2, #2 + 8002334: 619a str r2, [r3, #24] + + // initialization instruction + commandList(Rcmd1); + 8002336: 4810 ldr r0, [pc, #64] @ (8002378 ) + 8002338: f7ff ff5a bl 80021f0 + commandList(Rcmd2red); + 800233c: 480f ldr r0, [pc, #60] @ (800237c ) + 800233e: f7ff ff57 bl 80021f0 + commandList(Rcmd3); + 8002342: 480f ldr r0, [pc, #60] @ (8002380 ) + 8002344: f7ff ff54 bl 80021f0 + + writecommand(ST7735_MADCTL); + 8002348: 2036 movs r0, #54 @ 0x36 + 800234a: f7ff ff15 bl 8002178 + writedata(0xC0); + 800234e: 20c0 movs r0, #192 @ 0xc0 + 8002350: f7ff ff30 bl 80021b4 + + // all display background is black + fillRect_TFT(0, 0, ST7735_TFTWIDTH, ST7735_TFTHEIGHT_18, ST7735_BLACK); + 8002354: 2300 movs r3, #0 + 8002356: 9300 str r3, [sp, #0] + 8002358: 23a0 movs r3, #160 @ 0xa0 + 800235a: 2280 movs r2, #128 @ 0x80 + 800235c: 2100 movs r1, #0 + 800235e: 2000 movs r0, #0 + 8002360: f000 f856 bl 8002410 + + // display LOGO + displayLogo_TFT(); + 8002364: f000 f998 bl 8002698 +} + 8002368: bf00 nop + 800236a: 46bd mov sp, r7 + 800236c: bd80 pop {r7, pc} + 800236e: bf00 nop + 8002370: 40020800 .word 0x40020800 + 8002374: 40020c00 .word 0x40020c00 + 8002378: 080029a8 .word 0x080029a8 + 800237c: 080029e4 .word 0x080029e4 + 8002380: 080029f4 .word 0x080029f4 + +08002384 : +* : color = 16bits RGB=(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void drawPixel_TFT(uint16_t x, uint16_t y, uint16_t color) +{ + 8002384: b580 push {r7, lr} + 8002386: b084 sub sp, #16 + 8002388: af00 add r7, sp, #0 + 800238a: 4603 mov r3, r0 + 800238c: 80fb strh r3, [r7, #6] + 800238e: 460b mov r3, r1 + 8002390: 80bb strh r3, [r7, #4] + 8002392: 4613 mov r3, r2 + 8002394: 807b strh r3, [r7, #2] + uint8_t hi, lo; + + // rudimentary clipping (drawChar w/big text requires this) + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + 8002396: 88fb ldrh r3, [r7, #6] + 8002398: 2b7f cmp r3, #127 @ 0x7f + 800239a: d831 bhi.n 8002400 + 800239c: 88bb ldrh r3, [r7, #4] + 800239e: 2b9f cmp r3, #159 @ 0x9f + 80023a0: d82e bhi.n 8002400 + + setAddrWindow(x, y, x+1, y+1); + 80023a2: 88fb ldrh r3, [r7, #6] + 80023a4: b2d8 uxtb r0, r3 + 80023a6: 88bb ldrh r3, [r7, #4] + 80023a8: b2d9 uxtb r1, r3 + 80023aa: 88fb ldrh r3, [r7, #6] + 80023ac: b2db uxtb r3, r3 + 80023ae: 3301 adds r3, #1 + 80023b0: b2da uxtb r2, r3 + 80023b2: 88bb ldrh r3, [r7, #4] + 80023b4: b2db uxtb r3, r3 + 80023b6: 3301 adds r3, #1 + 80023b8: b2db uxtb r3, r3 + 80023ba: f7ff ff61 bl 8002280 + + hi = color >> 8; + 80023be: 887b ldrh r3, [r7, #2] + 80023c0: 0a1b lsrs r3, r3, #8 + 80023c2: b29b uxth r3, r3 + 80023c4: b2db uxtb r3, r3 + 80023c6: 73fb strb r3, [r7, #15] + lo = color ; + 80023c8: 887b ldrh r3, [r7, #2] + 80023ca: b2db uxtb r3, r3 + 80023cc: 73bb strb r3, [r7, #14] + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1*/ + + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + 80023ce: 4b0e ldr r3, [pc, #56] @ (8002408 ) + 80023d0: 2204 movs r2, #4 + 80023d2: 619a str r2, [r3, #24] + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + 80023d4: 4b0c ldr r3, [pc, #48] @ (8002408 ) + 80023d6: f44f 3200 mov.w r2, #131072 @ 0x20000 + 80023da: 619a str r2, [r3, #24] + + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + 80023dc: f107 010f add.w r1, r7, #15 + 80023e0: 2364 movs r3, #100 @ 0x64 + 80023e2: 2201 movs r2, #1 + 80023e4: 4809 ldr r0, [pc, #36] @ (800240c ) + 80023e6: f7ff fca6 bl 8001d36 + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + 80023ea: f107 010e add.w r1, r7, #14 + 80023ee: 2364 movs r3, #100 @ 0x64 + 80023f0: 2201 movs r2, #1 + 80023f2: 4806 ldr r0, [pc, #24] @ (800240c ) + 80023f4: f7ff fc9f bl 8001d36 + + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + 80023f8: 4b03 ldr r3, [pc, #12] @ (8002408 ) + 80023fa: 2202 movs r2, #2 + 80023fc: 619a str r2, [r3, #24] + 80023fe: e000 b.n 8002402 + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + 8002400: bf00 nop +} + 8002402: 3710 adds r7, #16 + 8002404: 46bd mov sp, r7 + 8002406: bd80 pop {r7, pc} + 8002408: 40020800 .word 0x40020800 + 800240c: 20000078 .word 0x20000078 + +08002410 : +* : color = 16bits RGB(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void fillRect_TFT(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + 8002410: b590 push {r4, r7, lr} + 8002412: b085 sub sp, #20 + 8002414: af00 add r7, sp, #0 + 8002416: 4604 mov r4, r0 + 8002418: 4608 mov r0, r1 + 800241a: 4611 mov r1, r2 + 800241c: 461a mov r2, r3 + 800241e: 4623 mov r3, r4 + 8002420: 80fb strh r3, [r7, #6] + 8002422: 4603 mov r3, r0 + 8002424: 80bb strh r3, [r7, #4] + 8002426: 460b mov r3, r1 + 8002428: 807b strh r3, [r7, #2] + 800242a: 4613 mov r3, r2 + 800242c: 803b strh r3, [r7, #0] + uint8_t hi, lo; + + // rudimentary clipping (drawChar w/big text requires this) + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + 800242e: 88fb ldrh r3, [r7, #6] + 8002430: 2b7f cmp r3, #127 @ 0x7f + 8002432: d85e bhi.n 80024f2 + 8002434: 88bb ldrh r3, [r7, #4] + 8002436: 2b9f cmp r3, #159 @ 0x9f + 8002438: d85b bhi.n 80024f2 + + if((x + w - 1) >= ST7735_TFTWIDTH) w = ST7735_TFTWIDTH - x; + 800243a: 88fa ldrh r2, [r7, #6] + 800243c: 887b ldrh r3, [r7, #2] + 800243e: 4413 add r3, r2 + 8002440: 2b80 cmp r3, #128 @ 0x80 + 8002442: dd03 ble.n 800244c + 8002444: 88fb ldrh r3, [r7, #6] + 8002446: f1c3 0380 rsb r3, r3, #128 @ 0x80 + 800244a: 807b strh r3, [r7, #2] + if((y + h - 1) >= ST7735_TFTHEIGHT_18) h = ST7735_TFTHEIGHT_18 - y; + 800244c: 88ba ldrh r2, [r7, #4] + 800244e: 883b ldrh r3, [r7, #0] + 8002450: 4413 add r3, r2 + 8002452: 2ba0 cmp r3, #160 @ 0xa0 + 8002454: dd03 ble.n 800245e + 8002456: 88bb ldrh r3, [r7, #4] + 8002458: f1c3 03a0 rsb r3, r3, #160 @ 0xa0 + 800245c: 803b strh r3, [r7, #0] + + // select window + setAddrWindow(x, y, x+w-1, y+h-1); + 800245e: 88fb ldrh r3, [r7, #6] + 8002460: b2d8 uxtb r0, r3 + 8002462: 88bb ldrh r3, [r7, #4] + 8002464: b2d9 uxtb r1, r3 + 8002466: 88fb ldrh r3, [r7, #6] + 8002468: b2da uxtb r2, r3 + 800246a: 887b ldrh r3, [r7, #2] + 800246c: b2db uxtb r3, r3 + 800246e: 4413 add r3, r2 + 8002470: b2db uxtb r3, r3 + 8002472: 3b01 subs r3, #1 + 8002474: b2dc uxtb r4, r3 + 8002476: 88bb ldrh r3, [r7, #4] + 8002478: b2da uxtb r2, r3 + 800247a: 883b ldrh r3, [r7, #0] + 800247c: b2db uxtb r3, r3 + 800247e: 4413 add r3, r2 + 8002480: b2db uxtb r3, r3 + 8002482: 3b01 subs r3, #1 + 8002484: b2db uxtb r3, r3 + 8002486: 4622 mov r2, r4 + 8002488: f7ff fefa bl 8002280 + + hi = color >> 8; + 800248c: 8c3b ldrh r3, [r7, #32] + 800248e: 0a1b lsrs r3, r3, #8 + 8002490: b29b uxth r3, r3 + 8002492: b2db uxtb r3, r3 + 8002494: 73fb strb r3, [r7, #15] + lo = color ; + 8002496: 8c3b ldrh r3, [r7, #32] + 8002498: b2db uxtb r3, r3 + 800249a: 73bb strb r3, [r7, #14] + */ + + /*HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // D/nC = 1 data + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0*/ + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + 800249c: 4b17 ldr r3, [pc, #92] @ (80024fc ) + 800249e: 2204 movs r2, #4 + 80024a0: 619a str r2, [r3, #24] + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + 80024a2: 4b16 ldr r3, [pc, #88] @ (80024fc ) + 80024a4: f44f 3200 mov.w r2, #131072 @ 0x20000 + 80024a8: 619a str r2, [r3, #24] + + for(y=h; y>0; y--) + 80024aa: 883b ldrh r3, [r7, #0] + 80024ac: 80bb strh r3, [r7, #4] + 80024ae: e019 b.n 80024e4 + { + for(x=w; x>0; x--) + 80024b0: 887b ldrh r3, [r7, #2] + 80024b2: 80fb strh r3, [r7, #6] + 80024b4: e010 b.n 80024d8 + { + + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + 80024b6: f107 010f add.w r1, r7, #15 + 80024ba: 2364 movs r3, #100 @ 0x64 + 80024bc: 2201 movs r2, #1 + 80024be: 4810 ldr r0, [pc, #64] @ (8002500 ) + 80024c0: f7ff fc39 bl 8001d36 + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + 80024c4: f107 010e add.w r1, r7, #14 + 80024c8: 2364 movs r3, #100 @ 0x64 + 80024ca: 2201 movs r2, #1 + 80024cc: 480c ldr r0, [pc, #48] @ (8002500 ) + 80024ce: f7ff fc32 bl 8001d36 + for(x=w; x>0; x--) + 80024d2: 88fb ldrh r3, [r7, #6] + 80024d4: 3b01 subs r3, #1 + 80024d6: 80fb strh r3, [r7, #6] + 80024d8: 88fb ldrh r3, [r7, #6] + 80024da: 2b00 cmp r3, #0 + 80024dc: d1eb bne.n 80024b6 + for(y=h; y>0; y--) + 80024de: 88bb ldrh r3, [r7, #4] + 80024e0: 3b01 subs r3, #1 + 80024e2: 80bb strh r3, [r7, #4] + 80024e4: 88bb ldrh r3, [r7, #4] + 80024e6: 2b00 cmp r3, #0 + 80024e8: d1e2 bne.n 80024b0 + + } + } + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + 80024ea: 4b04 ldr r3, [pc, #16] @ (80024fc ) + 80024ec: 2202 movs r2, #2 + 80024ee: 619a str r2, [r3, #24] + 80024f0: e000 b.n 80024f4 + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + 80024f2: bf00 nop + +} + 80024f4: 3714 adds r7, #20 + 80024f6: 46bd mov sp, r7 + 80024f8: bd90 pop {r4, r7, pc} + 80024fa: bf00 nop + 80024fc: 40020800 .word 0x40020800 + 8002500: 20000078 .word 0x20000078 + +08002504 : +* : size = 1 to 10 +* Output : None +* Return : None +*******************************************************************************/ +void displayChar_TFT(uint16_t x, uint16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size) +{ + 8002504: b590 push {r4, r7, lr} + 8002506: b087 sub sp, #28 + 8002508: af02 add r7, sp, #8 + 800250a: 4604 mov r4, r0 + 800250c: 4608 mov r0, r1 + 800250e: 4611 mov r1, r2 + 8002510: 461a mov r2, r3 + 8002512: 4623 mov r3, r4 + 8002514: 80fb strh r3, [r7, #6] + 8002516: 4603 mov r3, r0 + 8002518: 80bb strh r3, [r7, #4] + 800251a: 460b mov r3, r1 + 800251c: 70fb strb r3, [r7, #3] + 800251e: 4613 mov r3, r2 + 8002520: 803b strh r3, [r7, #0] + uint8_t i,j,line; + + + if((x >= ST7735_TFTWIDTH) || // Clip right + 8002522: 88fb ldrh r3, [r7, #6] + 8002524: 2b7f cmp r3, #127 @ 0x7f + 8002526: f200 80b1 bhi.w 800268c + 800252a: 88bb ldrh r3, [r7, #4] + 800252c: 2b9f cmp r3, #159 @ 0x9f + 800252e: f200 80ad bhi.w 800268c + (y >= ST7735_TFTHEIGHT_18) || // Clip bottom + ((x + 6 * size - 1) < 0) || // Clip left + 8002532: 88f9 ldrh r1, [r7, #6] + 8002534: f897 2024 ldrb.w r2, [r7, #36] @ 0x24 + 8002538: 4613 mov r3, r2 + 800253a: 005b lsls r3, r3, #1 + 800253c: 4413 add r3, r2 + 800253e: 005b lsls r3, r3, #1 + 8002540: 440b add r3, r1 + (y >= ST7735_TFTHEIGHT_18) || // Clip bottom + 8002542: 2b00 cmp r3, #0 + 8002544: f340 80a2 ble.w 800268c + ((y + 8 * size - 1) < 0)) // Clip top + 8002548: 88ba ldrh r2, [r7, #4] + 800254a: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 800254e: 00db lsls r3, r3, #3 + 8002550: 4413 add r3, r2 + ((x + 6 * size - 1) < 0) || // Clip left + 8002552: 2b00 cmp r3, #0 + 8002554: f340 809a ble.w 800268c + return; + + for (i=0; i<6; i++ ) + 8002558: 2300 movs r3, #0 + 800255a: 73fb strb r3, [r7, #15] + 800255c: e091 b.n 8002682 + { + if (i == 5) + 800255e: 7bfb ldrb r3, [r7, #15] + 8002560: 2b05 cmp r3, #5 + 8002562: d102 bne.n 800256a + line = 0x0; + 8002564: 2300 movs r3, #0 + 8002566: 737b strb r3, [r7, #13] + 8002568: e00a b.n 8002580 + else + line = pgm_read_byte(tab_font + (c*5) + i); + 800256a: 78fa ldrb r2, [r7, #3] + 800256c: 4613 mov r3, r2 + 800256e: 009b lsls r3, r3, #2 + 8002570: 4413 add r3, r2 + 8002572: 461a mov r2, r3 + 8002574: 7bfb ldrb r3, [r7, #15] + 8002576: 4413 add r3, r2 + 8002578: 4a46 ldr r2, [pc, #280] @ (8002694 ) + 800257a: 4413 add r3, r2 + 800257c: 781b ldrb r3, [r3, #0] + 800257e: 737b strb r3, [r7, #13] + + for ( j = 0; j<8; j++) + 8002580: 2300 movs r3, #0 + 8002582: 73bb strb r3, [r7, #14] + 8002584: e077 b.n 8002676 + { + if (line & 0x1) + 8002586: 7b7b ldrb r3, [r7, #13] + 8002588: f003 0301 and.w r3, r3, #1 + 800258c: 2b00 cmp r3, #0 + 800258e: d034 beq.n 80025fa + { + if (size == 1) // default size + 8002590: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 8002594: 2b01 cmp r3, #1 + 8002596: d10e bne.n 80025b6 + drawPixel_TFT(x+i, y+j, color); + 8002598: 7bfb ldrb r3, [r7, #15] + 800259a: b29a uxth r2, r3 + 800259c: 88fb ldrh r3, [r7, #6] + 800259e: 4413 add r3, r2 + 80025a0: b298 uxth r0, r3 + 80025a2: 7bbb ldrb r3, [r7, #14] + 80025a4: b29a uxth r2, r3 + 80025a6: 88bb ldrh r3, [r7, #4] + 80025a8: 4413 add r3, r2 + 80025aa: b29b uxth r3, r3 + 80025ac: 883a ldrh r2, [r7, #0] + 80025ae: 4619 mov r1, r3 + 80025b0: f7ff fee8 bl 8002384 + 80025b4: e059 b.n 800266a + else + { // big size + fillRect_TFT(x+(i*size), y+(j*size), size, size, color); + 80025b6: 7bfb ldrb r3, [r7, #15] + 80025b8: b29b uxth r3, r3 + 80025ba: f897 2024 ldrb.w r2, [r7, #36] @ 0x24 + 80025be: b292 uxth r2, r2 + 80025c0: fb02 f303 mul.w r3, r2, r3 + 80025c4: b29a uxth r2, r3 + 80025c6: 88fb ldrh r3, [r7, #6] + 80025c8: 4413 add r3, r2 + 80025ca: b298 uxth r0, r3 + 80025cc: 7bbb ldrb r3, [r7, #14] + 80025ce: b29b uxth r3, r3 + 80025d0: f897 2024 ldrb.w r2, [r7, #36] @ 0x24 + 80025d4: b292 uxth r2, r2 + 80025d6: fb02 f303 mul.w r3, r2, r3 + 80025da: b29a uxth r2, r3 + 80025dc: 88bb ldrh r3, [r7, #4] + 80025de: 4413 add r3, r2 + 80025e0: b299 uxth r1, r3 + 80025e2: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 80025e6: b29a uxth r2, r3 + 80025e8: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 80025ec: b29c uxth r4, r3 + 80025ee: 883b ldrh r3, [r7, #0] + 80025f0: 9300 str r3, [sp, #0] + 80025f2: 4623 mov r3, r4 + 80025f4: f7ff ff0c bl 8002410 + 80025f8: e037 b.n 800266a + } + } + else if (bg != color) + 80025fa: 8c3a ldrh r2, [r7, #32] + 80025fc: 883b ldrh r3, [r7, #0] + 80025fe: 429a cmp r2, r3 + 8002600: d033 beq.n 800266a + { + if (size == 1) // default size + 8002602: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 8002606: 2b01 cmp r3, #1 + 8002608: d10e bne.n 8002628 + drawPixel_TFT(x+i, y+j, bg); + 800260a: 7bfb ldrb r3, [r7, #15] + 800260c: b29a uxth r2, r3 + 800260e: 88fb ldrh r3, [r7, #6] + 8002610: 4413 add r3, r2 + 8002612: b298 uxth r0, r3 + 8002614: 7bbb ldrb r3, [r7, #14] + 8002616: b29a uxth r2, r3 + 8002618: 88bb ldrh r3, [r7, #4] + 800261a: 4413 add r3, r2 + 800261c: b29b uxth r3, r3 + 800261e: 8c3a ldrh r2, [r7, #32] + 8002620: 4619 mov r1, r3 + 8002622: f7ff feaf bl 8002384 + 8002626: e020 b.n 800266a + else + { // big size + fillRect_TFT(x+i*size, y+j*size, size, size, bg); + 8002628: 7bfb ldrb r3, [r7, #15] + 800262a: b29b uxth r3, r3 + 800262c: f897 2024 ldrb.w r2, [r7, #36] @ 0x24 + 8002630: b292 uxth r2, r2 + 8002632: fb02 f303 mul.w r3, r2, r3 + 8002636: b29a uxth r2, r3 + 8002638: 88fb ldrh r3, [r7, #6] + 800263a: 4413 add r3, r2 + 800263c: b298 uxth r0, r3 + 800263e: 7bbb ldrb r3, [r7, #14] + 8002640: b29b uxth r3, r3 + 8002642: f897 2024 ldrb.w r2, [r7, #36] @ 0x24 + 8002646: b292 uxth r2, r2 + 8002648: fb02 f303 mul.w r3, r2, r3 + 800264c: b29a uxth r2, r3 + 800264e: 88bb ldrh r3, [r7, #4] + 8002650: 4413 add r3, r2 + 8002652: b299 uxth r1, r3 + 8002654: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 8002658: b29a uxth r2, r3 + 800265a: f897 3024 ldrb.w r3, [r7, #36] @ 0x24 + 800265e: b29c uxth r4, r3 + 8002660: 8c3b ldrh r3, [r7, #32] + 8002662: 9300 str r3, [sp, #0] + 8002664: 4623 mov r3, r4 + 8002666: f7ff fed3 bl 8002410 + } + } + line = line >> 1; + 800266a: 7b7b ldrb r3, [r7, #13] + 800266c: 085b lsrs r3, r3, #1 + 800266e: 737b strb r3, [r7, #13] + for ( j = 0; j<8; j++) + 8002670: 7bbb ldrb r3, [r7, #14] + 8002672: 3301 adds r3, #1 + 8002674: 73bb strb r3, [r7, #14] + 8002676: 7bbb ldrb r3, [r7, #14] + 8002678: 2b07 cmp r3, #7 + 800267a: d984 bls.n 8002586 + for (i=0; i<6; i++ ) + 800267c: 7bfb ldrb r3, [r7, #15] + 800267e: 3301 adds r3, #1 + 8002680: 73fb strb r3, [r7, #15] + 8002682: 7bfb ldrb r3, [r7, #15] + 8002684: 2b05 cmp r3, #5 + 8002686: f67f af6a bls.w 800255e + 800268a: e000 b.n 800268e + return; + 800268c: bf00 nop + } + } +} + 800268e: 3714 adds r7, #20 + 8002690: 46bd mov sp, r7 + 8002692: bd90 pop {r4, r7, pc} + 8002694: 08002a20 .word 0x08002a20 + +08002698 : +* Input : +* Output : None +* Return : None +*******************************************************************************/ +void displayLogo_TFT( void) +{ + 8002698: b580 push {r7, lr} + 800269a: b082 sub sp, #8 + 800269c: af00 add r7, sp, #0 + uint8_t i,j,k,line; + uint16_t color=ST7735_WHITE; + 800269e: f64f 73ff movw r3, #65535 @ 0xffff + 80026a2: 807b strh r3, [r7, #2] + + + + for(i=0;i<=120;i++) + 80026a4: 2300 movs r3, #0 + 80026a6: 71fb strb r3, [r7, #7] + 80026a8: e09e b.n 80027e8 + { + + for(j=0;j<= 1;j++) + 80026aa: 2300 movs r3, #0 + 80026ac: 71bb strb r3, [r7, #6] + 80026ae: e02b b.n 8002708 + { + line=(ALL_IS_mono_120[i+120*j]); + 80026b0: 79f9 ldrb r1, [r7, #7] + 80026b2: 79ba ldrb r2, [r7, #6] + 80026b4: 4613 mov r3, r2 + 80026b6: 011b lsls r3, r3, #4 + 80026b8: 1a9b subs r3, r3, r2 + 80026ba: 00db lsls r3, r3, #3 + 80026bc: 440b add r3, r1 + 80026be: 4a4f ldr r2, [pc, #316] @ (80027fc ) + 80026c0: 5cd3 ldrb r3, [r2, r3] + 80026c2: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 80026c4: 2300 movs r3, #0 + 80026c6: 717b strb r3, [r7, #5] + 80026c8: e018 b.n 80026fc + { + if (line & 0x1) + 80026ca: 793b ldrb r3, [r7, #4] + 80026cc: f003 0301 and.w r3, r3, #1 + 80026d0: 2b00 cmp r3, #0 + 80026d2: d00d beq.n 80026f0 + { + + drawPixel_TFT(i, j*8+k, color); + 80026d4: 79fb ldrb r3, [r7, #7] + 80026d6: b298 uxth r0, r3 + 80026d8: 79bb ldrb r3, [r7, #6] + 80026da: b29b uxth r3, r3 + 80026dc: 00db lsls r3, r3, #3 + 80026de: b29a uxth r2, r3 + 80026e0: 797b ldrb r3, [r7, #5] + 80026e2: b29b uxth r3, r3 + 80026e4: 4413 add r3, r2 + 80026e6: b29b uxth r3, r3 + 80026e8: 887a ldrh r2, [r7, #2] + 80026ea: 4619 mov r1, r3 + 80026ec: f7ff fe4a bl 8002384 + } + line = line >> 1; + 80026f0: 793b ldrb r3, [r7, #4] + 80026f2: 085b lsrs r3, r3, #1 + 80026f4: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 80026f6: 797b ldrb r3, [r7, #5] + 80026f8: 3301 adds r3, #1 + 80026fa: 717b strb r3, [r7, #5] + 80026fc: 797b ldrb r3, [r7, #5] + 80026fe: 2b07 cmp r3, #7 + 8002700: d9e3 bls.n 80026ca + for(j=0;j<= 1;j++) + 8002702: 79bb ldrb r3, [r7, #6] + 8002704: 3301 adds r3, #1 + 8002706: 71bb strb r3, [r7, #6] + 8002708: 79bb ldrb r3, [r7, #6] + 800270a: 2b01 cmp r3, #1 + 800270c: d9d0 bls.n 80026b0 + } + } + + color=ST7735_RED; + 800270e: f44f 4378 mov.w r3, #63488 @ 0xf800 + 8002712: 807b strh r3, [r7, #2] + for(j=2;j<= 3;j++) + 8002714: 2302 movs r3, #2 + 8002716: 71bb strb r3, [r7, #6] + 8002718: e02b b.n 8002772 + { + line=(ALL_IS_mono_120[i+120*j]); + 800271a: 79f9 ldrb r1, [r7, #7] + 800271c: 79ba ldrb r2, [r7, #6] + 800271e: 4613 mov r3, r2 + 8002720: 011b lsls r3, r3, #4 + 8002722: 1a9b subs r3, r3, r2 + 8002724: 00db lsls r3, r3, #3 + 8002726: 440b add r3, r1 + 8002728: 4a34 ldr r2, [pc, #208] @ (80027fc ) + 800272a: 5cd3 ldrb r3, [r2, r3] + 800272c: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 800272e: 2300 movs r3, #0 + 8002730: 717b strb r3, [r7, #5] + 8002732: e018 b.n 8002766 + { + if (line & 0x1) + 8002734: 793b ldrb r3, [r7, #4] + 8002736: f003 0301 and.w r3, r3, #1 + 800273a: 2b00 cmp r3, #0 + 800273c: d00d beq.n 800275a + { + + drawPixel_TFT(i, j*8+k, color); + 800273e: 79fb ldrb r3, [r7, #7] + 8002740: b298 uxth r0, r3 + 8002742: 79bb ldrb r3, [r7, #6] + 8002744: b29b uxth r3, r3 + 8002746: 00db lsls r3, r3, #3 + 8002748: b29a uxth r2, r3 + 800274a: 797b ldrb r3, [r7, #5] + 800274c: b29b uxth r3, r3 + 800274e: 4413 add r3, r2 + 8002750: b29b uxth r3, r3 + 8002752: 887a ldrh r2, [r7, #2] + 8002754: 4619 mov r1, r3 + 8002756: f7ff fe15 bl 8002384 + } + line = line >> 1; + 800275a: 793b ldrb r3, [r7, #4] + 800275c: 085b lsrs r3, r3, #1 + 800275e: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 8002760: 797b ldrb r3, [r7, #5] + 8002762: 3301 adds r3, #1 + 8002764: 717b strb r3, [r7, #5] + 8002766: 797b ldrb r3, [r7, #5] + 8002768: 2b07 cmp r3, #7 + 800276a: d9e3 bls.n 8002734 + for(j=2;j<= 3;j++) + 800276c: 79bb ldrb r3, [r7, #6] + 800276e: 3301 adds r3, #1 + 8002770: 71bb strb r3, [r7, #6] + 8002772: 79bb ldrb r3, [r7, #6] + 8002774: 2b03 cmp r3, #3 + 8002776: d9d0 bls.n 800271a + } + } + + color=ST7735_WHITE; + 8002778: f64f 73ff movw r3, #65535 @ 0xffff + 800277c: 807b strh r3, [r7, #2] + for(j=4;j<= 5;j++) + 800277e: 2304 movs r3, #4 + 8002780: 71bb strb r3, [r7, #6] + 8002782: e02b b.n 80027dc + { + line=(ALL_IS_mono_120[i+120*j]); + 8002784: 79f9 ldrb r1, [r7, #7] + 8002786: 79ba ldrb r2, [r7, #6] + 8002788: 4613 mov r3, r2 + 800278a: 011b lsls r3, r3, #4 + 800278c: 1a9b subs r3, r3, r2 + 800278e: 00db lsls r3, r3, #3 + 8002790: 440b add r3, r1 + 8002792: 4a1a ldr r2, [pc, #104] @ (80027fc ) + 8002794: 5cd3 ldrb r3, [r2, r3] + 8002796: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 8002798: 2300 movs r3, #0 + 800279a: 717b strb r3, [r7, #5] + 800279c: e018 b.n 80027d0 + { + if (line & 0x1) + 800279e: 793b ldrb r3, [r7, #4] + 80027a0: f003 0301 and.w r3, r3, #1 + 80027a4: 2b00 cmp r3, #0 + 80027a6: d00d beq.n 80027c4 + { + + drawPixel_TFT(i, j*8+k, color); + 80027a8: 79fb ldrb r3, [r7, #7] + 80027aa: b298 uxth r0, r3 + 80027ac: 79bb ldrb r3, [r7, #6] + 80027ae: b29b uxth r3, r3 + 80027b0: 00db lsls r3, r3, #3 + 80027b2: b29a uxth r2, r3 + 80027b4: 797b ldrb r3, [r7, #5] + 80027b6: b29b uxth r3, r3 + 80027b8: 4413 add r3, r2 + 80027ba: b29b uxth r3, r3 + 80027bc: 887a ldrh r2, [r7, #2] + 80027be: 4619 mov r1, r3 + 80027c0: f7ff fde0 bl 8002384 + } + line = line >> 1; + 80027c4: 793b ldrb r3, [r7, #4] + 80027c6: 085b lsrs r3, r3, #1 + 80027c8: 713b strb r3, [r7, #4] + for ( k = 0; k<8; k++) + 80027ca: 797b ldrb r3, [r7, #5] + 80027cc: 3301 adds r3, #1 + 80027ce: 717b strb r3, [r7, #5] + 80027d0: 797b ldrb r3, [r7, #5] + 80027d2: 2b07 cmp r3, #7 + 80027d4: d9e3 bls.n 800279e + for(j=4;j<= 5;j++) + 80027d6: 79bb ldrb r3, [r7, #6] + 80027d8: 3301 adds r3, #1 + 80027da: 71bb strb r3, [r7, #6] + 80027dc: 79bb ldrb r3, [r7, #6] + 80027de: 2b05 cmp r3, #5 + 80027e0: d9d0 bls.n 8002784 + for(i=0;i<=120;i++) + 80027e2: 79fb ldrb r3, [r7, #7] + 80027e4: 3301 adds r3, #1 + 80027e6: 71fb strb r3, [r7, #7] + 80027e8: 79fb ldrb r3, [r7, #7] + 80027ea: 2b78 cmp r3, #120 @ 0x78 + 80027ec: f67f af5d bls.w 80026aa + } + } + + } +} + 80027f0: bf00 nop + 80027f2: bf00 nop + 80027f4: 3708 adds r7, #8 + 80027f6: 46bd mov sp, r7 + 80027f8: bd80 pop {r7, pc} + 80027fa: bf00 nop + 80027fc: 08002f1c .word 0x08002f1c + +08002800 : + 8002800: 220a movs r2, #10 + 8002802: 2100 movs r1, #0 + 8002804: f000 b87a b.w 80028fc + +08002808 <_strtol_l.isra.0>: + 8002808: 2b24 cmp r3, #36 @ 0x24 + 800280a: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800280e: 4686 mov lr, r0 + 8002810: 4690 mov r8, r2 + 8002812: d801 bhi.n 8002818 <_strtol_l.isra.0+0x10> + 8002814: 2b01 cmp r3, #1 + 8002816: d106 bne.n 8002826 <_strtol_l.isra.0+0x1e> + 8002818: f000 f882 bl 8002920 <__errno> + 800281c: 2316 movs r3, #22 + 800281e: 6003 str r3, [r0, #0] + 8002820: 2000 movs r0, #0 + 8002822: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8002826: 460d mov r5, r1 + 8002828: 4833 ldr r0, [pc, #204] @ (80028f8 <_strtol_l.isra.0+0xf0>) + 800282a: 462a mov r2, r5 + 800282c: f815 4b01 ldrb.w r4, [r5], #1 + 8002830: 5d06 ldrb r6, [r0, r4] + 8002832: f016 0608 ands.w r6, r6, #8 + 8002836: d1f8 bne.n 800282a <_strtol_l.isra.0+0x22> + 8002838: 2c2d cmp r4, #45 @ 0x2d + 800283a: d110 bne.n 800285e <_strtol_l.isra.0+0x56> + 800283c: 2601 movs r6, #1 + 800283e: 782c ldrb r4, [r5, #0] + 8002840: 1c95 adds r5, r2, #2 + 8002842: f033 0210 bics.w r2, r3, #16 + 8002846: d115 bne.n 8002874 <_strtol_l.isra.0+0x6c> + 8002848: 2c30 cmp r4, #48 @ 0x30 + 800284a: d10d bne.n 8002868 <_strtol_l.isra.0+0x60> + 800284c: 782a ldrb r2, [r5, #0] + 800284e: f002 02df and.w r2, r2, #223 @ 0xdf + 8002852: 2a58 cmp r2, #88 @ 0x58 + 8002854: d108 bne.n 8002868 <_strtol_l.isra.0+0x60> + 8002856: 786c ldrb r4, [r5, #1] + 8002858: 3502 adds r5, #2 + 800285a: 2310 movs r3, #16 + 800285c: e00a b.n 8002874 <_strtol_l.isra.0+0x6c> + 800285e: 2c2b cmp r4, #43 @ 0x2b + 8002860: bf04 itt eq + 8002862: 782c ldrbeq r4, [r5, #0] + 8002864: 1c95 addeq r5, r2, #2 + 8002866: e7ec b.n 8002842 <_strtol_l.isra.0+0x3a> + 8002868: 2b00 cmp r3, #0 + 800286a: d1f6 bne.n 800285a <_strtol_l.isra.0+0x52> + 800286c: 2c30 cmp r4, #48 @ 0x30 + 800286e: bf14 ite ne + 8002870: 230a movne r3, #10 + 8002872: 2308 moveq r3, #8 + 8002874: 2200 movs r2, #0 + 8002876: f106 4c00 add.w ip, r6, #2147483648 @ 0x80000000 + 800287a: f10c 3cff add.w ip, ip, #4294967295 @ 0xffffffff + 800287e: fbbc f9f3 udiv r9, ip, r3 + 8002882: 4610 mov r0, r2 + 8002884: fb03 ca19 mls sl, r3, r9, ip + 8002888: f1a4 0730 sub.w r7, r4, #48 @ 0x30 + 800288c: 2f09 cmp r7, #9 + 800288e: d80f bhi.n 80028b0 <_strtol_l.isra.0+0xa8> + 8002890: 463c mov r4, r7 + 8002892: 42a3 cmp r3, r4 + 8002894: dd1b ble.n 80028ce <_strtol_l.isra.0+0xc6> + 8002896: 1c57 adds r7, r2, #1 + 8002898: d007 beq.n 80028aa <_strtol_l.isra.0+0xa2> + 800289a: 4581 cmp r9, r0 + 800289c: d314 bcc.n 80028c8 <_strtol_l.isra.0+0xc0> + 800289e: d101 bne.n 80028a4 <_strtol_l.isra.0+0x9c> + 80028a0: 45a2 cmp sl, r4 + 80028a2: db11 blt.n 80028c8 <_strtol_l.isra.0+0xc0> + 80028a4: 2201 movs r2, #1 + 80028a6: fb00 4003 mla r0, r0, r3, r4 + 80028aa: f815 4b01 ldrb.w r4, [r5], #1 + 80028ae: e7eb b.n 8002888 <_strtol_l.isra.0+0x80> + 80028b0: f1a4 0741 sub.w r7, r4, #65 @ 0x41 + 80028b4: 2f19 cmp r7, #25 + 80028b6: d801 bhi.n 80028bc <_strtol_l.isra.0+0xb4> + 80028b8: 3c37 subs r4, #55 @ 0x37 + 80028ba: e7ea b.n 8002892 <_strtol_l.isra.0+0x8a> + 80028bc: f1a4 0761 sub.w r7, r4, #97 @ 0x61 + 80028c0: 2f19 cmp r7, #25 + 80028c2: d804 bhi.n 80028ce <_strtol_l.isra.0+0xc6> + 80028c4: 3c57 subs r4, #87 @ 0x57 + 80028c6: e7e4 b.n 8002892 <_strtol_l.isra.0+0x8a> + 80028c8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 80028cc: e7ed b.n 80028aa <_strtol_l.isra.0+0xa2> + 80028ce: 1c53 adds r3, r2, #1 + 80028d0: d108 bne.n 80028e4 <_strtol_l.isra.0+0xdc> + 80028d2: 2322 movs r3, #34 @ 0x22 + 80028d4: 4660 mov r0, ip + 80028d6: f8ce 3000 str.w r3, [lr] + 80028da: f1b8 0f00 cmp.w r8, #0 + 80028de: d0a0 beq.n 8002822 <_strtol_l.isra.0+0x1a> + 80028e0: 1e69 subs r1, r5, #1 + 80028e2: e006 b.n 80028f2 <_strtol_l.isra.0+0xea> + 80028e4: b106 cbz r6, 80028e8 <_strtol_l.isra.0+0xe0> + 80028e6: 4240 negs r0, r0 + 80028e8: f1b8 0f00 cmp.w r8, #0 + 80028ec: d099 beq.n 8002822 <_strtol_l.isra.0+0x1a> + 80028ee: 2a00 cmp r2, #0 + 80028f0: d1f6 bne.n 80028e0 <_strtol_l.isra.0+0xd8> + 80028f2: f8c8 1000 str.w r1, [r8] + 80028f6: e794 b.n 8002822 <_strtol_l.isra.0+0x1a> + 80028f8: 080031ed .word 0x080031ed + +080028fc : + 80028fc: 4613 mov r3, r2 + 80028fe: 460a mov r2, r1 + 8002900: 4601 mov r1, r0 + 8002902: 4802 ldr r0, [pc, #8] @ (800290c ) + 8002904: 6800 ldr r0, [r0, #0] + 8002906: f7ff bf7f b.w 8002808 <_strtol_l.isra.0> + 800290a: bf00 nop + 800290c: 2000000c .word 0x2000000c + +08002910 : + 8002910: 4603 mov r3, r0 + 8002912: 4402 add r2, r0 + 8002914: 4293 cmp r3, r2 + 8002916: d100 bne.n 800291a + 8002918: 4770 bx lr + 800291a: f803 1b01 strb.w r1, [r3], #1 + 800291e: e7f9 b.n 8002914 + +08002920 <__errno>: + 8002920: 4b01 ldr r3, [pc, #4] @ (8002928 <__errno+0x8>) + 8002922: 6818 ldr r0, [r3, #0] + 8002924: 4770 bx lr + 8002926: bf00 nop + 8002928: 2000000c .word 0x2000000c + +0800292c <__libc_init_array>: + 800292c: b570 push {r4, r5, r6, lr} + 800292e: 2600 movs r6, #0 + 8002930: 4d0c ldr r5, [pc, #48] @ (8002964 <__libc_init_array+0x38>) + 8002932: 4c0d ldr r4, [pc, #52] @ (8002968 <__libc_init_array+0x3c>) + 8002934: 1b64 subs r4, r4, r5 + 8002936: 10a4 asrs r4, r4, #2 + 8002938: 42a6 cmp r6, r4 + 800293a: d109 bne.n 8002950 <__libc_init_array+0x24> + 800293c: f000 f81a bl 8002974 <_init> + 8002940: 2600 movs r6, #0 + 8002942: 4d0a ldr r5, [pc, #40] @ (800296c <__libc_init_array+0x40>) + 8002944: 4c0a ldr r4, [pc, #40] @ (8002970 <__libc_init_array+0x44>) + 8002946: 1b64 subs r4, r4, r5 + 8002948: 10a4 asrs r4, r4, #2 + 800294a: 42a6 cmp r6, r4 + 800294c: d105 bne.n 800295a <__libc_init_array+0x2e> + 800294e: bd70 pop {r4, r5, r6, pc} + 8002950: f855 3b04 ldr.w r3, [r5], #4 + 8002954: 4798 blx r3 + 8002956: 3601 adds r6, #1 + 8002958: e7ee b.n 8002938 <__libc_init_array+0xc> + 800295a: f855 3b04 ldr.w r3, [r5], #4 + 800295e: 4798 blx r3 + 8002960: 3601 adds r6, #1 + 8002962: e7f2 b.n 800294a <__libc_init_array+0x1e> + 8002964: 080032f8 .word 0x080032f8 + 8002968: 080032f8 .word 0x080032f8 + 800296c: 080032f8 .word 0x080032f8 + 8002970: 080032fc .word 0x080032fc + +08002974 <_init>: + 8002974: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002976: bf00 nop + 8002978: bcf8 pop {r3, r4, r5, r6, r7} + 800297a: bc08 pop {r3} + 800297c: 469e mov lr, r3 + 800297e: 4770 bx lr + +08002980 <_fini>: + 8002980: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002982: bf00 nop + 8002984: bcf8 pop {r3, r4, r5, r6, r7} + 8002986: bc08 pop {r3} + 8002988: 469e mov lr, r3 + 800298a: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP4_INIT_TFT.map b/TP4_INIT_TFT/Debug/TP4_INIT_TFT.map new file mode 100644 index 0000000..a693621 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_INIT_TFT.map @@ -0,0 +1,3104 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + ./Core/Src/main.o (atoi) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) (_strtol_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) (_ctype_) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x109 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9990 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x772e ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x109 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .rodata.conv_7seg + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayChar + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x109 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_EnableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbc1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x7f979 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x989 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x7f72a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x19c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x987 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x7f7f3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x7fc4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x945 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x7f87c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x963 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x7f888 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x894 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x7f667 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x8ee ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x7f797 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x109 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .group 0x00000000 0xc ./Drivers/TFT_ST7735/fonc_tft.o + .text 0x00000000 0x0 ./Drivers/TFT_ST7735/fonc_tft.o + .data 0x00000000 0x0 ./Drivers/TFT_ST7735/fonc_tft.o + .bss 0x00000000 0x0 ./Drivers/TFT_ST7735/fonc_tft.o + .text.Write_SPI + 0x00000000 0x24 ./Drivers/TFT_ST7735/fonc_tft.o + .text.fillScreen_TFT + 0x00000000 0x22 ./Drivers/TFT_ST7735/fonc_tft.o + .text.drawVLine_TFT + 0x00000000 0xb0 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xacc ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x109 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x2e ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x22 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x22 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x8e ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x51 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x103 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x6a ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x1df ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x1c ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x22 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xbd ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xe49 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x11f ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x6d ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x34e1 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x190 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x5b ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xe37 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x35b ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x1b8 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0xc5 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x21e ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x236 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x115 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x567 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x1e9 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x22 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x225 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x170 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x492 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_macro 0x00000000 0x70 ./Drivers/TFT_ST7735/fonc_tft.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .text._atoi_r 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .text._strtol_r + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .text.strtol_l + 0x00000000 0x14 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/TFT_ST7735/fonc_tft.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x2850 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.affiche_nombre + 0x080004b0 0x144 ./Core/Src/main.o + 0x080004b0 affiche_nombre + .text.main 0x080005f4 0x3c ./Core/Src/main.o + 0x080005f4 main + .text.SystemClock_Config + 0x08000630 0x8c ./Core/Src/main.o + 0x08000630 SystemClock_Config + .text.MX_SPI1_Init + 0x080006bc 0x6c ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000728 0x128 ./Core/Src/main.o + .text.Error_Handler + 0x08000850 0xc ./Core/Src/main.o + 0x08000850 Error_Handler + .text.HAL_MspInit + 0x0800085c 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x0800085c HAL_MspInit + .text.HAL_SPI_MspInit + 0x080008b8 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x080008b8 HAL_SPI_MspInit + .text.NMI_Handler + 0x08000940 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000940 NMI_Handler + .text.HardFault_Handler + 0x08000948 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000948 HardFault_Handler + .text.MemManage_Handler + 0x08000950 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000950 MemManage_Handler + .text.BusFault_Handler + 0x08000958 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000958 BusFault_Handler + .text.UsageFault_Handler + 0x08000960 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000960 UsageFault_Handler + .text.SVC_Handler + 0x08000968 0xc ./Core/Src/stm32l1xx_it.o + 0x08000968 SVC_Handler + .text.DebugMon_Handler + 0x08000974 0xc ./Core/Src/stm32l1xx_it.o + 0x08000974 DebugMon_Handler + .text.PendSV_Handler + 0x08000980 0xc ./Core/Src/stm32l1xx_it.o + 0x08000980 PendSV_Handler + .text.SysTick_Handler + 0x0800098c 0xc ./Core/Src/stm32l1xx_it.o + 0x0800098c SysTick_Handler + .text.SystemInit + 0x08000998 0xc ./Core/Src/system_stm32l1xx.o + 0x08000998 SystemInit + .text.Reset_Handler + 0x080009a4 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x080009a4 Reset_Handler + .text.Default_Handler + 0x080009ec 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x080009ec DMA2_Channel3_IRQHandler + 0x080009ec EXTI2_IRQHandler + 0x080009ec COMP_ACQ_IRQHandler + 0x080009ec TIM10_IRQHandler + 0x080009ec USB_HP_IRQHandler + 0x080009ec TIM6_IRQHandler + 0x080009ec PVD_IRQHandler + 0x080009ec EXTI3_IRQHandler + 0x080009ec EXTI0_IRQHandler + 0x080009ec I2C2_EV_IRQHandler + 0x080009ec SPI1_IRQHandler + 0x080009ec USB_FS_WKUP_IRQHandler + 0x080009ec DMA2_Channel2_IRQHandler + 0x080009ec DMA1_Channel4_IRQHandler + 0x080009ec ADC1_IRQHandler + 0x080009ec USART3_IRQHandler + 0x080009ec DMA1_Channel7_IRQHandler + 0x080009ec LCD_IRQHandler + 0x080009ec UART5_IRQHandler + 0x080009ec TIM4_IRQHandler + 0x080009ec DMA2_Channel1_IRQHandler + 0x080009ec I2C1_EV_IRQHandler + 0x080009ec DMA1_Channel6_IRQHandler + 0x080009ec UART4_IRQHandler + 0x080009ec DMA2_Channel4_IRQHandler + 0x080009ec TIM3_IRQHandler + 0x080009ec RCC_IRQHandler + 0x080009ec DMA1_Channel1_IRQHandler + 0x080009ec Default_Handler + 0x080009ec EXTI15_10_IRQHandler + 0x080009ec TIM7_IRQHandler + 0x080009ec TIM5_IRQHandler + 0x080009ec EXTI9_5_IRQHandler + 0x080009ec TIM9_IRQHandler + 0x080009ec TAMPER_STAMP_IRQHandler + 0x080009ec RTC_WKUP_IRQHandler + 0x080009ec SPI2_IRQHandler + 0x080009ec DMA2_Channel5_IRQHandler + 0x080009ec DMA1_Channel5_IRQHandler + 0x080009ec USB_LP_IRQHandler + 0x080009ec EXTI4_IRQHandler + 0x080009ec DMA1_Channel3_IRQHandler + 0x080009ec COMP_IRQHandler + 0x080009ec WWDG_IRQHandler + 0x080009ec TIM2_IRQHandler + 0x080009ec DAC_IRQHandler + 0x080009ec EXTI1_IRQHandler + 0x080009ec TIM11_IRQHandler + 0x080009ec USART2_IRQHandler + 0x080009ec I2C2_ER_IRQHandler + 0x080009ec DMA1_Channel2_IRQHandler + 0x080009ec FLASH_IRQHandler + 0x080009ec USART1_IRQHandler + 0x080009ec SPI3_IRQHandler + 0x080009ec I2C1_ER_IRQHandler + 0x080009ec RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x080009ee 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x080009ee MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000a18 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a18 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000a28 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a28 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000a38 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a38 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000a5c 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a5c MAX7219_Clear + .text.MAX7219_Write + 0x08000a88 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000a88 MAX7219_Write + .text.MAX7219_SendByte + 0x08000ac4 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000ae8 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000ae8 HAL_Init + .text.HAL_InitTick + 0x08000b18 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000b18 HAL_InitTick + .text.HAL_IncTick + 0x08000b8c 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000b8c HAL_IncTick + .text.HAL_GetTick + 0x08000bb0 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000bb0 HAL_GetTick + .text.HAL_Delay + 0x08000bc4 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000bc4 HAL_Delay + .text.__NVIC_SetPriorityGrouping + 0x08000c08 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000c50 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000c6c 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000cc0 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000d24 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000d68 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000d68 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000d7e 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000d7e HAL_NVIC_SetPriority + .text.HAL_SYSTICK_Config + 0x08000db6 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000db6 HAL_SYSTICK_Config + *fill* 0x08000dce 0x2 + .text.HAL_GPIO_Init + 0x08000dd0 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000dd0 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x080010f0 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x080010f0 HAL_GPIO_WritePin + .text.HAL_RCC_OscConfig + 0x08001120 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001120 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x08001780 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001780 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x080019e8 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080019e8 HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001b64 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001c24 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001c24 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001d36 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001d36 HAL_SPI_Transmit + *fill* 0x08001fbe 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08001fc0 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x080020d0 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.writecommand + 0x08002178 0x3c ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002178 writecommand + .text.writedata + 0x080021b4 0x3c ./Drivers/TFT_ST7735/fonc_tft.o + 0x080021b4 writedata + .text.commandList + 0x080021f0 0x90 ./Drivers/TFT_ST7735/fonc_tft.o + 0x080021f0 commandList + .text.setAddrWindow + 0x08002280 0x70 ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002280 setAddrWindow + .text.init_TFT + 0x080022f0 0x94 ./Drivers/TFT_ST7735/fonc_tft.o + 0x080022f0 init_TFT + .text.drawPixel_TFT + 0x08002384 0x8c ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002384 drawPixel_TFT + .text.fillRect_TFT + 0x08002410 0xf4 ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002410 fillRect_TFT + .text.displayChar_TFT + 0x08002504 0x194 ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002504 displayChar_TFT + .text.displayLogo_TFT + 0x08002698 0x168 ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002698 displayLogo_TFT + .text.atoi 0x08002800 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + 0x08002800 atoi + .text._strtol_l.isra.0 + 0x08002808 0xf4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .text.strtol 0x080028fc 0x14 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + 0x080028fc strtol + .text.memset 0x08002910 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08002910 memset + .text.__errno 0x08002920 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + 0x08002920 __errno + .text.__libc_init_array + 0x0800292c 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x0800292c __libc_init_array + *(.glue_7) + .glue_7 0x08002974 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08002974 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08002974 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08002974 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002974 _init + .init 0x08002978 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002980 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002980 _fini + .fini 0x08002984 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x0800298c . = ALIGN (0x4) + 0x0800298c _etext = . + +.vfp11_veneer 0x0800298c 0x0 + .vfp11_veneer 0x0800298c 0x0 linker stubs + +.v4_bx 0x0800298c 0x0 + .v4_bx 0x0800298c 0x0 linker stubs + +.iplt 0x0800298c 0x0 + .iplt 0x0800298c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x0800298c 0x964 + 0x0800298c . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.PLLMulTable + 0x0800298c 0x9 ./Core/Src/system_stm32l1xx.o + 0x0800298c PLLMulTable + *fill* 0x08002995 0x3 + .rodata.AHBPrescTable + 0x08002998 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002998 AHBPrescTable + .rodata.Rcmd1 0x080029a8 0x3b ./Drivers/TFT_ST7735/fonc_tft.o + *fill* 0x080029e3 0x1 + .rodata.Rcmd2red + 0x080029e4 0xd ./Drivers/TFT_ST7735/fonc_tft.o + *fill* 0x080029f1 0x3 + .rodata.Rcmd3 0x080029f4 0x2b ./Drivers/TFT_ST7735/fonc_tft.o + *fill* 0x08002a1f 0x1 + .rodata.tab_font + 0x08002a20 0x4fb ./Drivers/TFT_ST7735/fonc_tft.o + *fill* 0x08002f1b 0x1 + .rodata.ALL_IS_mono_120 + 0x08002f1c 0x2d0 ./Drivers/TFT_ST7735/fonc_tft.o + 0x08002f1c ALL_IS_mono_120 + .rodata._ctype_ + 0x080031ec 0x101 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + 0x080031ec _ctype_ + 0x080032f0 . = ALIGN (0x4) + *fill* 0x080032ed 0x3 + +.ARM.extab 0x080032f0 0x0 + 0x080032f0 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x080032f0 . = ALIGN (0x4) + +.ARM 0x080032f0 0x8 + 0x080032f0 . = ALIGN (0x4) + 0x080032f0 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x080032f0 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080032f8 __exidx_end = . + 0x080032f8 . = ALIGN (0x4) + +.preinit_array 0x080032f8 0x0 + 0x080032f8 . = ALIGN (0x4) + 0x080032f8 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x080032f8 PROVIDE (__preinit_array_end = .) + 0x080032f8 . = ALIGN (0x4) + +.init_array 0x080032f8 0x4 + 0x080032f8 . = ALIGN (0x4) + 0x080032f8 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x080032f8 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x080032fc PROVIDE (__init_array_end = .) + 0x080032fc . = ALIGN (0x4) + +.fini_array 0x080032fc 0x4 + 0x080032fc . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x080032fc 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08003300 . = ALIGN (0x4) + 0x08003300 _sidata = LOADADDR (.data) + +.rel.dyn 0x08003300 0x0 + .rel.iplt 0x08003300 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0x5c load address 0x08003300 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + .data._impure_ptr + 0x2000000c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + 0x2000000c _impure_ptr + .data._impure_data + 0x20000010 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + 0x20000010 _impure_data + *(.RamFunc) + *(.RamFunc*) + 0x2000005c . = ALIGN (0x4) + 0x2000005c _edata = . + +.igot.plt 0x2000005c 0x0 load address 0x0800335c + .igot.plt 0x2000005c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000005c . = ALIGN (0x4) + +.bss 0x2000005c 0x1b0 load address 0x0800335c + 0x2000005c _sbss = . + 0x2000005c __bss_start__ = _sbss + *(.bss) + .bss 0x2000005c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000078 0x58 ./Core/Src/main.o + 0x20000078 hspi1 + .bss.uwTick 0x200000d0 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x200000d0 uwTick + .bss.__sf 0x200000d4 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + 0x200000d4 __sf + *(COMMON) + 0x2000020c . = ALIGN (0x4) + 0x2000020c _ebss = . + 0x2000020c __bss_end__ = _ebss + +._user_heap_stack + 0x2000020c 0x604 load address 0x0800335c + 0x20000210 . = ALIGN (0x8) + *fill* 0x2000020c 0x4 + [!provide] PROVIDE (end = .) + 0x20000210 PROVIDE (_end = .) + 0x20000410 . = (. + _Min_Heap_Size) + *fill* 0x20000210 0x200 + 0x20000810 . = (. + _Min_Stack_Size) + *fill* 0x20000410 0x400 + 0x20000810 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/TFT_ST7735/fonc_tft.o + .ARM.attributes + 0x0000025a 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .ARM.attributes + 0x000002e1 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x0000030e 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x0000033b 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x00000368 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000395 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-ctype_.o) + .ARM.attributes + 0x000003c2 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000003df 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000040c 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000429 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP4_INIT_TFT.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x629e + .debug_info 0x00000000 0xc05 ./Core/Src/main.o + .debug_info 0x00000c05 0x828 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x0000142d 0x113 ./Core/Src/stm32l1xx_it.o + .debug_info 0x00001540 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x000017bc 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x000017ec 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x00001ffa 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x000026e9 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x000033ce 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x00003980 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x0000431b 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x000057f4 0xaaa ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_abbrev 0x00000000 0x16c7 + .debug_abbrev 0x00000000 0x2bc ./Core/Src/main.o + .debug_abbrev 0x000002bc 0x1ad ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x00000469 0x73 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x000004dc 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x000005f8 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x0000061c 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000805 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000a7a 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000d96 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x00000f6a 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x00001222 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x0000149c 0x22b ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_aranges 0x00000000 0x6d8 + .debug_aranges + 0x00000000 0x48 ./Core/Src/main.o + .debug_aranges + 0x00000048 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x00000078 0x60 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x000000d8 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000100 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000128 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001a0 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x00000280 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003a8 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000400 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x00000490 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x00000660 0x78 ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_rnglists + 0x00000000 0x512 + .debug_rnglists + 0x00000000 0x34 ./Core/Src/main.o + .debug_rnglists + 0x00000034 0x20 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x00000054 0x43 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x00000097 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000b1 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000ca 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000011f 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001c2 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x0000029b 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x000002da 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000347 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004b6 0x5c ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_macro 0x00000000 0x155d9 + .debug_macro 0x00000000 0x283 ./Core/Src/main.o + .debug_macro 0x00000283 0xacc ./Core/Src/main.o + .debug_macro 0x00000d4f 0x109 ./Core/Src/main.o + .debug_macro 0x00000e58 0x2e ./Core/Src/main.o + .debug_macro 0x00000e86 0x22 ./Core/Src/main.o + .debug_macro 0x00000ea8 0x22 ./Core/Src/main.o + .debug_macro 0x00000eca 0x8e ./Core/Src/main.o + .debug_macro 0x00000f58 0x51 ./Core/Src/main.o + .debug_macro 0x00000fa9 0x103 ./Core/Src/main.o + .debug_macro 0x000010ac 0x6a ./Core/Src/main.o + .debug_macro 0x00001116 0x1df ./Core/Src/main.o + .debug_macro 0x000012f5 0x1c ./Core/Src/main.o + .debug_macro 0x00001311 0x22 ./Core/Src/main.o + .debug_macro 0x00001333 0xbd ./Core/Src/main.o + .debug_macro 0x000013f0 0xe49 ./Core/Src/main.o + .debug_macro 0x00002239 0x11f ./Core/Src/main.o + .debug_macro 0x00002358 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000daf9 0x6d ./Core/Src/main.o + .debug_macro 0x0000db66 0x34e1 ./Core/Src/main.o + .debug_macro 0x00011047 0x190 ./Core/Src/main.o + .debug_macro 0x000111d7 0x5b ./Core/Src/main.o + .debug_macro 0x00011232 0xe37 ./Core/Src/main.o + .debug_macro 0x00012069 0x35b ./Core/Src/main.o + .debug_macro 0x000123c4 0x1b8 ./Core/Src/main.o + .debug_macro 0x0001257c 0xc5 ./Core/Src/main.o + .debug_macro 0x00012641 0x21e ./Core/Src/main.o + .debug_macro 0x0001285f 0x236 ./Core/Src/main.o + .debug_macro 0x00012a95 0x115 ./Core/Src/main.o + .debug_macro 0x00012baa 0x567 ./Core/Src/main.o + .debug_macro 0x00013111 0x1e9 ./Core/Src/main.o + .debug_macro 0x000132fa 0x22 ./Core/Src/main.o + .debug_macro 0x0001331c 0x225 ./Core/Src/main.o + .debug_macro 0x00013541 0x170 ./Core/Src/main.o + .debug_macro 0x000136b1 0x492 ./Core/Src/main.o + .debug_macro 0x00013b43 0x10 ./Core/Src/main.o + .debug_macro 0x00013b53 0x70 ./Core/Src/main.o + .debug_macro 0x00013bc3 0x24 ./Core/Src/main.o + .debug_macro 0x00013be7 0x61 ./Core/Src/main.o + .debug_macro 0x00013c48 0x43 ./Core/Src/main.o + .debug_macro 0x00013c8b 0x34 ./Core/Src/main.o + .debug_macro 0x00013cbf 0x16 ./Core/Src/main.o + .debug_macro 0x00013cd5 0x3c ./Core/Src/main.o + .debug_macro 0x00013d11 0x370 ./Core/Src/main.o + .debug_macro 0x00014081 0x16 ./Core/Src/main.o + .debug_macro 0x00014097 0x4a ./Core/Src/main.o + .debug_macro 0x000140e1 0x34 ./Core/Src/main.o + .debug_macro 0x00014115 0x10 ./Core/Src/main.o + .debug_macro 0x00014125 0x58 ./Core/Src/main.o + .debug_macro 0x0001417d 0x8e ./Core/Src/main.o + .debug_macro 0x0001420b 0x1c ./Core/Src/main.o + .debug_macro 0x00014227 0x185 ./Core/Src/main.o + .debug_macro 0x000143ac 0x16 ./Core/Src/main.o + .debug_macro 0x000143c2 0x29 ./Core/Src/main.o + .debug_macro 0x000143eb 0x1a5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014590 0x1af ./Core/Src/stm32l1xx_it.o + .debug_macro 0x0001473f 0x19b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000148da 0x1d8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00014ab2 0x1bf ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014c71 0x19b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014e0c 0x1a2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014fae 0x1ad ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x0001515b 0x1aa ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00015305 0x2d4 ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_line 0x00000000 0x7c47 + .debug_line 0x00000000 0x997 ./Core/Src/main.o + .debug_line 0x00000997 0x6dd ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00001074 0x73e ./Core/Src/stm32l1xx_it.o + .debug_line 0x000017b2 0x730 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001ee2 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001f5b 0x7de ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002739 0x95b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00003094 0xc2a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003cbe 0x99f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x0000465d 0xf1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x0000557b 0x1c1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x00007195 0xab2 ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_str 0x00000000 0x84a13 + .debug_str 0x00000000 0x84a13 ./Core/Src/main.o + 0x8305d (size before relaxing) + .debug_str 0x00084a13 0x7fa0c ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x00084a13 0x7f5a3 ./Core/Src/stm32l1xx_it.o + .debug_str 0x00084a13 0x7f5f4 ./Core/Src/system_stm32l1xx.o + .debug_str 0x00084a13 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x00084a13 0x7fb50 ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x00084a13 0x7fd1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x00084a13 0x7fe28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x00084a13 0x7f787 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x00084a13 0x7fab0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x00084a13 0x7ff16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x00084a13 0x7ffc8 ./Drivers/TFT_ST7735/fonc_tft.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/TFT_ST7735/fonc_tft.o + +.debug_frame 0x00000000 0x1c78 + .debug_frame 0x00000000 0xd4 ./Core/Src/main.o + .debug_frame 0x000000d4 0x80 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x00000154 0x104 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000258 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x000002b0 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x00000448 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000784 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000c6c 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000db8 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x00000fdc 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x00001804 0x1d0 ./Drivers/TFT_ST7735/fonc_tft.o + .debug_frame 0x000019d4 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-atoi.o) + .debug_frame 0x00001a04 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00001b48 0x64 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-strtol.o) + .debug_frame 0x00001bac 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00001bcc 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00001bec 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00001c18 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00001c44 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/TP4_MELODIE.list b/TP4_INIT_TFT/Debug/TP4_MELODIE.list new file mode 100644 index 0000000..6c6268e --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_MELODIE.list @@ -0,0 +1,8000 @@ + +TP4_MELODIE.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00002d74 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000003c 08002eb0 08002eb0 00003eb0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08002eec 08002eec 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 08002eec 08002eec 00003eec 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 08002ef4 08002ef4 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08002ef4 08002ef4 00003ef4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08002ef8 08002ef8 00003ef8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 08002efc 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 000000b8 2000000c 08002f08 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 200000c4 08002f08 000040c4 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 000090de 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 000018ef 00000000 00000000 0000d113 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000a80 00000000 00000000 0000ea08 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 000007f6 00000000 00000000 0000f488 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000155f9 00000000 00000000 0000fc7e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 0000aa5f 00000000 00000000 00025277 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 00088693 00000000 00000000 0002fcd6 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000b8369 2**0 + CONTENTS, READONLY + 20 .debug_frame 00002b74 00000000 00000000 000b83ac 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000baf20 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 08002e98 .word 0x08002e98 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 08002e98 .word 0x08002e98 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void note(int freq, uint8_t indice) { + 80004b0: b580 push {r7, lr} + 80004b2: b082 sub sp, #8 + 80004b4: af00 add r7, sp, #0 + 80004b6: 6078 str r0, [r7, #4] + 80004b8: 460b mov r3, r1 + 80004ba: 70fb strb r3, [r7, #3] + MAX7219_DisplayChar(4, indice); + 80004bc: 78fb ldrb r3, [r7, #3] + 80004be: 4619 mov r1, r3 + 80004c0: 2004 movs r0, #4 + 80004c2: f000 fbb7 bl 8000c34 + TIM3->PSC = ((16000000/freq)/1600) - 1; + 80004c6: 4a08 ldr r2, [pc, #32] @ (80004e8 ) + 80004c8: 687b ldr r3, [r7, #4] + 80004ca: fb92 f3f3 sdiv r3, r2, r3 + 80004ce: 4a07 ldr r2, [pc, #28] @ (80004ec ) + 80004d0: fb82 1203 smull r1, r2, r2, r3 + 80004d4: 1252 asrs r2, r2, #9 + 80004d6: 17db asrs r3, r3, #31 + 80004d8: 1ad3 subs r3, r2, r3 + 80004da: 1e5a subs r2, r3, #1 + 80004dc: 4b04 ldr r3, [pc, #16] @ (80004f0 ) + 80004de: 629a str r2, [r3, #40] @ 0x28 +} + 80004e0: bf00 nop + 80004e2: 3708 adds r7, #8 + 80004e4: 46bd mov sp, r7 + 80004e6: bd80 pop {r7, pc} + 80004e8: 00f42400 .word 0x00f42400 + 80004ec: 51eb851f .word 0x51eb851f + 80004f0: 40000400 .word 0x40000400 + +080004f4
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80004f4: b580 push {r7, lr} + 80004f6: b082 sub sp, #8 + 80004f8: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80004fa: f000 fbe1 bl 8000cc0 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80004fe: f000 f8a5 bl 800064c + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 8000502: f000 f993 bl 800082c + MX_SPI1_Init(); + 8000506: f000 f8e7 bl 80006d8 + MX_TIM3_Init(); + 800050a: f000 f91b bl 8000744 + /* USER CODE BEGIN 2 */ + MAX7219_Init(); + 800050e: f000 fb44 bl 8000b9a + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + 8000512: 2100 movs r1, #0 + 8000514: 484b ldr r0, [pc, #300] @ (8000644 ) + 8000516: f001 ffef bl 80024f8 + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + MAX7219_Clear(); + 800051a: f000 fb75 bl 8000c08 + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + for (int i = 0; tab_music[i] != 255; i++) { + 800051e: 2300 movs r3, #0 + 8000520: 607b str r3, [r7, #4] + 8000522: e087 b.n 8000634 + switch (tab_music[i]) { + 8000524: 4a48 ldr r2, [pc, #288] @ (8000648 ) + 8000526: 687b ldr r3, [r7, #4] + 8000528: 4413 add r3, r2 + 800052a: 781b ldrb r3, [r3, #0] + 800052c: 2b09 cmp r3, #9 + 800052e: d87b bhi.n 8000628 + 8000530: a201 add r2, pc, #4 @ (adr r2, 8000538 ) + 8000532: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8000536: bf00 nop + 8000538: 08000561 .word 0x08000561 + 800053c: 08000575 .word 0x08000575 + 8000540: 08000589 .word 0x08000589 + 8000544: 0800059d .word 0x0800059d + 8000548: 080005b1 .word 0x080005b1 + 800054c: 080005c5 .word 0x080005c5 + 8000550: 080005d9 .word 0x080005d9 + 8000554: 080005ed .word 0x080005ed + 8000558: 08000601 .word 0x08000601 + 800055c: 08000615 .word 0x08000615 + case 0: + note(524, tab_music[i]); + 8000560: 4a39 ldr r2, [pc, #228] @ (8000648 ) + 8000562: 687b ldr r3, [r7, #4] + 8000564: 4413 add r3, r2 + 8000566: 781b ldrb r3, [r3, #0] + 8000568: 4619 mov r1, r3 + 800056a: f44f 7003 mov.w r0, #524 @ 0x20c + 800056e: f7ff ff9f bl 80004b0 + break; + 8000572: e059 b.n 8000628 + case 1: + note(587, tab_music[i]); + 8000574: 4a34 ldr r2, [pc, #208] @ (8000648 ) + 8000576: 687b ldr r3, [r7, #4] + 8000578: 4413 add r3, r2 + 800057a: 781b ldrb r3, [r3, #0] + 800057c: 4619 mov r1, r3 + 800057e: f240 204b movw r0, #587 @ 0x24b + 8000582: f7ff ff95 bl 80004b0 + break; + 8000586: e04f b.n 8000628 + case 2: + note(662, tab_music[i]); + 8000588: 4a2f ldr r2, [pc, #188] @ (8000648 ) + 800058a: 687b ldr r3, [r7, #4] + 800058c: 4413 add r3, r2 + 800058e: 781b ldrb r3, [r3, #0] + 8000590: 4619 mov r1, r3 + 8000592: f240 2096 movw r0, #662 @ 0x296 + 8000596: f7ff ff8b bl 80004b0 + break; + 800059a: e045 b.n 8000628 + case 3: + note(701, tab_music[i]); + 800059c: 4a2a ldr r2, [pc, #168] @ (8000648 ) + 800059e: 687b ldr r3, [r7, #4] + 80005a0: 4413 add r3, r2 + 80005a2: 781b ldrb r3, [r3, #0] + 80005a4: 4619 mov r1, r3 + 80005a6: f240 20bd movw r0, #701 @ 0x2bd + 80005aa: f7ff ff81 bl 80004b0 + break; + 80005ae: e03b b.n 8000628 + case 4: + note(787, tab_music[i]); + 80005b0: 4a25 ldr r2, [pc, #148] @ (8000648 ) + 80005b2: 687b ldr r3, [r7, #4] + 80005b4: 4413 add r3, r2 + 80005b6: 781b ldrb r3, [r3, #0] + 80005b8: 4619 mov r1, r3 + 80005ba: f240 3013 movw r0, #787 @ 0x313 + 80005be: f7ff ff77 bl 80004b0 + break; + 80005c2: e031 b.n 8000628 + case 5: + note(878, tab_music[i]); + 80005c4: 4a20 ldr r2, [pc, #128] @ (8000648 ) + 80005c6: 687b ldr r3, [r7, #4] + 80005c8: 4413 add r3, r2 + 80005ca: 781b ldrb r3, [r3, #0] + 80005cc: 4619 mov r1, r3 + 80005ce: f240 306e movw r0, #878 @ 0x36e + 80005d2: f7ff ff6d bl 80004b0 + break; + 80005d6: e027 b.n 8000628 + case 6: + note(1004, tab_music[i]); + 80005d8: 4a1b ldr r2, [pc, #108] @ (8000648 ) + 80005da: 687b ldr r3, [r7, #4] + 80005dc: 4413 add r3, r2 + 80005de: 781b ldrb r3, [r3, #0] + 80005e0: 4619 mov r1, r3 + 80005e2: f44f 707b mov.w r0, #1004 @ 0x3ec + 80005e6: f7ff ff63 bl 80004b0 + break; + 80005ea: e01d b.n 8000628 + case 7: // LA Diese + note(932, tab_music[i]); + 80005ec: 4a16 ldr r2, [pc, #88] @ (8000648 ) + 80005ee: 687b ldr r3, [r7, #4] + 80005f0: 4413 add r3, r2 + 80005f2: 781b ldrb r3, [r3, #0] + 80005f4: 4619 mov r1, r3 + 80005f6: f44f 7069 mov.w r0, #932 @ 0x3a4 + 80005fa: f7ff ff59 bl 80004b0 + break; + 80005fe: e013 b.n 8000628 + case 8: // RE gamme 5 + note(1175, tab_music[i]); + 8000600: 4a11 ldr r2, [pc, #68] @ (8000648 ) + 8000602: 687b ldr r3, [r7, #4] + 8000604: 4413 add r3, r2 + 8000606: 781b ldrb r3, [r3, #0] + 8000608: 4619 mov r1, r3 + 800060a: f240 4097 movw r0, #1175 @ 0x497 + 800060e: f7ff ff4f bl 80004b0 + break; + 8000612: e009 b.n 8000628 + case 9: // MI Diese gamme 5 + note(1109, tab_music[i]); + 8000614: 4a0c ldr r2, [pc, #48] @ (8000648 ) + 8000616: 687b ldr r3, [r7, #4] + 8000618: 4413 add r3, r2 + 800061a: 781b ldrb r3, [r3, #0] + 800061c: 4619 mov r1, r3 + 800061e: f240 4055 movw r0, #1109 @ 0x455 + 8000622: f7ff ff45 bl 80004b0 + break; + 8000626: bf00 nop + } + HAL_Delay(250); + 8000628: 20fa movs r0, #250 @ 0xfa + 800062a: f000 fbb7 bl 8000d9c + for (int i = 0; tab_music[i] != 255; i++) { + 800062e: 687b ldr r3, [r7, #4] + 8000630: 3301 adds r3, #1 + 8000632: 607b str r3, [r7, #4] + 8000634: 4a04 ldr r2, [pc, #16] @ (8000648 ) + 8000636: 687b ldr r3, [r7, #4] + 8000638: 4413 add r3, r2 + 800063a: 781b ldrb r3, [r3, #0] + 800063c: 2bff cmp r3, #255 @ 0xff + 800063e: f47f af71 bne.w 8000524 + 8000642: e76c b.n 800051e + 8000644: 20000080 .word 0x20000080 + 8000648: 08002eb0 .word 0x08002eb0 + +0800064c : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 800064c: b580 push {r7, lr} + 800064e: b092 sub sp, #72 @ 0x48 + 8000650: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000652: f107 0314 add.w r3, r7, #20 + 8000656: 2234 movs r2, #52 @ 0x34 + 8000658: 2100 movs r1, #0 + 800065a: 4618 mov r0, r3 + 800065c: f002 fbf0 bl 8002e40 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000660: 463b mov r3, r7 + 8000662: 2200 movs r2, #0 + 8000664: 601a str r2, [r3, #0] + 8000666: 605a str r2, [r3, #4] + 8000668: 609a str r2, [r3, #8] + 800066a: 60da str r2, [r3, #12] + 800066c: 611a str r2, [r3, #16] + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 800066e: 4b19 ldr r3, [pc, #100] @ (80006d4 ) + 8000670: 681b ldr r3, [r3, #0] + 8000672: f423 53c0 bic.w r3, r3, #6144 @ 0x1800 + 8000676: 4a17 ldr r2, [pc, #92] @ (80006d4 ) + 8000678: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 800067c: 6013 str r3, [r2, #0] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 800067e: 2302 movs r3, #2 + 8000680: 617b str r3, [r7, #20] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000682: 2301 movs r3, #1 + 8000684: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 8000686: 2310 movs r3, #16 + 8000688: 627b str r3, [r7, #36] @ 0x24 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 800068a: 2300 movs r3, #0 + 800068c: 63bb str r3, [r7, #56] @ 0x38 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 800068e: f107 0314 add.w r3, r7, #20 + 8000692: 4618 mov r0, r3 + 8000694: f000 fe7c bl 8001390 + 8000698: 4603 mov r3, r0 + 800069a: 2b00 cmp r3, #0 + 800069c: d001 beq.n 80006a2 + { + Error_Handler(); + 800069e: f000 f94b bl 8000938 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 80006a2: 230f movs r3, #15 + 80006a4: 603b str r3, [r7, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; + 80006a6: 2301 movs r3, #1 + 80006a8: 607b str r3, [r7, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 80006aa: 2300 movs r3, #0 + 80006ac: 60bb str r3, [r7, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80006ae: 2300 movs r3, #0 + 80006b0: 60fb str r3, [r7, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80006b2: 2300 movs r3, #0 + 80006b4: 613b str r3, [r7, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 80006b6: 463b mov r3, r7 + 80006b8: 2100 movs r1, #0 + 80006ba: 4618 mov r0, r3 + 80006bc: f001 f998 bl 80019f0 + 80006c0: 4603 mov r3, r0 + 80006c2: 2b00 cmp r3, #0 + 80006c4: d001 beq.n 80006ca + { + Error_Handler(); + 80006c6: f000 f937 bl 8000938 + } +} + 80006ca: bf00 nop + 80006cc: 3748 adds r7, #72 @ 0x48 + 80006ce: 46bd mov sp, r7 + 80006d0: bd80 pop {r7, pc} + 80006d2: bf00 nop + 80006d4: 40007000 .word 0x40007000 + +080006d8 : + * @brief SPI1 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI1_Init(void) +{ + 80006d8: b580 push {r7, lr} + 80006da: af00 add r7, sp, #0 + + /* USER CODE BEGIN SPI1_Init 1 */ + + /* USER CODE END SPI1_Init 1 */ + /* SPI1 parameter configuration*/ + hspi1.Instance = SPI1; + 80006dc: 4b17 ldr r3, [pc, #92] @ (800073c ) + 80006de: 4a18 ldr r2, [pc, #96] @ (8000740 ) + 80006e0: 601a str r2, [r3, #0] + hspi1.Init.Mode = SPI_MODE_MASTER; + 80006e2: 4b16 ldr r3, [pc, #88] @ (800073c ) + 80006e4: f44f 7282 mov.w r2, #260 @ 0x104 + 80006e8: 605a str r2, [r3, #4] + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + 80006ea: 4b14 ldr r3, [pc, #80] @ (800073c ) + 80006ec: 2200 movs r2, #0 + 80006ee: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 80006f0: 4b12 ldr r3, [pc, #72] @ (800073c ) + 80006f2: 2200 movs r2, #0 + 80006f4: 60da str r2, [r3, #12] + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + 80006f6: 4b11 ldr r3, [pc, #68] @ (800073c ) + 80006f8: 2200 movs r2, #0 + 80006fa: 611a str r2, [r3, #16] + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + 80006fc: 4b0f ldr r3, [pc, #60] @ (800073c ) + 80006fe: 2200 movs r2, #0 + 8000700: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 8000702: 4b0e ldr r3, [pc, #56] @ (800073c ) + 8000704: f44f 7200 mov.w r2, #512 @ 0x200 + 8000708: 619a str r2, [r3, #24] + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 800070a: 4b0c ldr r3, [pc, #48] @ (800073c ) + 800070c: 2200 movs r2, #0 + 800070e: 61da str r2, [r3, #28] + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + 8000710: 4b0a ldr r3, [pc, #40] @ (800073c ) + 8000712: 2200 movs r2, #0 + 8000714: 621a str r2, [r3, #32] + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + 8000716: 4b09 ldr r3, [pc, #36] @ (800073c ) + 8000718: 2200 movs r2, #0 + 800071a: 625a str r2, [r3, #36] @ 0x24 + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 800071c: 4b07 ldr r3, [pc, #28] @ (800073c ) + 800071e: 2200 movs r2, #0 + 8000720: 629a str r2, [r3, #40] @ 0x28 + hspi1.Init.CRCPolynomial = 10; + 8000722: 4b06 ldr r3, [pc, #24] @ (800073c ) + 8000724: 220a movs r2, #10 + 8000726: 62da str r2, [r3, #44] @ 0x2c + if (HAL_SPI_Init(&hspi1) != HAL_OK) + 8000728: 4804 ldr r0, [pc, #16] @ (800073c ) + 800072a: f001 fbb3 bl 8001e94 + 800072e: 4603 mov r3, r0 + 8000730: 2b00 cmp r3, #0 + 8000732: d001 beq.n 8000738 + { + Error_Handler(); + 8000734: f000 f900 bl 8000938 + } + /* USER CODE BEGIN SPI1_Init 2 */ + + /* USER CODE END SPI1_Init 2 */ + +} + 8000738: bf00 nop + 800073a: bd80 pop {r7, pc} + 800073c: 20000028 .word 0x20000028 + 8000740: 40013000 .word 0x40013000 + +08000744 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 8000744: b580 push {r7, lr} + 8000746: b08a sub sp, #40 @ 0x28 + 8000748: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800074a: f107 0318 add.w r3, r7, #24 + 800074e: 2200 movs r2, #0 + 8000750: 601a str r2, [r3, #0] + 8000752: 605a str r2, [r3, #4] + 8000754: 609a str r2, [r3, #8] + 8000756: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000758: f107 0310 add.w r3, r7, #16 + 800075c: 2200 movs r2, #0 + 800075e: 601a str r2, [r3, #0] + 8000760: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000762: 463b mov r3, r7 + 8000764: 2200 movs r2, #0 + 8000766: 601a str r2, [r3, #0] + 8000768: 605a str r2, [r3, #4] + 800076a: 609a str r2, [r3, #8] + 800076c: 60da str r2, [r3, #12] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 800076e: 4b2d ldr r3, [pc, #180] @ (8000824 ) + 8000770: 4a2d ldr r2, [pc, #180] @ (8000828 ) + 8000772: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 19-1; + 8000774: 4b2b ldr r3, [pc, #172] @ (8000824 ) + 8000776: 2212 movs r2, #18 + 8000778: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 800077a: 4b2a ldr r3, [pc, #168] @ (8000824 ) + 800077c: 2200 movs r2, #0 + 800077e: 609a str r2, [r3, #8] + htim3.Init.Period = 1600-1; + 8000780: 4b28 ldr r3, [pc, #160] @ (8000824 ) + 8000782: f240 623f movw r2, #1599 @ 0x63f + 8000786: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000788: 4b26 ldr r3, [pc, #152] @ (8000824 ) + 800078a: 2200 movs r2, #0 + 800078c: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 800078e: 4b25 ldr r3, [pc, #148] @ (8000824 ) + 8000790: 2280 movs r2, #128 @ 0x80 + 8000792: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 8000794: 4823 ldr r0, [pc, #140] @ (8000824 ) + 8000796: f001 fe27 bl 80023e8 + 800079a: 4603 mov r3, r0 + 800079c: 2b00 cmp r3, #0 + 800079e: d001 beq.n 80007a4 + { + Error_Handler(); + 80007a0: f000 f8ca bl 8000938 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80007a4: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80007a8: 61bb str r3, [r7, #24] + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 80007aa: f107 0318 add.w r3, r7, #24 + 80007ae: 4619 mov r1, r3 + 80007b0: 481c ldr r0, [pc, #112] @ (8000824 ) + 80007b2: f001 fff9 bl 80027a8 + 80007b6: 4603 mov r3, r0 + 80007b8: 2b00 cmp r3, #0 + 80007ba: d001 beq.n 80007c0 + { + Error_Handler(); + 80007bc: f000 f8bc bl 8000938 + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 80007c0: 4818 ldr r0, [pc, #96] @ (8000824 ) + 80007c2: f001 fe50 bl 8002466 + 80007c6: 4603 mov r3, r0 + 80007c8: 2b00 cmp r3, #0 + 80007ca: d001 beq.n 80007d0 + { + Error_Handler(); + 80007cc: f000 f8b4 bl 8000938 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 80007d0: 2300 movs r3, #0 + 80007d2: 613b str r3, [r7, #16] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 80007d4: 2300 movs r3, #0 + 80007d6: 617b str r3, [r7, #20] + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 80007d8: f107 0310 add.w r3, r7, #16 + 80007dc: 4619 mov r1, r3 + 80007de: 4811 ldr r0, [pc, #68] @ (8000824 ) + 80007e0: f002 fad0 bl 8002d84 + 80007e4: 4603 mov r3, r0 + 80007e6: 2b00 cmp r3, #0 + 80007e8: d001 beq.n 80007ee + { + Error_Handler(); + 80007ea: f000 f8a5 bl 8000938 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80007ee: 2360 movs r3, #96 @ 0x60 + 80007f0: 603b str r3, [r7, #0] + sConfigOC.Pulse = 800-1; + 80007f2: f240 331f movw r3, #799 @ 0x31f + 80007f6: 607b str r3, [r7, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 80007f8: 2300 movs r3, #0 + 80007fa: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 80007fc: 2300 movs r3, #0 + 80007fe: 60fb str r3, [r7, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000800: 463b mov r3, r7 + 8000802: 2200 movs r2, #0 + 8000804: 4619 mov r1, r3 + 8000806: 4807 ldr r0, [pc, #28] @ (8000824 ) + 8000808: f001 ff0c bl 8002624 + 800080c: 4603 mov r3, r0 + 800080e: 2b00 cmp r3, #0 + 8000810: d001 beq.n 8000816 + { + Error_Handler(); + 8000812: f000 f891 bl 8000938 + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 8000816: 4803 ldr r0, [pc, #12] @ (8000824 ) + 8000818: f000 f924 bl 8000a64 + +} + 800081c: bf00 nop + 800081e: 3728 adds r7, #40 @ 0x28 + 8000820: 46bd mov sp, r7 + 8000822: bd80 pop {r7, pc} + 8000824: 20000080 .word 0x20000080 + 8000828: 40000400 .word 0x40000400 + +0800082c : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 800082c: b580 push {r7, lr} + 800082e: b088 sub sp, #32 + 8000830: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000832: f107 030c add.w r3, r7, #12 + 8000836: 2200 movs r2, #0 + 8000838: 601a str r2, [r3, #0] + 800083a: 605a str r2, [r3, #4] + 800083c: 609a str r2, [r3, #8] + 800083e: 60da str r2, [r3, #12] + 8000840: 611a str r2, [r3, #16] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000842: 4b39 ldr r3, [pc, #228] @ (8000928 ) + 8000844: 69db ldr r3, [r3, #28] + 8000846: 4a38 ldr r2, [pc, #224] @ (8000928 ) + 8000848: f043 0304 orr.w r3, r3, #4 + 800084c: 61d3 str r3, [r2, #28] + 800084e: 4b36 ldr r3, [pc, #216] @ (8000928 ) + 8000850: 69db ldr r3, [r3, #28] + 8000852: f003 0304 and.w r3, r3, #4 + 8000856: 60bb str r3, [r7, #8] + 8000858: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800085a: 4b33 ldr r3, [pc, #204] @ (8000928 ) + 800085c: 69db ldr r3, [r3, #28] + 800085e: 4a32 ldr r2, [pc, #200] @ (8000928 ) + 8000860: f043 0301 orr.w r3, r3, #1 + 8000864: 61d3 str r3, [r2, #28] + 8000866: 4b30 ldr r3, [pc, #192] @ (8000928 ) + 8000868: 69db ldr r3, [r3, #28] + 800086a: f003 0301 and.w r3, r3, #1 + 800086e: 607b str r3, [r7, #4] + 8000870: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000872: 4b2d ldr r3, [pc, #180] @ (8000928 ) + 8000874: 69db ldr r3, [r3, #28] + 8000876: 4a2c ldr r2, [pc, #176] @ (8000928 ) + 8000878: f043 0302 orr.w r3, r3, #2 + 800087c: 61d3 str r3, [r2, #28] + 800087e: 4b2a ldr r3, [pc, #168] @ (8000928 ) + 8000880: 69db ldr r3, [r3, #28] + 8000882: f003 0302 and.w r3, r3, #2 + 8000886: 603b str r3, [r7, #0] + 8000888: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + 800088a: 2200 movs r2, #0 + 800088c: 2101 movs r1, #1 + 800088e: 4827 ldr r0, [pc, #156] @ (800092c ) + 8000890: f000 fd44 bl 800131c + + /*Configure GPIO pin : PC0 */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 8000894: 2301 movs r3, #1 + 8000896: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000898: 2301 movs r3, #1 + 800089a: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800089c: 2300 movs r3, #0 + 800089e: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008a0: 2300 movs r3, #0 + 80008a2: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80008a4: f107 030c add.w r3, r7, #12 + 80008a8: 4619 mov r1, r3 + 80008aa: 4820 ldr r0, [pc, #128] @ (800092c ) + 80008ac: f000 fba6 bl 8000ffc + + /*Configure GPIO pin : PB15 */ + GPIO_InitStruct.Pin = GPIO_PIN_15; + 80008b0: f44f 4300 mov.w r3, #32768 @ 0x8000 + 80008b4: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008b6: 2302 movs r3, #2 + 80008b8: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008ba: 2300 movs r3, #0 + 80008bc: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008be: 2300 movs r3, #0 + 80008c0: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; + 80008c2: 2303 movs r3, #3 + 80008c4: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 80008c6: f107 030c add.w r3, r7, #12 + 80008ca: 4619 mov r1, r3 + 80008cc: 4818 ldr r0, [pc, #96] @ (8000930 ) + 80008ce: f000 fb95 bl 8000ffc + + /*Configure GPIO pins : PA11 PA12 */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + 80008d2: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 80008d6: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + 80008d8: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 80008dc: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008de: 2300 movs r3, #0 + 80008e0: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80008e2: f107 030c add.w r3, r7, #12 + 80008e6: 4619 mov r1, r3 + 80008e8: 4812 ldr r0, [pc, #72] @ (8000934 ) + 80008ea: f000 fb87 bl 8000ffc + + /*Configure GPIO pin : PB7 */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + 80008ee: 2380 movs r3, #128 @ 0x80 + 80008f0: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008f2: 2302 movs r3, #2 + 80008f4: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80008f6: 2300 movs r3, #0 + 80008f8: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80008fa: 2300 movs r3, #0 + 80008fc: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + 80008fe: 2302 movs r3, #2 + 8000900: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000902: f107 030c add.w r3, r7, #12 + 8000906: 4619 mov r1, r3 + 8000908: 4809 ldr r0, [pc, #36] @ (8000930 ) + 800090a: f000 fb77 bl 8000ffc + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + 800090e: 2200 movs r2, #0 + 8000910: 2100 movs r1, #0 + 8000912: 2028 movs r0, #40 @ 0x28 + 8000914: f000 fb3b bl 8000f8e + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + 8000918: 2028 movs r0, #40 @ 0x28 + 800091a: f000 fb54 bl 8000fc6 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 800091e: bf00 nop + 8000920: 3720 adds r7, #32 + 8000922: 46bd mov sp, r7 + 8000924: bd80 pop {r7, pc} + 8000926: bf00 nop + 8000928: 40023800 .word 0x40023800 + 800092c: 40020800 .word 0x40020800 + 8000930: 40020400 .word 0x40020400 + 8000934: 40020000 .word 0x40020000 + +08000938 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000938: b480 push {r7} + 800093a: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 800093c: b672 cpsid i +} + 800093e: bf00 nop + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000940: bf00 nop + 8000942: e7fd b.n 8000940 + +08000944 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000944: b480 push {r7} + 8000946: b085 sub sp, #20 + 8000948: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_COMP_CLK_ENABLE(); + 800094a: 4b14 ldr r3, [pc, #80] @ (800099c ) + 800094c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800094e: 4a13 ldr r2, [pc, #76] @ (800099c ) + 8000950: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8000954: 6253 str r3, [r2, #36] @ 0x24 + 8000956: 4b11 ldr r3, [pc, #68] @ (800099c ) + 8000958: 6a5b ldr r3, [r3, #36] @ 0x24 + 800095a: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 800095e: 60fb str r3, [r7, #12] + 8000960: 68fb ldr r3, [r7, #12] + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000962: 4b0e ldr r3, [pc, #56] @ (800099c ) + 8000964: 6a1b ldr r3, [r3, #32] + 8000966: 4a0d ldr r2, [pc, #52] @ (800099c ) + 8000968: f043 0301 orr.w r3, r3, #1 + 800096c: 6213 str r3, [r2, #32] + 800096e: 4b0b ldr r3, [pc, #44] @ (800099c ) + 8000970: 6a1b ldr r3, [r3, #32] + 8000972: f003 0301 and.w r3, r3, #1 + 8000976: 60bb str r3, [r7, #8] + 8000978: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800097a: 4b08 ldr r3, [pc, #32] @ (800099c ) + 800097c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800097e: 4a07 ldr r2, [pc, #28] @ (800099c ) + 8000980: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000984: 6253 str r3, [r2, #36] @ 0x24 + 8000986: 4b05 ldr r3, [pc, #20] @ (800099c ) + 8000988: 6a5b ldr r3, [r3, #36] @ 0x24 + 800098a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800098e: 607b str r3, [r7, #4] + 8000990: 687b ldr r3, [r7, #4] + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000992: bf00 nop + 8000994: 3714 adds r7, #20 + 8000996: 46bd mov sp, r7 + 8000998: bc80 pop {r7} + 800099a: 4770 bx lr + 800099c: 40023800 .word 0x40023800 + +080009a0 : + * This function configures the hardware resources used in this example + * @param hspi: SPI handle pointer + * @retval None + */ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + 80009a0: b580 push {r7, lr} + 80009a2: b08a sub sp, #40 @ 0x28 + 80009a4: af00 add r7, sp, #0 + 80009a6: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 80009a8: f107 0314 add.w r3, r7, #20 + 80009ac: 2200 movs r2, #0 + 80009ae: 601a str r2, [r3, #0] + 80009b0: 605a str r2, [r3, #4] + 80009b2: 609a str r2, [r3, #8] + 80009b4: 60da str r2, [r3, #12] + 80009b6: 611a str r2, [r3, #16] + if(hspi->Instance==SPI1) + 80009b8: 687b ldr r3, [r7, #4] + 80009ba: 681b ldr r3, [r3, #0] + 80009bc: 4a17 ldr r2, [pc, #92] @ (8000a1c ) + 80009be: 4293 cmp r3, r2 + 80009c0: d127 bne.n 8000a12 + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + 80009c2: 4b17 ldr r3, [pc, #92] @ (8000a20 ) + 80009c4: 6a1b ldr r3, [r3, #32] + 80009c6: 4a16 ldr r2, [pc, #88] @ (8000a20 ) + 80009c8: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 80009cc: 6213 str r3, [r2, #32] + 80009ce: 4b14 ldr r3, [pc, #80] @ (8000a20 ) + 80009d0: 6a1b ldr r3, [r3, #32] + 80009d2: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 80009d6: 613b str r3, [r7, #16] + 80009d8: 693b ldr r3, [r7, #16] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80009da: 4b11 ldr r3, [pc, #68] @ (8000a20 ) + 80009dc: 69db ldr r3, [r3, #28] + 80009de: 4a10 ldr r2, [pc, #64] @ (8000a20 ) + 80009e0: f043 0301 orr.w r3, r3, #1 + 80009e4: 61d3 str r3, [r2, #28] + 80009e6: 4b0e ldr r3, [pc, #56] @ (8000a20 ) + 80009e8: 69db ldr r3, [r3, #28] + 80009ea: f003 0301 and.w r3, r3, #1 + 80009ee: 60fb str r3, [r7, #12] + 80009f0: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration + PA5 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA7 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 80009f2: 23e0 movs r3, #224 @ 0xe0 + 80009f4: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80009f6: 2302 movs r3, #2 + 80009f8: 61bb str r3, [r7, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80009fa: 2300 movs r3, #0 + 80009fc: 61fb str r3, [r7, #28] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 80009fe: 2303 movs r3, #3 + 8000a00: 623b str r3, [r7, #32] + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + 8000a02: 2305 movs r3, #5 + 8000a04: 627b str r3, [r7, #36] @ 0x24 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000a06: f107 0314 add.w r3, r7, #20 + 8000a0a: 4619 mov r1, r3 + 8000a0c: 4805 ldr r0, [pc, #20] @ (8000a24 ) + 8000a0e: f000 faf5 bl 8000ffc + + /* USER CODE END SPI1_MspInit 1 */ + + } + +} + 8000a12: bf00 nop + 8000a14: 3728 adds r7, #40 @ 0x28 + 8000a16: 46bd mov sp, r7 + 8000a18: bd80 pop {r7, pc} + 8000a1a: bf00 nop + 8000a1c: 40013000 .word 0x40013000 + 8000a20: 40023800 .word 0x40023800 + 8000a24: 40020000 .word 0x40020000 + +08000a28 : + * This function configures the hardware resources used in this example + * @param htim_base: TIM_Base handle pointer + * @retval None + */ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + 8000a28: b480 push {r7} + 8000a2a: b085 sub sp, #20 + 8000a2c: af00 add r7, sp, #0 + 8000a2e: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM3) + 8000a30: 687b ldr r3, [r7, #4] + 8000a32: 681b ldr r3, [r3, #0] + 8000a34: 4a09 ldr r2, [pc, #36] @ (8000a5c ) + 8000a36: 4293 cmp r3, r2 + 8000a38: d10b bne.n 8000a52 + { + /* USER CODE BEGIN TIM3_MspInit 0 */ + + /* USER CODE END TIM3_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM3_CLK_ENABLE(); + 8000a3a: 4b09 ldr r3, [pc, #36] @ (8000a60 ) + 8000a3c: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000a3e: 4a08 ldr r2, [pc, #32] @ (8000a60 ) + 8000a40: f043 0302 orr.w r3, r3, #2 + 8000a44: 6253 str r3, [r2, #36] @ 0x24 + 8000a46: 4b06 ldr r3, [pc, #24] @ (8000a60 ) + 8000a48: 6a5b ldr r3, [r3, #36] @ 0x24 + 8000a4a: f003 0302 and.w r3, r3, #2 + 8000a4e: 60fb str r3, [r7, #12] + 8000a50: 68fb ldr r3, [r7, #12] + + /* USER CODE END TIM3_MspInit 1 */ + + } + +} + 8000a52: bf00 nop + 8000a54: 3714 adds r7, #20 + 8000a56: 46bd mov sp, r7 + 8000a58: bc80 pop {r7} + 8000a5a: 4770 bx lr + 8000a5c: 40000400 .word 0x40000400 + 8000a60: 40023800 .word 0x40023800 + +08000a64 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000a64: b580 push {r7, lr} + 8000a66: b088 sub sp, #32 + 8000a68: af00 add r7, sp, #0 + 8000a6a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000a6c: f107 030c add.w r3, r7, #12 + 8000a70: 2200 movs r2, #0 + 8000a72: 601a str r2, [r3, #0] + 8000a74: 605a str r2, [r3, #4] + 8000a76: 609a str r2, [r3, #8] + 8000a78: 60da str r2, [r3, #12] + 8000a7a: 611a str r2, [r3, #16] + if(htim->Instance==TIM3) + 8000a7c: 687b ldr r3, [r7, #4] + 8000a7e: 681b ldr r3, [r3, #0] + 8000a80: 4a11 ldr r2, [pc, #68] @ (8000ac8 ) + 8000a82: 4293 cmp r3, r2 + 8000a84: d11b bne.n 8000abe + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + + __HAL_RCC_GPIOC_CLK_ENABLE(); + 8000a86: 4b11 ldr r3, [pc, #68] @ (8000acc ) + 8000a88: 69db ldr r3, [r3, #28] + 8000a8a: 4a10 ldr r2, [pc, #64] @ (8000acc ) + 8000a8c: f043 0304 orr.w r3, r3, #4 + 8000a90: 61d3 str r3, [r2, #28] + 8000a92: 4b0e ldr r3, [pc, #56] @ (8000acc ) + 8000a94: 69db ldr r3, [r3, #28] + 8000a96: f003 0304 and.w r3, r3, #4 + 8000a9a: 60bb str r3, [r7, #8] + 8000a9c: 68bb ldr r3, [r7, #8] + /**TIM3 GPIO Configuration + PC6 ------> TIM3_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + 8000a9e: 2340 movs r3, #64 @ 0x40 + 8000aa0: 60fb str r3, [r7, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000aa2: 2302 movs r3, #2 + 8000aa4: 613b str r3, [r7, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000aa6: 2300 movs r3, #0 + 8000aa8: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000aaa: 2300 movs r3, #0 + 8000aac: 61bb str r3, [r7, #24] + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + 8000aae: 2302 movs r3, #2 + 8000ab0: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000ab2: f107 030c add.w r3, r7, #12 + 8000ab6: 4619 mov r1, r3 + 8000ab8: 4805 ldr r0, [pc, #20] @ (8000ad0 ) + 8000aba: f000 fa9f bl 8000ffc + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + +} + 8000abe: bf00 nop + 8000ac0: 3720 adds r7, #32 + 8000ac2: 46bd mov sp, r7 + 8000ac4: bd80 pop {r7, pc} + 8000ac6: bf00 nop + 8000ac8: 40000400 .word 0x40000400 + 8000acc: 40023800 .word 0x40023800 + 8000ad0: 40020800 .word 0x40020800 + +08000ad4 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000ad4: b480 push {r7} + 8000ad6: af00 add r7, sp, #0 + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 8000ad8: bf00 nop + 8000ada: e7fd b.n 8000ad8 + +08000adc : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000adc: b480 push {r7} + 8000ade: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000ae0: bf00 nop + 8000ae2: e7fd b.n 8000ae0 + +08000ae4 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000ae4: b480 push {r7} + 8000ae6: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000ae8: bf00 nop + 8000aea: e7fd b.n 8000ae8 + +08000aec : + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000aec: b480 push {r7} + 8000aee: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000af0: bf00 nop + 8000af2: e7fd b.n 8000af0 + +08000af4 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000af4: b480 push {r7} + 8000af6: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000af8: bf00 nop + 8000afa: e7fd b.n 8000af8 + +08000afc : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000afc: b480 push {r7} + 8000afe: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000b00: bf00 nop + 8000b02: 46bd mov sp, r7 + 8000b04: bc80 pop {r7} + 8000b06: 4770 bx lr + +08000b08 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000b08: b480 push {r7} + 8000b0a: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000b0c: bf00 nop + 8000b0e: 46bd mov sp, r7 + 8000b10: bc80 pop {r7} + 8000b12: 4770 bx lr + +08000b14 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000b14: b480 push {r7} + 8000b16: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000b18: bf00 nop + 8000b1a: 46bd mov sp, r7 + 8000b1c: bc80 pop {r7} + 8000b1e: 4770 bx lr + +08000b20 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000b20: b580 push {r7, lr} + 8000b22: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000b24: f000 f91e bl 8000d64 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000b28: bf00 nop + 8000b2a: bd80 pop {r7, pc} + +08000b2c : + +/** + * @brief This function handles EXTI line[15:10] interrupts. + */ +void EXTI15_10_IRQHandler(void) +{ + 8000b2c: b580 push {r7, lr} + 8000b2e: af00 add r7, sp, #0 + /* USER CODE BEGIN EXTI15_10_IRQn 0 */ + + /* USER CODE END EXTI15_10_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + 8000b30: f44f 6000 mov.w r0, #2048 @ 0x800 + 8000b34: f000 fc0a bl 800134c + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + 8000b38: f44f 5080 mov.w r0, #4096 @ 0x1000 + 8000b3c: f000 fc06 bl 800134c + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8000b40: bf00 nop + 8000b42: bd80 pop {r7, pc} + +08000b44 : + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000b44: b480 push {r7} + 8000b46: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000b48: bf00 nop + 8000b4a: 46bd mov sp, r7 + 8000b4c: bc80 pop {r7} + 8000b4e: 4770 bx lr + +08000b50 : + .type Reset_Handler, %function +Reset_Handler: + + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000b50: f7ff fff8 bl 8000b44 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000b54: 480b ldr r0, [pc, #44] @ (8000b84 ) + ldr r1, =_edata + 8000b56: 490c ldr r1, [pc, #48] @ (8000b88 ) + ldr r2, =_sidata + 8000b58: 4a0c ldr r2, [pc, #48] @ (8000b8c ) + movs r3, #0 + 8000b5a: 2300 movs r3, #0 + b LoopCopyDataInit + 8000b5c: e002 b.n 8000b64 + +08000b5e : + +CopyDataInit: + ldr r4, [r2, r3] + 8000b5e: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000b60: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000b62: 3304 adds r3, #4 + +08000b64 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000b64: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000b66: 428c cmp r4, r1 + bcc CopyDataInit + 8000b68: d3f9 bcc.n 8000b5e + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000b6a: 4a09 ldr r2, [pc, #36] @ (8000b90 ) + ldr r4, =_ebss + 8000b6c: 4c09 ldr r4, [pc, #36] @ (8000b94 ) + movs r3, #0 + 8000b6e: 2300 movs r3, #0 + b LoopFillZerobss + 8000b70: e001 b.n 8000b76 + +08000b72 : + +FillZerobss: + str r3, [r2] + 8000b72: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000b74: 3204 adds r2, #4 + +08000b76 : + +LoopFillZerobss: + cmp r2, r4 + 8000b76: 42a2 cmp r2, r4 + bcc FillZerobss + 8000b78: d3fb bcc.n 8000b72 + +/* Call static constructors */ + bl __libc_init_array + 8000b7a: f002 f969 bl 8002e50 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000b7e: f7ff fcb9 bl 80004f4
+ bx lr + 8000b82: 4770 bx lr + ldr r0, =_sdata + 8000b84: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000b88: 2000000c .word 0x2000000c + ldr r2, =_sidata + 8000b8c: 08002efc .word 0x08002efc + ldr r2, =_sbss + 8000b90: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8000b94: 200000c4 .word 0x200000c4 + +08000b98 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000b98: e7fe b.n 8000b98 + +08000b9a : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + 8000b9a: b580 push {r7, lr} + 8000b9c: af00 add r7, sp, #0 + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + 8000b9e: 2107 movs r1, #7 + 8000ba0: 200b movs r0, #11 + 8000ba2: f000 f85d bl 8000c60 + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + 8000ba6: 2100 movs r1, #0 + 8000ba8: 2009 movs r0, #9 + 8000baa: f000 f859 bl 8000c60 + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + 8000bae: f000 f809 bl 8000bc4 + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + 8000bb2: f000 f80f bl 8000bd4 + MAX7219_Clear(); // clear all digits + 8000bb6: f000 f827 bl 8000c08 + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity + 8000bba: 200f movs r0, #15 + 8000bbc: f000 f812 bl 8000be4 +} + 8000bc0: bf00 nop + 8000bc2: bd80 pop {r7, pc} + +08000bc4 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + 8000bc4: b580 push {r7, lr} + 8000bc6: af00 add r7, sp, #0 + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode + 8000bc8: 2101 movs r1, #1 + 8000bca: 200c movs r0, #12 + 8000bcc: f000 f848 bl 8000c60 +} + 8000bd0: bf00 nop + 8000bd2: bd80 pop {r7, pc} + +08000bd4 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + 8000bd4: b580 push {r7, lr} + 8000bd6: af00 add r7, sp, #0 + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode + 8000bd8: 2100 movs r1, #0 + 8000bda: 200f movs r0, #15 + 8000bdc: f000 f840 bl 8000c60 +} + 8000be0: bf00 nop + 8000be2: bd80 pop {r7, pc} + +08000be4 : +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + 8000be4: b580 push {r7, lr} + 8000be6: b082 sub sp, #8 + 8000be8: af00 add r7, sp, #0 + 8000bea: 4603 mov r3, r0 + 8000bec: 71fb strb r3, [r7, #7] + brightness &= 0x0f; // mask off extra bits + 8000bee: 79fb ldrb r3, [r7, #7] + 8000bf0: f003 030f and.w r3, r3, #15 + 8000bf4: 71fb strb r3, [r7, #7] + MAX7219_Write(REG_INTENSITY, brightness); // set brightness + 8000bf6: 79fb ldrb r3, [r7, #7] + 8000bf8: 4619 mov r1, r3 + 8000bfa: 200a movs r0, #10 + 8000bfc: f000 f830 bl 8000c60 +} + 8000c00: bf00 nop + 8000c02: 3708 adds r7, #8 + 8000c04: 46bd mov sp, r7 + 8000c06: bd80 pop {r7, pc} + +08000c08 : +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + 8000c08: b580 push {r7, lr} + 8000c0a: b082 sub sp, #8 + 8000c0c: af00 add r7, sp, #0 + char i; + for (i=0; i < 8; i++) + 8000c0e: 2300 movs r3, #0 + 8000c10: 71fb strb r3, [r7, #7] + 8000c12: e007 b.n 8000c24 + MAX7219_Write(i, 0x00); // turn all segments off + 8000c14: 79fb ldrb r3, [r7, #7] + 8000c16: 2100 movs r1, #0 + 8000c18: 4618 mov r0, r3 + 8000c1a: f000 f821 bl 8000c60 + for (i=0; i < 8; i++) + 8000c1e: 79fb ldrb r3, [r7, #7] + 8000c20: 3301 adds r3, #1 + 8000c22: 71fb strb r3, [r7, #7] + 8000c24: 79fb ldrb r3, [r7, #7] + 8000c26: 2b07 cmp r3, #7 + 8000c28: d9f4 bls.n 8000c14 +} + 8000c2a: bf00 nop + 8000c2c: bf00 nop + 8000c2e: 3708 adds r7, #8 + 8000c30: 46bd mov sp, r7 + 8000c32: bd80 pop {r7, pc} + +08000c34 : +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + 8000c34: b580 push {r7, lr} + 8000c36: b082 sub sp, #8 + 8000c38: af00 add r7, sp, #0 + 8000c3a: 4603 mov r3, r0 + 8000c3c: 460a mov r2, r1 + 8000c3e: 71fb strb r3, [r7, #7] + 8000c40: 4613 mov r3, r2 + 8000c42: 71bb strb r3, [r7, #6] + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); + 8000c44: 79bb ldrb r3, [r7, #6] + 8000c46: 4a05 ldr r2, [pc, #20] @ (8000c5c ) + 8000c48: 5cd2 ldrb r2, [r2, r3] + 8000c4a: 79fb ldrb r3, [r7, #7] + 8000c4c: 4611 mov r1, r2 + 8000c4e: 4618 mov r0, r3 + 8000c50: f000 f806 bl 8000c60 +} + 8000c54: bf00 nop + 8000c56: 3708 adds r7, #8 + 8000c58: 46bd mov sp, r7 + 8000c5a: bd80 pop {r7, pc} + 8000c5c: 08002edc .word 0x08002edc + +08000c60 : +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + 8000c60: b580 push {r7, lr} + 8000c62: b082 sub sp, #8 + 8000c64: af00 add r7, sp, #0 + 8000c66: 4603 mov r3, r0 + 8000c68: 460a mov r2, r1 + 8000c6a: 71fb strb r3, [r7, #7] + 8000c6c: 4613 mov r3, r2 + 8000c6e: 71bb strb r3, [r7, #6] + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + 8000c70: 4b09 ldr r3, [pc, #36] @ (8000c98 ) + 8000c72: f44f 3280 mov.w r2, #65536 @ 0x10000 + 8000c76: 619a str r2, [r3, #24] + MAX7219_SendByte(reg_number); // write register number to MAX7219 + 8000c78: 79fb ldrb r3, [r7, #7] + 8000c7a: 4618 mov r0, r3 + 8000c7c: f000 f80e bl 8000c9c + MAX7219_SendByte(dataout); // write data to MAX7219 + 8000c80: 79bb ldrb r3, [r7, #6] + 8000c82: 4618 mov r0, r3 + 8000c84: f000 f80a bl 8000c9c + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + 8000c88: 4b03 ldr r3, [pc, #12] @ (8000c98 ) + 8000c8a: 2201 movs r2, #1 + 8000c8c: 619a str r2, [r3, #24] + } + 8000c8e: bf00 nop + 8000c90: 3708 adds r7, #8 + 8000c92: 46bd mov sp, r7 + 8000c94: bd80 pop {r7, pc} + 8000c96: bf00 nop + 8000c98: 40020800 .word 0x40020800 + +08000c9c : +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + 8000c9c: b580 push {r7, lr} + 8000c9e: b082 sub sp, #8 + 8000ca0: af00 add r7, sp, #0 + 8000ca2: 4603 mov r3, r0 + 8000ca4: 71fb strb r3, [r7, #7] + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + 8000ca6: 1df9 adds r1, r7, #7 + 8000ca8: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000cac: 2201 movs r2, #1 + 8000cae: 4803 ldr r0, [pc, #12] @ (8000cbc ) + 8000cb0: f001 f979 bl 8001fa6 + +} + 8000cb4: bf00 nop + 8000cb6: 3708 adds r7, #8 + 8000cb8: 46bd mov sp, r7 + 8000cba: bd80 pop {r7, pc} + 8000cbc: 20000028 .word 0x20000028 + +08000cc0 : + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 8000cc0: b580 push {r7, lr} + 8000cc2: b082 sub sp, #8 + 8000cc4: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8000cc6: 2300 movs r3, #0 + 8000cc8: 71fb strb r3, [r7, #7] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000cca: 2003 movs r0, #3 + 8000ccc: f000 f954 bl 8000f78 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8000cd0: 200f movs r0, #15 + 8000cd2: f000 f80d bl 8000cf0 + 8000cd6: 4603 mov r3, r0 + 8000cd8: 2b00 cmp r3, #0 + 8000cda: d002 beq.n 8000ce2 + { + status = HAL_ERROR; + 8000cdc: 2301 movs r3, #1 + 8000cde: 71fb strb r3, [r7, #7] + 8000ce0: e001 b.n 8000ce6 + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8000ce2: f7ff fe2f bl 8000944 + } + + /* Return function status */ + return status; + 8000ce6: 79fb ldrb r3, [r7, #7] +} + 8000ce8: 4618 mov r0, r3 + 8000cea: 3708 adds r7, #8 + 8000cec: 46bd mov sp, r7 + 8000cee: bd80 pop {r7, pc} + +08000cf0 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000cf0: b580 push {r7, lr} + 8000cf2: b084 sub sp, #16 + 8000cf4: af00 add r7, sp, #0 + 8000cf6: 6078 str r0, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8000cf8: 2300 movs r3, #0 + 8000cfa: 73fb strb r3, [r7, #15] + + if (uwTickFreq != 0U) + 8000cfc: 4b16 ldr r3, [pc, #88] @ (8000d58 ) + 8000cfe: 681b ldr r3, [r3, #0] + 8000d00: 2b00 cmp r3, #0 + 8000d02: d022 beq.n 8000d4a + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + 8000d04: 4b15 ldr r3, [pc, #84] @ (8000d5c ) + 8000d06: 681a ldr r2, [r3, #0] + 8000d08: 4b13 ldr r3, [pc, #76] @ (8000d58 ) + 8000d0a: 681b ldr r3, [r3, #0] + 8000d0c: f44f 717a mov.w r1, #1000 @ 0x3e8 + 8000d10: fbb1 f3f3 udiv r3, r1, r3 + 8000d14: fbb2 f3f3 udiv r3, r2, r3 + 8000d18: 4618 mov r0, r3 + 8000d1a: f000 f962 bl 8000fe2 + 8000d1e: 4603 mov r3, r0 + 8000d20: 2b00 cmp r3, #0 + 8000d22: d10f bne.n 8000d44 + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000d24: 687b ldr r3, [r7, #4] + 8000d26: 2b0f cmp r3, #15 + 8000d28: d809 bhi.n 8000d3e + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000d2a: 2200 movs r2, #0 + 8000d2c: 6879 ldr r1, [r7, #4] + 8000d2e: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000d32: f000 f92c bl 8000f8e + uwTickPrio = TickPriority; + 8000d36: 4a0a ldr r2, [pc, #40] @ (8000d60 ) + 8000d38: 687b ldr r3, [r7, #4] + 8000d3a: 6013 str r3, [r2, #0] + 8000d3c: e007 b.n 8000d4e + } + else + { + status = HAL_ERROR; + 8000d3e: 2301 movs r3, #1 + 8000d40: 73fb strb r3, [r7, #15] + 8000d42: e004 b.n 8000d4e + } + } + else + { + status = HAL_ERROR; + 8000d44: 2301 movs r3, #1 + 8000d46: 73fb strb r3, [r7, #15] + 8000d48: e001 b.n 8000d4e + } + } + else + { + status = HAL_ERROR; + 8000d4a: 2301 movs r3, #1 + 8000d4c: 73fb strb r3, [r7, #15] + } + + /* Return function status */ + return status; + 8000d4e: 7bfb ldrb r3, [r7, #15] +} + 8000d50: 4618 mov r0, r3 + 8000d52: 3710 adds r7, #16 + 8000d54: 46bd mov sp, r7 + 8000d56: bd80 pop {r7, pc} + 8000d58: 20000008 .word 0x20000008 + 8000d5c: 20000000 .word 0x20000000 + 8000d60: 20000004 .word 0x20000004 + +08000d64 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + 8000d64: b480 push {r7} + 8000d66: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000d68: 4b05 ldr r3, [pc, #20] @ (8000d80 ) + 8000d6a: 681a ldr r2, [r3, #0] + 8000d6c: 4b05 ldr r3, [pc, #20] @ (8000d84 ) + 8000d6e: 681b ldr r3, [r3, #0] + 8000d70: 4413 add r3, r2 + 8000d72: 4a03 ldr r2, [pc, #12] @ (8000d80 ) + 8000d74: 6013 str r3, [r2, #0] +} + 8000d76: bf00 nop + 8000d78: 46bd mov sp, r7 + 8000d7a: bc80 pop {r7} + 8000d7c: 4770 bx lr + 8000d7e: bf00 nop + 8000d80: 200000c0 .word 0x200000c0 + 8000d84: 20000008 .word 0x20000008 + +08000d88 : + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + 8000d88: b480 push {r7} + 8000d8a: af00 add r7, sp, #0 + return uwTick; + 8000d8c: 4b02 ldr r3, [pc, #8] @ (8000d98 ) + 8000d8e: 681b ldr r3, [r3, #0] +} + 8000d90: 4618 mov r0, r3 + 8000d92: 46bd mov sp, r7 + 8000d94: bc80 pop {r7} + 8000d96: 4770 bx lr + 8000d98: 200000c0 .word 0x200000c0 + +08000d9c : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 8000d9c: b580 push {r7, lr} + 8000d9e: b084 sub sp, #16 + 8000da0: af00 add r7, sp, #0 + 8000da2: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000da4: f7ff fff0 bl 8000d88 + 8000da8: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 8000daa: 687b ldr r3, [r7, #4] + 8000dac: 60fb str r3, [r7, #12] + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + 8000dae: 68fb ldr r3, [r7, #12] + 8000db0: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8000db4: d004 beq.n 8000dc0 + { + wait += (uint32_t)(uwTickFreq); + 8000db6: 4b09 ldr r3, [pc, #36] @ (8000ddc ) + 8000db8: 681b ldr r3, [r3, #0] + 8000dba: 68fa ldr r2, [r7, #12] + 8000dbc: 4413 add r3, r2 + 8000dbe: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8000dc0: bf00 nop + 8000dc2: f7ff ffe1 bl 8000d88 + 8000dc6: 4602 mov r2, r0 + 8000dc8: 68bb ldr r3, [r7, #8] + 8000dca: 1ad3 subs r3, r2, r3 + 8000dcc: 68fa ldr r2, [r7, #12] + 8000dce: 429a cmp r2, r3 + 8000dd0: d8f7 bhi.n 8000dc2 + { + } +} + 8000dd2: bf00 nop + 8000dd4: bf00 nop + 8000dd6: 3710 adds r7, #16 + 8000dd8: 46bd mov sp, r7 + 8000dda: bd80 pop {r7, pc} + 8000ddc: 20000008 .word 0x20000008 + +08000de0 <__NVIC_SetPriorityGrouping>: + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000de0: b480 push {r7} + 8000de2: b085 sub sp, #20 + 8000de4: af00 add r7, sp, #0 + 8000de6: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000de8: 687b ldr r3, [r7, #4] + 8000dea: f003 0307 and.w r3, r3, #7 + 8000dee: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000df0: 4b0c ldr r3, [pc, #48] @ (8000e24 <__NVIC_SetPriorityGrouping+0x44>) + 8000df2: 68db ldr r3, [r3, #12] + 8000df4: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000df6: 68ba ldr r2, [r7, #8] + 8000df8: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000dfc: 4013 ands r3, r2 + 8000dfe: 60bb str r3, [r7, #8] + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8000e00: 68fb ldr r3, [r7, #12] + 8000e02: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000e04: 68bb ldr r3, [r7, #8] + 8000e06: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000e08: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000e0c: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000e10: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000e12: 4a04 ldr r2, [pc, #16] @ (8000e24 <__NVIC_SetPriorityGrouping+0x44>) + 8000e14: 68bb ldr r3, [r7, #8] + 8000e16: 60d3 str r3, [r2, #12] +} + 8000e18: bf00 nop + 8000e1a: 3714 adds r7, #20 + 8000e1c: 46bd mov sp, r7 + 8000e1e: bc80 pop {r7} + 8000e20: 4770 bx lr + 8000e22: bf00 nop + 8000e24: e000ed00 .word 0xe000ed00 + +08000e28 <__NVIC_GetPriorityGrouping>: + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + 8000e28: b480 push {r7} + 8000e2a: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000e2c: 4b04 ldr r3, [pc, #16] @ (8000e40 <__NVIC_GetPriorityGrouping+0x18>) + 8000e2e: 68db ldr r3, [r3, #12] + 8000e30: 0a1b lsrs r3, r3, #8 + 8000e32: f003 0307 and.w r3, r3, #7 +} + 8000e36: 4618 mov r0, r3 + 8000e38: 46bd mov sp, r7 + 8000e3a: bc80 pop {r7} + 8000e3c: 4770 bx lr + 8000e3e: bf00 nop + 8000e40: e000ed00 .word 0xe000ed00 + +08000e44 <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000e44: b480 push {r7} + 8000e46: b083 sub sp, #12 + 8000e48: af00 add r7, sp, #0 + 8000e4a: 4603 mov r3, r0 + 8000e4c: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000e4e: f997 3007 ldrsb.w r3, [r7, #7] + 8000e52: 2b00 cmp r3, #0 + 8000e54: db0b blt.n 8000e6e <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000e56: 79fb ldrb r3, [r7, #7] + 8000e58: f003 021f and.w r2, r3, #31 + 8000e5c: 4906 ldr r1, [pc, #24] @ (8000e78 <__NVIC_EnableIRQ+0x34>) + 8000e5e: f997 3007 ldrsb.w r3, [r7, #7] + 8000e62: 095b lsrs r3, r3, #5 + 8000e64: 2001 movs r0, #1 + 8000e66: fa00 f202 lsl.w r2, r0, r2 + 8000e6a: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000e6e: bf00 nop + 8000e70: 370c adds r7, #12 + 8000e72: 46bd mov sp, r7 + 8000e74: bc80 pop {r7} + 8000e76: 4770 bx lr + 8000e78: e000e100 .word 0xe000e100 + +08000e7c <__NVIC_SetPriority>: + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + 8000e7c: b480 push {r7} + 8000e7e: b083 sub sp, #12 + 8000e80: af00 add r7, sp, #0 + 8000e82: 4603 mov r3, r0 + 8000e84: 6039 str r1, [r7, #0] + 8000e86: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000e88: f997 3007 ldrsb.w r3, [r7, #7] + 8000e8c: 2b00 cmp r3, #0 + 8000e8e: db0a blt.n 8000ea6 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000e90: 683b ldr r3, [r7, #0] + 8000e92: b2da uxtb r2, r3 + 8000e94: 490c ldr r1, [pc, #48] @ (8000ec8 <__NVIC_SetPriority+0x4c>) + 8000e96: f997 3007 ldrsb.w r3, [r7, #7] + 8000e9a: 0112 lsls r2, r2, #4 + 8000e9c: b2d2 uxtb r2, r2 + 8000e9e: 440b add r3, r1 + 8000ea0: f883 2300 strb.w r2, [r3, #768] @ 0x300 + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + 8000ea4: e00a b.n 8000ebc <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000ea6: 683b ldr r3, [r7, #0] + 8000ea8: b2da uxtb r2, r3 + 8000eaa: 4908 ldr r1, [pc, #32] @ (8000ecc <__NVIC_SetPriority+0x50>) + 8000eac: 79fb ldrb r3, [r7, #7] + 8000eae: f003 030f and.w r3, r3, #15 + 8000eb2: 3b04 subs r3, #4 + 8000eb4: 0112 lsls r2, r2, #4 + 8000eb6: b2d2 uxtb r2, r2 + 8000eb8: 440b add r3, r1 + 8000eba: 761a strb r2, [r3, #24] +} + 8000ebc: bf00 nop + 8000ebe: 370c adds r7, #12 + 8000ec0: 46bd mov sp, r7 + 8000ec2: bc80 pop {r7} + 8000ec4: 4770 bx lr + 8000ec6: bf00 nop + 8000ec8: e000e100 .word 0xe000e100 + 8000ecc: e000ed00 .word 0xe000ed00 + +08000ed0 : + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000ed0: b480 push {r7} + 8000ed2: b089 sub sp, #36 @ 0x24 + 8000ed4: af00 add r7, sp, #0 + 8000ed6: 60f8 str r0, [r7, #12] + 8000ed8: 60b9 str r1, [r7, #8] + 8000eda: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000edc: 68fb ldr r3, [r7, #12] + 8000ede: f003 0307 and.w r3, r3, #7 + 8000ee2: 61fb str r3, [r7, #28] + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8000ee4: 69fb ldr r3, [r7, #28] + 8000ee6: f1c3 0307 rsb r3, r3, #7 + 8000eea: 2b04 cmp r3, #4 + 8000eec: bf28 it cs + 8000eee: 2304 movcs r3, #4 + 8000ef0: 61bb str r3, [r7, #24] + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8000ef2: 69fb ldr r3, [r7, #28] + 8000ef4: 3304 adds r3, #4 + 8000ef6: 2b06 cmp r3, #6 + 8000ef8: d902 bls.n 8000f00 + 8000efa: 69fb ldr r3, [r7, #28] + 8000efc: 3b03 subs r3, #3 + 8000efe: e000 b.n 8000f02 + 8000f00: 2300 movs r3, #0 + 8000f02: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000f04: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000f08: 69bb ldr r3, [r7, #24] + 8000f0a: fa02 f303 lsl.w r3, r2, r3 + 8000f0e: 43da mvns r2, r3 + 8000f10: 68bb ldr r3, [r7, #8] + 8000f12: 401a ands r2, r3 + 8000f14: 697b ldr r3, [r7, #20] + 8000f16: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000f18: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000f1c: 697b ldr r3, [r7, #20] + 8000f1e: fa01 f303 lsl.w r3, r1, r3 + 8000f22: 43d9 mvns r1, r3 + 8000f24: 687b ldr r3, [r7, #4] + 8000f26: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000f28: 4313 orrs r3, r2 + ); +} + 8000f2a: 4618 mov r0, r3 + 8000f2c: 3724 adds r7, #36 @ 0x24 + 8000f2e: 46bd mov sp, r7 + 8000f30: bc80 pop {r7} + 8000f32: 4770 bx lr + +08000f34 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000f34: b580 push {r7, lr} + 8000f36: b082 sub sp, #8 + 8000f38: af00 add r7, sp, #0 + 8000f3a: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000f3c: 687b ldr r3, [r7, #4] + 8000f3e: 3b01 subs r3, #1 + 8000f40: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000f44: d301 bcc.n 8000f4a + { + return (1UL); /* Reload value impossible */ + 8000f46: 2301 movs r3, #1 + 8000f48: e00f b.n 8000f6a + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000f4a: 4a0a ldr r2, [pc, #40] @ (8000f74 ) + 8000f4c: 687b ldr r3, [r7, #4] + 8000f4e: 3b01 subs r3, #1 + 8000f50: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000f52: 210f movs r1, #15 + 8000f54: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 8000f58: f7ff ff90 bl 8000e7c <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000f5c: 4b05 ldr r3, [pc, #20] @ (8000f74 ) + 8000f5e: 2200 movs r2, #0 + 8000f60: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000f62: 4b04 ldr r3, [pc, #16] @ (8000f74 ) + 8000f64: 2207 movs r2, #7 + 8000f66: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000f68: 2300 movs r3, #0 +} + 8000f6a: 4618 mov r0, r3 + 8000f6c: 3708 adds r7, #8 + 8000f6e: 46bd mov sp, r7 + 8000f70: bd80 pop {r7, pc} + 8000f72: bf00 nop + 8000f74: e000e010 .word 0xe000e010 + +08000f78 : + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + 8000f78: b580 push {r7, lr} + 8000f7a: b082 sub sp, #8 + 8000f7c: af00 add r7, sp, #0 + 8000f7e: 6078 str r0, [r7, #4] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); + 8000f80: 6878 ldr r0, [r7, #4] + 8000f82: f7ff ff2d bl 8000de0 <__NVIC_SetPriorityGrouping> +} + 8000f86: bf00 nop + 8000f88: 3708 adds r7, #8 + 8000f8a: 46bd mov sp, r7 + 8000f8c: bd80 pop {r7, pc} + +08000f8e : + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8000f8e: b580 push {r7, lr} + 8000f90: b086 sub sp, #24 + 8000f92: af00 add r7, sp, #0 + 8000f94: 4603 mov r3, r0 + 8000f96: 60b9 str r1, [r7, #8] + 8000f98: 607a str r2, [r7, #4] + 8000f9a: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00; + 8000f9c: 2300 movs r3, #0 + 8000f9e: 617b str r3, [r7, #20] + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + 8000fa0: f7ff ff42 bl 8000e28 <__NVIC_GetPriorityGrouping> + 8000fa4: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000fa6: 687a ldr r2, [r7, #4] + 8000fa8: 68b9 ldr r1, [r7, #8] + 8000faa: 6978 ldr r0, [r7, #20] + 8000fac: f7ff ff90 bl 8000ed0 + 8000fb0: 4602 mov r2, r0 + 8000fb2: f997 300f ldrsb.w r3, [r7, #15] + 8000fb6: 4611 mov r1, r2 + 8000fb8: 4618 mov r0, r3 + 8000fba: f7ff ff5f bl 8000e7c <__NVIC_SetPriority> +} + 8000fbe: bf00 nop + 8000fc0: 3718 adds r7, #24 + 8000fc2: 46bd mov sp, r7 + 8000fc4: bd80 pop {r7, pc} + +08000fc6 : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000fc6: b580 push {r7, lr} + 8000fc8: b082 sub sp, #8 + 8000fca: af00 add r7, sp, #0 + 8000fcc: 4603 mov r3, r0 + 8000fce: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000fd0: f997 3007 ldrsb.w r3, [r7, #7] + 8000fd4: 4618 mov r0, r3 + 8000fd6: f7ff ff35 bl 8000e44 <__NVIC_EnableIRQ> +} + 8000fda: bf00 nop + 8000fdc: 3708 adds r7, #8 + 8000fde: 46bd mov sp, r7 + 8000fe0: bd80 pop {r7, pc} + +08000fe2 : + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000fe2: b580 push {r7, lr} + 8000fe4: b082 sub sp, #8 + 8000fe6: af00 add r7, sp, #0 + 8000fe8: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000fea: 6878 ldr r0, [r7, #4] + 8000fec: f7ff ffa2 bl 8000f34 + 8000ff0: 4603 mov r3, r0 +} + 8000ff2: 4618 mov r0, r3 + 8000ff4: 3708 adds r7, #8 + 8000ff6: 46bd mov sp, r7 + 8000ff8: bd80 pop {r7, pc} + ... + +08000ffc : + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000ffc: b480 push {r7} + 8000ffe: b087 sub sp, #28 + 8001000: af00 add r7, sp, #0 + 8001002: 6078 str r0, [r7, #4] + 8001004: 6039 str r1, [r7, #0] + uint32_t position = 0x00; + 8001006: 2300 movs r3, #0 + 8001008: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00; + 800100a: 2300 movs r3, #0 + 800100c: 60fb str r3, [r7, #12] + uint32_t temp = 0x00; + 800100e: 2300 movs r3, #0 + 8001010: 613b str r3, [r7, #16] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 8001012: e160 b.n 80012d6 + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 8001014: 683b ldr r3, [r7, #0] + 8001016: 681a ldr r2, [r3, #0] + 8001018: 2101 movs r1, #1 + 800101a: 697b ldr r3, [r7, #20] + 800101c: fa01 f303 lsl.w r3, r1, r3 + 8001020: 4013 ands r3, r2 + 8001022: 60fb str r3, [r7, #12] + + if (iocurrent) + 8001024: 68fb ldr r3, [r7, #12] + 8001026: 2b00 cmp r3, #0 + 8001028: f000 8152 beq.w 80012d0 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 800102c: 683b ldr r3, [r7, #0] + 800102e: 685b ldr r3, [r3, #4] + 8001030: f003 0303 and.w r3, r3, #3 + 8001034: 2b01 cmp r3, #1 + 8001036: d005 beq.n 8001044 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8001038: 683b ldr r3, [r7, #0] + 800103a: 685b ldr r3, [r3, #4] + 800103c: f003 0303 and.w r3, r3, #3 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001040: 2b02 cmp r3, #2 + 8001042: d130 bne.n 80010a6 + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8001044: 687b ldr r3, [r7, #4] + 8001046: 689b ldr r3, [r3, #8] + 8001048: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 800104a: 697b ldr r3, [r7, #20] + 800104c: 005b lsls r3, r3, #1 + 800104e: 2203 movs r2, #3 + 8001050: fa02 f303 lsl.w r3, r2, r3 + 8001054: 43db mvns r3, r3 + 8001056: 693a ldr r2, [r7, #16] + 8001058: 4013 ands r3, r2 + 800105a: 613b str r3, [r7, #16] + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + 800105c: 683b ldr r3, [r7, #0] + 800105e: 68da ldr r2, [r3, #12] + 8001060: 697b ldr r3, [r7, #20] + 8001062: 005b lsls r3, r3, #1 + 8001064: fa02 f303 lsl.w r3, r2, r3 + 8001068: 693a ldr r2, [r7, #16] + 800106a: 4313 orrs r3, r2 + 800106c: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 800106e: 687b ldr r3, [r7, #4] + 8001070: 693a ldr r2, [r7, #16] + 8001072: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001074: 687b ldr r3, [r7, #4] + 8001076: 685b ldr r3, [r3, #4] + 8001078: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + 800107a: 2201 movs r2, #1 + 800107c: 697b ldr r3, [r7, #20] + 800107e: fa02 f303 lsl.w r3, r2, r3 + 8001082: 43db mvns r3, r3 + 8001084: 693a ldr r2, [r7, #16] + 8001086: 4013 ands r3, r2 + 8001088: 613b str r3, [r7, #16] + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800108a: 683b ldr r3, [r7, #0] + 800108c: 685b ldr r3, [r3, #4] + 800108e: 091b lsrs r3, r3, #4 + 8001090: f003 0201 and.w r2, r3, #1 + 8001094: 697b ldr r3, [r7, #20] + 8001096: fa02 f303 lsl.w r3, r2, r3 + 800109a: 693a ldr r2, [r7, #16] + 800109c: 4313 orrs r3, r2 + 800109e: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 80010a0: 687b ldr r3, [r7, #4] + 80010a2: 693a ldr r2, [r7, #16] + 80010a4: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 80010a6: 683b ldr r3, [r7, #0] + 80010a8: 685b ldr r3, [r3, #4] + 80010aa: f003 0303 and.w r3, r3, #3 + 80010ae: 2b03 cmp r3, #3 + 80010b0: d017 beq.n 80010e2 + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 80010b2: 687b ldr r3, [r7, #4] + 80010b4: 68db ldr r3, [r3, #12] + 80010b6: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + 80010b8: 697b ldr r3, [r7, #20] + 80010ba: 005b lsls r3, r3, #1 + 80010bc: 2203 movs r2, #3 + 80010be: fa02 f303 lsl.w r3, r2, r3 + 80010c2: 43db mvns r3, r3 + 80010c4: 693a ldr r2, [r7, #16] + 80010c6: 4013 ands r3, r2 + 80010c8: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + 80010ca: 683b ldr r3, [r7, #0] + 80010cc: 689a ldr r2, [r3, #8] + 80010ce: 697b ldr r3, [r7, #20] + 80010d0: 005b lsls r3, r3, #1 + 80010d2: fa02 f303 lsl.w r3, r2, r3 + 80010d6: 693a ldr r2, [r7, #16] + 80010d8: 4313 orrs r3, r2 + 80010da: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 80010dc: 687b ldr r3, [r7, #4] + 80010de: 693a ldr r2, [r7, #16] + 80010e0: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 80010e2: 683b ldr r3, [r7, #0] + 80010e4: 685b ldr r3, [r3, #4] + 80010e6: f003 0303 and.w r3, r3, #3 + 80010ea: 2b02 cmp r3, #2 + 80010ec: d123 bne.n 8001136 + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + 80010ee: 697b ldr r3, [r7, #20] + 80010f0: 08da lsrs r2, r3, #3 + 80010f2: 687b ldr r3, [r7, #4] + 80010f4: 3208 adds r2, #8 + 80010f6: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80010fa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + 80010fc: 697b ldr r3, [r7, #20] + 80010fe: f003 0307 and.w r3, r3, #7 + 8001102: 009b lsls r3, r3, #2 + 8001104: 220f movs r2, #15 + 8001106: fa02 f303 lsl.w r3, r2, r3 + 800110a: 43db mvns r3, r3 + 800110c: 693a ldr r2, [r7, #16] + 800110e: 4013 ands r3, r2 + 8001110: 613b str r3, [r7, #16] + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + 8001112: 683b ldr r3, [r7, #0] + 8001114: 691a ldr r2, [r3, #16] + 8001116: 697b ldr r3, [r7, #20] + 8001118: f003 0307 and.w r3, r3, #7 + 800111c: 009b lsls r3, r3, #2 + 800111e: fa02 f303 lsl.w r3, r2, r3 + 8001122: 693a ldr r2, [r7, #16] + 8001124: 4313 orrs r3, r2 + 8001126: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3] = temp; + 8001128: 697b ldr r3, [r7, #20] + 800112a: 08da lsrs r2, r3, #3 + 800112c: 687b ldr r3, [r7, #4] + 800112e: 3208 adds r2, #8 + 8001130: 6939 ldr r1, [r7, #16] + 8001132: f843 1022 str.w r1, [r3, r2, lsl #2] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8001136: 687b ldr r3, [r7, #4] + 8001138: 681b ldr r3, [r3, #0] + 800113a: 613b str r3, [r7, #16] + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + 800113c: 697b ldr r3, [r7, #20] + 800113e: 005b lsls r3, r3, #1 + 8001140: 2203 movs r2, #3 + 8001142: fa02 f303 lsl.w r3, r2, r3 + 8001146: 43db mvns r3, r3 + 8001148: 693a ldr r2, [r7, #16] + 800114a: 4013 ands r3, r2 + 800114c: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 800114e: 683b ldr r3, [r7, #0] + 8001150: 685b ldr r3, [r3, #4] + 8001152: f003 0203 and.w r2, r3, #3 + 8001156: 697b ldr r3, [r7, #20] + 8001158: 005b lsls r3, r3, #1 + 800115a: fa02 f303 lsl.w r3, r2, r3 + 800115e: 693a ldr r2, [r7, #16] + 8001160: 4313 orrs r3, r2 + 8001162: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001164: 687b ldr r3, [r7, #4] + 8001166: 693a ldr r2, [r7, #16] + 8001168: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + 800116a: 683b ldr r3, [r7, #0] + 800116c: 685b ldr r3, [r3, #4] + 800116e: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8001172: 2b00 cmp r3, #0 + 8001174: f000 80ac beq.w 80012d0 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8001178: 4b5e ldr r3, [pc, #376] @ (80012f4 ) + 800117a: 6a1b ldr r3, [r3, #32] + 800117c: 4a5d ldr r2, [pc, #372] @ (80012f4 ) + 800117e: f043 0301 orr.w r3, r3, #1 + 8001182: 6213 str r3, [r2, #32] + 8001184: 4b5b ldr r3, [pc, #364] @ (80012f4 ) + 8001186: 6a1b ldr r3, [r3, #32] + 8001188: f003 0301 and.w r3, r3, #1 + 800118c: 60bb str r3, [r7, #8] + 800118e: 68bb ldr r3, [r7, #8] + + temp = SYSCFG->EXTICR[position >> 2]; + 8001190: 4a59 ldr r2, [pc, #356] @ (80012f8 ) + 8001192: 697b ldr r3, [r7, #20] + 8001194: 089b lsrs r3, r3, #2 + 8001196: 3302 adds r3, #2 + 8001198: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800119c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + 800119e: 697b ldr r3, [r7, #20] + 80011a0: f003 0303 and.w r3, r3, #3 + 80011a4: 009b lsls r3, r3, #2 + 80011a6: 220f movs r2, #15 + 80011a8: fa02 f303 lsl.w r3, r2, r3 + 80011ac: 43db mvns r3, r3 + 80011ae: 693a ldr r2, [r7, #16] + 80011b0: 4013 ands r3, r2 + 80011b2: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 80011b4: 687b ldr r3, [r7, #4] + 80011b6: 4a51 ldr r2, [pc, #324] @ (80012fc ) + 80011b8: 4293 cmp r3, r2 + 80011ba: d025 beq.n 8001208 + 80011bc: 687b ldr r3, [r7, #4] + 80011be: 4a50 ldr r2, [pc, #320] @ (8001300 ) + 80011c0: 4293 cmp r3, r2 + 80011c2: d01f beq.n 8001204 + 80011c4: 687b ldr r3, [r7, #4] + 80011c6: 4a4f ldr r2, [pc, #316] @ (8001304 ) + 80011c8: 4293 cmp r3, r2 + 80011ca: d019 beq.n 8001200 + 80011cc: 687b ldr r3, [r7, #4] + 80011ce: 4a4e ldr r2, [pc, #312] @ (8001308 ) + 80011d0: 4293 cmp r3, r2 + 80011d2: d013 beq.n 80011fc + 80011d4: 687b ldr r3, [r7, #4] + 80011d6: 4a4d ldr r2, [pc, #308] @ (800130c ) + 80011d8: 4293 cmp r3, r2 + 80011da: d00d beq.n 80011f8 + 80011dc: 687b ldr r3, [r7, #4] + 80011de: 4a4c ldr r2, [pc, #304] @ (8001310 ) + 80011e0: 4293 cmp r3, r2 + 80011e2: d007 beq.n 80011f4 + 80011e4: 687b ldr r3, [r7, #4] + 80011e6: 4a4b ldr r2, [pc, #300] @ (8001314 ) + 80011e8: 4293 cmp r3, r2 + 80011ea: d101 bne.n 80011f0 + 80011ec: 2306 movs r3, #6 + 80011ee: e00c b.n 800120a + 80011f0: 2307 movs r3, #7 + 80011f2: e00a b.n 800120a + 80011f4: 2305 movs r3, #5 + 80011f6: e008 b.n 800120a + 80011f8: 2304 movs r3, #4 + 80011fa: e006 b.n 800120a + 80011fc: 2303 movs r3, #3 + 80011fe: e004 b.n 800120a + 8001200: 2302 movs r3, #2 + 8001202: e002 b.n 800120a + 8001204: 2301 movs r3, #1 + 8001206: e000 b.n 800120a + 8001208: 2300 movs r3, #0 + 800120a: 697a ldr r2, [r7, #20] + 800120c: f002 0203 and.w r2, r2, #3 + 8001210: 0092 lsls r2, r2, #2 + 8001212: 4093 lsls r3, r2 + 8001214: 693a ldr r2, [r7, #16] + 8001216: 4313 orrs r3, r2 + 8001218: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2] = temp; + 800121a: 4937 ldr r1, [pc, #220] @ (80012f8 ) + 800121c: 697b ldr r3, [r7, #20] + 800121e: 089b lsrs r3, r3, #2 + 8001220: 3302 adds r3, #2 + 8001222: 693a ldr r2, [r7, #16] + 8001224: f841 2023 str.w r2, [r1, r3, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 8001228: 4b3b ldr r3, [pc, #236] @ (8001318 ) + 800122a: 689b ldr r3, [r3, #8] + 800122c: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 800122e: 68fb ldr r3, [r7, #12] + 8001230: 43db mvns r3, r3 + 8001232: 693a ldr r2, [r7, #16] + 8001234: 4013 ands r3, r2 + 8001236: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 8001238: 683b ldr r3, [r7, #0] + 800123a: 685b ldr r3, [r3, #4] + 800123c: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001240: 2b00 cmp r3, #0 + 8001242: d003 beq.n 800124c + { + SET_BIT(temp, iocurrent); + 8001244: 693a ldr r2, [r7, #16] + 8001246: 68fb ldr r3, [r7, #12] + 8001248: 4313 orrs r3, r2 + 800124a: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 800124c: 4a32 ldr r2, [pc, #200] @ (8001318 ) + 800124e: 693b ldr r3, [r7, #16] + 8001250: 6093 str r3, [r2, #8] + + temp = EXTI->FTSR; + 8001252: 4b31 ldr r3, [pc, #196] @ (8001318 ) + 8001254: 68db ldr r3, [r3, #12] + 8001256: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001258: 68fb ldr r3, [r7, #12] + 800125a: 43db mvns r3, r3 + 800125c: 693a ldr r2, [r7, #16] + 800125e: 4013 ands r3, r2 + 8001260: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001262: 683b ldr r3, [r7, #0] + 8001264: 685b ldr r3, [r3, #4] + 8001266: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 800126a: 2b00 cmp r3, #0 + 800126c: d003 beq.n 8001276 + { + SET_BIT(temp, iocurrent); + 800126e: 693a ldr r2, [r7, #16] + 8001270: 68fb ldr r3, [r7, #12] + 8001272: 4313 orrs r3, r2 + 8001274: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 8001276: 4a28 ldr r2, [pc, #160] @ (8001318 ) + 8001278: 693b ldr r3, [r7, #16] + 800127a: 60d3 str r3, [r2, #12] + + temp = EXTI->EMR; + 800127c: 4b26 ldr r3, [pc, #152] @ (8001318 ) + 800127e: 685b ldr r3, [r3, #4] + 8001280: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 8001282: 68fb ldr r3, [r7, #12] + 8001284: 43db mvns r3, r3 + 8001286: 693a ldr r2, [r7, #16] + 8001288: 4013 ands r3, r2 + 800128a: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 800128c: 683b ldr r3, [r7, #0] + 800128e: 685b ldr r3, [r3, #4] + 8001290: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001294: 2b00 cmp r3, #0 + 8001296: d003 beq.n 80012a0 + { + SET_BIT(temp, iocurrent); + 8001298: 693a ldr r2, [r7, #16] + 800129a: 68fb ldr r3, [r7, #12] + 800129c: 4313 orrs r3, r2 + 800129e: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 80012a0: 4a1d ldr r2, [pc, #116] @ (8001318 ) + 80012a2: 693b ldr r3, [r7, #16] + 80012a4: 6053 str r3, [r2, #4] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 80012a6: 4b1c ldr r3, [pc, #112] @ (8001318 ) + 80012a8: 681b ldr r3, [r3, #0] + 80012aa: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (uint32_t)iocurrent); + 80012ac: 68fb ldr r3, [r7, #12] + 80012ae: 43db mvns r3, r3 + 80012b0: 693a ldr r2, [r7, #16] + 80012b2: 4013 ands r3, r2 + 80012b4: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 80012b6: 683b ldr r3, [r7, #0] + 80012b8: 685b ldr r3, [r3, #4] + 80012ba: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80012be: 2b00 cmp r3, #0 + 80012c0: d003 beq.n 80012ca + { + SET_BIT(temp, iocurrent); + 80012c2: 693a ldr r2, [r7, #16] + 80012c4: 68fb ldr r3, [r7, #12] + 80012c6: 4313 orrs r3, r2 + 80012c8: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 80012ca: 4a13 ldr r2, [pc, #76] @ (8001318 ) + 80012cc: 693b ldr r3, [r7, #16] + 80012ce: 6013 str r3, [r2, #0] + } + } + + position++; + 80012d0: 697b ldr r3, [r7, #20] + 80012d2: 3301 adds r3, #1 + 80012d4: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 80012d6: 683b ldr r3, [r7, #0] + 80012d8: 681a ldr r2, [r3, #0] + 80012da: 697b ldr r3, [r7, #20] + 80012dc: fa22 f303 lsr.w r3, r2, r3 + 80012e0: 2b00 cmp r3, #0 + 80012e2: f47f ae97 bne.w 8001014 + } +} + 80012e6: bf00 nop + 80012e8: bf00 nop + 80012ea: 371c adds r7, #28 + 80012ec: 46bd mov sp, r7 + 80012ee: bc80 pop {r7} + 80012f0: 4770 bx lr + 80012f2: bf00 nop + 80012f4: 40023800 .word 0x40023800 + 80012f8: 40010000 .word 0x40010000 + 80012fc: 40020000 .word 0x40020000 + 8001300: 40020400 .word 0x40020400 + 8001304: 40020800 .word 0x40020800 + 8001308: 40020c00 .word 0x40020c00 + 800130c: 40021000 .word 0x40021000 + 8001310: 40021400 .word 0x40021400 + 8001314: 40021800 .word 0x40021800 + 8001318: 40010400 .word 0x40010400 + +0800131c : + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + 800131c: b480 push {r7} + 800131e: b083 sub sp, #12 + 8001320: af00 add r7, sp, #0 + 8001322: 6078 str r0, [r7, #4] + 8001324: 460b mov r3, r1 + 8001326: 807b strh r3, [r7, #2] + 8001328: 4613 mov r3, r2 + 800132a: 707b strb r3, [r7, #1] + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 800132c: 787b ldrb r3, [r7, #1] + 800132e: 2b00 cmp r3, #0 + 8001330: d003 beq.n 800133a + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 8001332: 887a ldrh r2, [r7, #2] + 8001334: 687b ldr r3, [r7, #4] + 8001336: 619a str r2, [r3, #24] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + 8001338: e003 b.n 8001342 + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + 800133a: 887b ldrh r3, [r7, #2] + 800133c: 041a lsls r2, r3, #16 + 800133e: 687b ldr r3, [r7, #4] + 8001340: 619a str r2, [r3, #24] +} + 8001342: bf00 nop + 8001344: 370c adds r7, #12 + 8001346: 46bd mov sp, r7 + 8001348: bc80 pop {r7} + 800134a: 4770 bx lr + +0800134c : + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 800134c: b580 push {r7, lr} + 800134e: b082 sub sp, #8 + 8001350: af00 add r7, sp, #0 + 8001352: 4603 mov r3, r0 + 8001354: 80fb strh r3, [r7, #6] + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 8001356: 4b08 ldr r3, [pc, #32] @ (8001378 ) + 8001358: 695a ldr r2, [r3, #20] + 800135a: 88fb ldrh r3, [r7, #6] + 800135c: 4013 ands r3, r2 + 800135e: 2b00 cmp r3, #0 + 8001360: d006 beq.n 8001370 + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 8001362: 4a05 ldr r2, [pc, #20] @ (8001378 ) + 8001364: 88fb ldrh r3, [r7, #6] + 8001366: 6153 str r3, [r2, #20] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 8001368: 88fb ldrh r3, [r7, #6] + 800136a: 4618 mov r0, r3 + 800136c: f000 f806 bl 800137c + } +} + 8001370: bf00 nop + 8001372: 3708 adds r7, #8 + 8001374: 46bd mov sp, r7 + 8001376: bd80 pop {r7, pc} + 8001378: 40010400 .word 0x40010400 + +0800137c : + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 800137c: b480 push {r7} + 800137e: b083 sub sp, #12 + 8001380: af00 add r7, sp, #0 + 8001382: 4603 mov r3, r0 + 8001384: 80fb strh r3, [r7, #6] + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + 8001386: bf00 nop + 8001388: 370c adds r7, #12 + 800138a: 46bd mov sp, r7 + 800138c: bc80 pop {r7} + 800138e: 4770 bx lr + +08001390 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8001390: b580 push {r7, lr} + 8001392: b088 sub sp, #32 + 8001394: af00 add r7, sp, #0 + 8001396: 6078 str r0, [r7, #4] + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + 8001398: 687b ldr r3, [r7, #4] + 800139a: 2b00 cmp r3, #0 + 800139c: d101 bne.n 80013a2 + { + return HAL_ERROR; + 800139e: 2301 movs r3, #1 + 80013a0: e31d b.n 80019de + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 80013a2: 4b94 ldr r3, [pc, #592] @ (80015f4 ) + 80013a4: 689b ldr r3, [r3, #8] + 80013a6: f003 030c and.w r3, r3, #12 + 80013aa: 61bb str r3, [r7, #24] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 80013ac: 4b91 ldr r3, [pc, #580] @ (80015f4 ) + 80013ae: 689b ldr r3, [r3, #8] + 80013b0: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80013b4: 617b str r3, [r7, #20] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 80013b6: 687b ldr r3, [r7, #4] + 80013b8: 681b ldr r3, [r3, #0] + 80013ba: f003 0301 and.w r3, r3, #1 + 80013be: 2b00 cmp r3, #0 + 80013c0: d07b beq.n 80014ba + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 80013c2: 69bb ldr r3, [r7, #24] + 80013c4: 2b08 cmp r3, #8 + 80013c6: d006 beq.n 80013d6 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 80013c8: 69bb ldr r3, [r7, #24] + 80013ca: 2b0c cmp r3, #12 + 80013cc: d10f bne.n 80013ee + 80013ce: 697b ldr r3, [r7, #20] + 80013d0: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80013d4: d10b bne.n 80013ee + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80013d6: 4b87 ldr r3, [pc, #540] @ (80015f4 ) + 80013d8: 681b ldr r3, [r3, #0] + 80013da: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80013de: 2b00 cmp r3, #0 + 80013e0: d06a beq.n 80014b8 + 80013e2: 687b ldr r3, [r7, #4] + 80013e4: 685b ldr r3, [r3, #4] + 80013e6: 2b00 cmp r3, #0 + 80013e8: d166 bne.n 80014b8 + { + return HAL_ERROR; + 80013ea: 2301 movs r3, #1 + 80013ec: e2f7 b.n 80019de + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80013ee: 687b ldr r3, [r7, #4] + 80013f0: 685b ldr r3, [r3, #4] + 80013f2: 2b01 cmp r3, #1 + 80013f4: d106 bne.n 8001404 + 80013f6: 4b7f ldr r3, [pc, #508] @ (80015f4 ) + 80013f8: 681b ldr r3, [r3, #0] + 80013fa: 4a7e ldr r2, [pc, #504] @ (80015f4 ) + 80013fc: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001400: 6013 str r3, [r2, #0] + 8001402: e02d b.n 8001460 + 8001404: 687b ldr r3, [r7, #4] + 8001406: 685b ldr r3, [r3, #4] + 8001408: 2b00 cmp r3, #0 + 800140a: d10c bne.n 8001426 + 800140c: 4b79 ldr r3, [pc, #484] @ (80015f4 ) + 800140e: 681b ldr r3, [r3, #0] + 8001410: 4a78 ldr r2, [pc, #480] @ (80015f4 ) + 8001412: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001416: 6013 str r3, [r2, #0] + 8001418: 4b76 ldr r3, [pc, #472] @ (80015f4 ) + 800141a: 681b ldr r3, [r3, #0] + 800141c: 4a75 ldr r2, [pc, #468] @ (80015f4 ) + 800141e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8001422: 6013 str r3, [r2, #0] + 8001424: e01c b.n 8001460 + 8001426: 687b ldr r3, [r7, #4] + 8001428: 685b ldr r3, [r3, #4] + 800142a: 2b05 cmp r3, #5 + 800142c: d10c bne.n 8001448 + 800142e: 4b71 ldr r3, [pc, #452] @ (80015f4 ) + 8001430: 681b ldr r3, [r3, #0] + 8001432: 4a70 ldr r2, [pc, #448] @ (80015f4 ) + 8001434: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8001438: 6013 str r3, [r2, #0] + 800143a: 4b6e ldr r3, [pc, #440] @ (80015f4 ) + 800143c: 681b ldr r3, [r3, #0] + 800143e: 4a6d ldr r2, [pc, #436] @ (80015f4 ) + 8001440: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8001444: 6013 str r3, [r2, #0] + 8001446: e00b b.n 8001460 + 8001448: 4b6a ldr r3, [pc, #424] @ (80015f4 ) + 800144a: 681b ldr r3, [r3, #0] + 800144c: 4a69 ldr r2, [pc, #420] @ (80015f4 ) + 800144e: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8001452: 6013 str r3, [r2, #0] + 8001454: 4b67 ldr r3, [pc, #412] @ (80015f4 ) + 8001456: 681b ldr r3, [r3, #0] + 8001458: 4a66 ldr r2, [pc, #408] @ (80015f4 ) + 800145a: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800145e: 6013 str r3, [r2, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8001460: 687b ldr r3, [r7, #4] + 8001462: 685b ldr r3, [r3, #4] + 8001464: 2b00 cmp r3, #0 + 8001466: d013 beq.n 8001490 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001468: f7ff fc8e bl 8000d88 + 800146c: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 800146e: e008 b.n 8001482 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001470: f7ff fc8a bl 8000d88 + 8001474: 4602 mov r2, r0 + 8001476: 693b ldr r3, [r7, #16] + 8001478: 1ad3 subs r3, r2, r3 + 800147a: 2b64 cmp r3, #100 @ 0x64 + 800147c: d901 bls.n 8001482 + { + return HAL_TIMEOUT; + 800147e: 2303 movs r3, #3 + 8001480: e2ad b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001482: 4b5c ldr r3, [pc, #368] @ (80015f4 ) + 8001484: 681b ldr r3, [r3, #0] + 8001486: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800148a: 2b00 cmp r3, #0 + 800148c: d0f0 beq.n 8001470 + 800148e: e014 b.n 80014ba + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001490: f7ff fc7a bl 8000d88 + 8001494: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8001496: e008 b.n 80014aa + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8001498: f7ff fc76 bl 8000d88 + 800149c: 4602 mov r2, r0 + 800149e: 693b ldr r3, [r7, #16] + 80014a0: 1ad3 subs r3, r2, r3 + 80014a2: 2b64 cmp r3, #100 @ 0x64 + 80014a4: d901 bls.n 80014aa + { + return HAL_TIMEOUT; + 80014a6: 2303 movs r3, #3 + 80014a8: e299 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 80014aa: 4b52 ldr r3, [pc, #328] @ (80015f4 ) + 80014ac: 681b ldr r3, [r3, #0] + 80014ae: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80014b2: 2b00 cmp r3, #0 + 80014b4: d1f0 bne.n 8001498 + 80014b6: e000 b.n 80014ba + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 80014b8: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 80014ba: 687b ldr r3, [r7, #4] + 80014bc: 681b ldr r3, [r3, #0] + 80014be: f003 0302 and.w r3, r3, #2 + 80014c2: 2b00 cmp r3, #0 + 80014c4: d05a beq.n 800157c + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 80014c6: 69bb ldr r3, [r7, #24] + 80014c8: 2b04 cmp r3, #4 + 80014ca: d005 beq.n 80014d8 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 80014cc: 69bb ldr r3, [r7, #24] + 80014ce: 2b0c cmp r3, #12 + 80014d0: d119 bne.n 8001506 + 80014d2: 697b ldr r3, [r7, #20] + 80014d4: 2b00 cmp r3, #0 + 80014d6: d116 bne.n 8001506 + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80014d8: 4b46 ldr r3, [pc, #280] @ (80015f4 ) + 80014da: 681b ldr r3, [r3, #0] + 80014dc: f003 0302 and.w r3, r3, #2 + 80014e0: 2b00 cmp r3, #0 + 80014e2: d005 beq.n 80014f0 + 80014e4: 687b ldr r3, [r7, #4] + 80014e6: 68db ldr r3, [r3, #12] + 80014e8: 2b01 cmp r3, #1 + 80014ea: d001 beq.n 80014f0 + { + return HAL_ERROR; + 80014ec: 2301 movs r3, #1 + 80014ee: e276 b.n 80019de + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80014f0: 4b40 ldr r3, [pc, #256] @ (80015f4 ) + 80014f2: 685b ldr r3, [r3, #4] + 80014f4: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80014f8: 687b ldr r3, [r7, #4] + 80014fa: 691b ldr r3, [r3, #16] + 80014fc: 021b lsls r3, r3, #8 + 80014fe: 493d ldr r1, [pc, #244] @ (80015f4 ) + 8001500: 4313 orrs r3, r2 + 8001502: 604b str r3, [r1, #4] + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8001504: e03a b.n 800157c + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8001506: 687b ldr r3, [r7, #4] + 8001508: 68db ldr r3, [r3, #12] + 800150a: 2b00 cmp r3, #0 + 800150c: d020 beq.n 8001550 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 800150e: 4b3a ldr r3, [pc, #232] @ (80015f8 ) + 8001510: 2201 movs r2, #1 + 8001512: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001514: f7ff fc38 bl 8000d88 + 8001518: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800151a: e008 b.n 800152e + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800151c: f7ff fc34 bl 8000d88 + 8001520: 4602 mov r2, r0 + 8001522: 693b ldr r3, [r7, #16] + 8001524: 1ad3 subs r3, r2, r3 + 8001526: 2b02 cmp r3, #2 + 8001528: d901 bls.n 800152e + { + return HAL_TIMEOUT; + 800152a: 2303 movs r3, #3 + 800152c: e257 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800152e: 4b31 ldr r3, [pc, #196] @ (80015f4 ) + 8001530: 681b ldr r3, [r3, #0] + 8001532: f003 0302 and.w r3, r3, #2 + 8001536: 2b00 cmp r3, #0 + 8001538: d0f0 beq.n 800151c + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800153a: 4b2e ldr r3, [pc, #184] @ (80015f4 ) + 800153c: 685b ldr r3, [r3, #4] + 800153e: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 8001542: 687b ldr r3, [r7, #4] + 8001544: 691b ldr r3, [r3, #16] + 8001546: 021b lsls r3, r3, #8 + 8001548: 492a ldr r1, [pc, #168] @ (80015f4 ) + 800154a: 4313 orrs r3, r2 + 800154c: 604b str r3, [r1, #4] + 800154e: e015 b.n 800157c + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8001550: 4b29 ldr r3, [pc, #164] @ (80015f8 ) + 8001552: 2200 movs r2, #0 + 8001554: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001556: f7ff fc17 bl 8000d88 + 800155a: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 800155c: e008 b.n 8001570 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800155e: f7ff fc13 bl 8000d88 + 8001562: 4602 mov r2, r0 + 8001564: 693b ldr r3, [r7, #16] + 8001566: 1ad3 subs r3, r2, r3 + 8001568: 2b02 cmp r3, #2 + 800156a: d901 bls.n 8001570 + { + return HAL_TIMEOUT; + 800156c: 2303 movs r3, #3 + 800156e: e236 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 8001570: 4b20 ldr r3, [pc, #128] @ (80015f4 ) + 8001572: 681b ldr r3, [r3, #0] + 8001574: f003 0302 and.w r3, r3, #2 + 8001578: 2b00 cmp r3, #0 + 800157a: d1f0 bne.n 800155e + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 800157c: 687b ldr r3, [r7, #4] + 800157e: 681b ldr r3, [r3, #0] + 8001580: f003 0310 and.w r3, r3, #16 + 8001584: 2b00 cmp r3, #0 + 8001586: f000 80b8 beq.w 80016fa + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 800158a: 69bb ldr r3, [r7, #24] + 800158c: 2b00 cmp r3, #0 + 800158e: d170 bne.n 8001672 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 8001590: 4b18 ldr r3, [pc, #96] @ (80015f4 ) + 8001592: 681b ldr r3, [r3, #0] + 8001594: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001598: 2b00 cmp r3, #0 + 800159a: d005 beq.n 80015a8 + 800159c: 687b ldr r3, [r7, #4] + 800159e: 699b ldr r3, [r3, #24] + 80015a0: 2b00 cmp r3, #0 + 80015a2: d101 bne.n 80015a8 + { + return HAL_ERROR; + 80015a4: 2301 movs r3, #1 + 80015a6: e21a b.n 80019de + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 80015a8: 687b ldr r3, [r7, #4] + 80015aa: 6a1a ldr r2, [r3, #32] + 80015ac: 4b11 ldr r3, [pc, #68] @ (80015f4 ) + 80015ae: 685b ldr r3, [r3, #4] + 80015b0: f403 4360 and.w r3, r3, #57344 @ 0xe000 + 80015b4: 429a cmp r2, r3 + 80015b6: d921 bls.n 80015fc + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 80015b8: 687b ldr r3, [r7, #4] + 80015ba: 6a1b ldr r3, [r3, #32] + 80015bc: 4618 mov r0, r3 + 80015be: f000 fc09 bl 8001dd4 + 80015c2: 4603 mov r3, r0 + 80015c4: 2b00 cmp r3, #0 + 80015c6: d001 beq.n 80015cc + { + return HAL_ERROR; + 80015c8: 2301 movs r3, #1 + 80015ca: e208 b.n 80019de + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80015cc: 4b09 ldr r3, [pc, #36] @ (80015f4 ) + 80015ce: 685b ldr r3, [r3, #4] + 80015d0: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80015d4: 687b ldr r3, [r7, #4] + 80015d6: 6a1b ldr r3, [r3, #32] + 80015d8: 4906 ldr r1, [pc, #24] @ (80015f4 ) + 80015da: 4313 orrs r3, r2 + 80015dc: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80015de: 4b05 ldr r3, [pc, #20] @ (80015f4 ) + 80015e0: 685b ldr r3, [r3, #4] + 80015e2: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80015e6: 687b ldr r3, [r7, #4] + 80015e8: 69db ldr r3, [r3, #28] + 80015ea: 061b lsls r3, r3, #24 + 80015ec: 4901 ldr r1, [pc, #4] @ (80015f4 ) + 80015ee: 4313 orrs r3, r2 + 80015f0: 604b str r3, [r1, #4] + 80015f2: e020 b.n 8001636 + 80015f4: 40023800 .word 0x40023800 + 80015f8: 42470000 .word 0x42470000 + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80015fc: 4b99 ldr r3, [pc, #612] @ (8001864 ) + 80015fe: 685b ldr r3, [r3, #4] + 8001600: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8001604: 687b ldr r3, [r7, #4] + 8001606: 6a1b ldr r3, [r3, #32] + 8001608: 4996 ldr r1, [pc, #600] @ (8001864 ) + 800160a: 4313 orrs r3, r2 + 800160c: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800160e: 4b95 ldr r3, [pc, #596] @ (8001864 ) + 8001610: 685b ldr r3, [r3, #4] + 8001612: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 8001616: 687b ldr r3, [r7, #4] + 8001618: 69db ldr r3, [r3, #28] + 800161a: 061b lsls r3, r3, #24 + 800161c: 4991 ldr r1, [pc, #580] @ (8001864 ) + 800161e: 4313 orrs r3, r2 + 8001620: 604b str r3, [r1, #4] + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 8001622: 687b ldr r3, [r7, #4] + 8001624: 6a1b ldr r3, [r3, #32] + 8001626: 4618 mov r0, r3 + 8001628: f000 fbd4 bl 8001dd4 + 800162c: 4603 mov r3, r0 + 800162e: 2b00 cmp r3, #0 + 8001630: d001 beq.n 8001636 + { + return HAL_ERROR; + 8001632: 2301 movs r3, #1 + 8001634: e1d3 b.n 80019de + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001636: 687b ldr r3, [r7, #4] + 8001638: 6a1b ldr r3, [r3, #32] + 800163a: 0b5b lsrs r3, r3, #13 + 800163c: 3301 adds r3, #1 + 800163e: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001642: fa02 f303 lsl.w r3, r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8001646: 4a87 ldr r2, [pc, #540] @ (8001864 ) + 8001648: 6892 ldr r2, [r2, #8] + 800164a: 0912 lsrs r2, r2, #4 + 800164c: f002 020f and.w r2, r2, #15 + 8001650: 4985 ldr r1, [pc, #532] @ (8001868 ) + 8001652: 5c8a ldrb r2, [r1, r2] + 8001654: 40d3 lsrs r3, r2 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8001656: 4a85 ldr r2, [pc, #532] @ (800186c ) + 8001658: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 800165a: 4b85 ldr r3, [pc, #532] @ (8001870 ) + 800165c: 681b ldr r3, [r3, #0] + 800165e: 4618 mov r0, r3 + 8001660: f7ff fb46 bl 8000cf0 + 8001664: 4603 mov r3, r0 + 8001666: 73fb strb r3, [r7, #15] + if(status != HAL_OK) + 8001668: 7bfb ldrb r3, [r7, #15] + 800166a: 2b00 cmp r3, #0 + 800166c: d045 beq.n 80016fa + { + return status; + 800166e: 7bfb ldrb r3, [r7, #15] + 8001670: e1b5 b.n 80019de + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8001672: 687b ldr r3, [r7, #4] + 8001674: 699b ldr r3, [r3, #24] + 8001676: 2b00 cmp r3, #0 + 8001678: d029 beq.n 80016ce + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 800167a: 4b7e ldr r3, [pc, #504] @ (8001874 ) + 800167c: 2201 movs r2, #1 + 800167e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001680: f7ff fb82 bl 8000d88 + 8001684: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001686: e008 b.n 800169a + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8001688: f7ff fb7e bl 8000d88 + 800168c: 4602 mov r2, r0 + 800168e: 693b ldr r3, [r7, #16] + 8001690: 1ad3 subs r3, r2, r3 + 8001692: 2b02 cmp r3, #2 + 8001694: d901 bls.n 800169a + { + return HAL_TIMEOUT; + 8001696: 2303 movs r3, #3 + 8001698: e1a1 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 800169a: 4b72 ldr r3, [pc, #456] @ (8001864 ) + 800169c: 681b ldr r3, [r3, #0] + 800169e: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016a2: 2b00 cmp r3, #0 + 80016a4: d0f0 beq.n 8001688 + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 80016a6: 4b6f ldr r3, [pc, #444] @ (8001864 ) + 80016a8: 685b ldr r3, [r3, #4] + 80016aa: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80016ae: 687b ldr r3, [r7, #4] + 80016b0: 6a1b ldr r3, [r3, #32] + 80016b2: 496c ldr r1, [pc, #432] @ (8001864 ) + 80016b4: 4313 orrs r3, r2 + 80016b6: 604b str r3, [r1, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80016b8: 4b6a ldr r3, [pc, #424] @ (8001864 ) + 80016ba: 685b ldr r3, [r3, #4] + 80016bc: f023 427f bic.w r2, r3, #4278190080 @ 0xff000000 + 80016c0: 687b ldr r3, [r7, #4] + 80016c2: 69db ldr r3, [r3, #28] + 80016c4: 061b lsls r3, r3, #24 + 80016c6: 4967 ldr r1, [pc, #412] @ (8001864 ) + 80016c8: 4313 orrs r3, r2 + 80016ca: 604b str r3, [r1, #4] + 80016cc: e015 b.n 80016fa + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 80016ce: 4b69 ldr r3, [pc, #420] @ (8001874 ) + 80016d0: 2200 movs r2, #0 + 80016d2: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80016d4: f7ff fb58 bl 8000d88 + 80016d8: 6138 str r0, [r7, #16] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80016da: e008 b.n 80016ee + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80016dc: f7ff fb54 bl 8000d88 + 80016e0: 4602 mov r2, r0 + 80016e2: 693b ldr r3, [r7, #16] + 80016e4: 1ad3 subs r3, r2, r3 + 80016e6: 2b02 cmp r3, #2 + 80016e8: d901 bls.n 80016ee + { + return HAL_TIMEOUT; + 80016ea: 2303 movs r3, #3 + 80016ec: e177 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80016ee: 4b5d ldr r3, [pc, #372] @ (8001864 ) + 80016f0: 681b ldr r3, [r3, #0] + 80016f2: f403 7300 and.w r3, r3, #512 @ 0x200 + 80016f6: 2b00 cmp r3, #0 + 80016f8: d1f0 bne.n 80016dc + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 80016fa: 687b ldr r3, [r7, #4] + 80016fc: 681b ldr r3, [r3, #0] + 80016fe: f003 0308 and.w r3, r3, #8 + 8001702: 2b00 cmp r3, #0 + 8001704: d030 beq.n 8001768 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8001706: 687b ldr r3, [r7, #4] + 8001708: 695b ldr r3, [r3, #20] + 800170a: 2b00 cmp r3, #0 + 800170c: d016 beq.n 800173c + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 800170e: 4b5a ldr r3, [pc, #360] @ (8001878 ) + 8001710: 2201 movs r2, #1 + 8001712: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001714: f7ff fb38 bl 8000d88 + 8001718: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800171a: e008 b.n 800172e + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800171c: f7ff fb34 bl 8000d88 + 8001720: 4602 mov r2, r0 + 8001722: 693b ldr r3, [r7, #16] + 8001724: 1ad3 subs r3, r2, r3 + 8001726: 2b02 cmp r3, #2 + 8001728: d901 bls.n 800172e + { + return HAL_TIMEOUT; + 800172a: 2303 movs r3, #3 + 800172c: e157 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800172e: 4b4d ldr r3, [pc, #308] @ (8001864 ) + 8001730: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001732: f003 0302 and.w r3, r3, #2 + 8001736: 2b00 cmp r3, #0 + 8001738: d0f0 beq.n 800171c + 800173a: e015 b.n 8001768 + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 800173c: 4b4e ldr r3, [pc, #312] @ (8001878 ) + 800173e: 2200 movs r2, #0 + 8001740: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001742: f7ff fb21 bl 8000d88 + 8001746: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8001748: e008 b.n 800175c + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800174a: f7ff fb1d bl 8000d88 + 800174e: 4602 mov r2, r0 + 8001750: 693b ldr r3, [r7, #16] + 8001752: 1ad3 subs r3, r2, r3 + 8001754: 2b02 cmp r3, #2 + 8001756: d901 bls.n 800175c + { + return HAL_TIMEOUT; + 8001758: 2303 movs r3, #3 + 800175a: e140 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 800175c: 4b41 ldr r3, [pc, #260] @ (8001864 ) + 800175e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001760: f003 0302 and.w r3, r3, #2 + 8001764: 2b00 cmp r3, #0 + 8001766: d1f0 bne.n 800174a + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 8001768: 687b ldr r3, [r7, #4] + 800176a: 681b ldr r3, [r3, #0] + 800176c: f003 0304 and.w r3, r3, #4 + 8001770: 2b00 cmp r3, #0 + 8001772: f000 80b5 beq.w 80018e0 + { + FlagStatus pwrclkchanged = RESET; + 8001776: 2300 movs r3, #0 + 8001778: 77fb strb r3, [r7, #31] + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + 800177a: 4b3a ldr r3, [pc, #232] @ (8001864 ) + 800177c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800177e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001782: 2b00 cmp r3, #0 + 8001784: d10d bne.n 80017a2 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001786: 4b37 ldr r3, [pc, #220] @ (8001864 ) + 8001788: 6a5b ldr r3, [r3, #36] @ 0x24 + 800178a: 4a36 ldr r2, [pc, #216] @ (8001864 ) + 800178c: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001790: 6253 str r3, [r2, #36] @ 0x24 + 8001792: 4b34 ldr r3, [pc, #208] @ (8001864 ) + 8001794: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001796: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800179a: 60bb str r3, [r7, #8] + 800179c: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 800179e: 2301 movs r3, #1 + 80017a0: 77fb strb r3, [r7, #31] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80017a2: 4b36 ldr r3, [pc, #216] @ (800187c ) + 80017a4: 681b ldr r3, [r3, #0] + 80017a6: f403 7380 and.w r3, r3, #256 @ 0x100 + 80017aa: 2b00 cmp r3, #0 + 80017ac: d118 bne.n 80017e0 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80017ae: 4b33 ldr r3, [pc, #204] @ (800187c ) + 80017b0: 681b ldr r3, [r3, #0] + 80017b2: 4a32 ldr r2, [pc, #200] @ (800187c ) + 80017b4: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80017b8: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80017ba: f7ff fae5 bl 8000d88 + 80017be: 6138 str r0, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80017c0: e008 b.n 80017d4 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80017c2: f7ff fae1 bl 8000d88 + 80017c6: 4602 mov r2, r0 + 80017c8: 693b ldr r3, [r7, #16] + 80017ca: 1ad3 subs r3, r2, r3 + 80017cc: 2b64 cmp r3, #100 @ 0x64 + 80017ce: d901 bls.n 80017d4 + { + return HAL_TIMEOUT; + 80017d0: 2303 movs r3, #3 + 80017d2: e104 b.n 80019de + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80017d4: 4b29 ldr r3, [pc, #164] @ (800187c ) + 80017d6: 681b ldr r3, [r3, #0] + 80017d8: f403 7380 and.w r3, r3, #256 @ 0x100 + 80017dc: 2b00 cmp r3, #0 + 80017de: d0f0 beq.n 80017c2 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 80017e0: 687b ldr r3, [r7, #4] + 80017e2: 689b ldr r3, [r3, #8] + 80017e4: 2b01 cmp r3, #1 + 80017e6: d106 bne.n 80017f6 + 80017e8: 4b1e ldr r3, [pc, #120] @ (8001864 ) + 80017ea: 6b5b ldr r3, [r3, #52] @ 0x34 + 80017ec: 4a1d ldr r2, [pc, #116] @ (8001864 ) + 80017ee: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80017f2: 6353 str r3, [r2, #52] @ 0x34 + 80017f4: e02d b.n 8001852 + 80017f6: 687b ldr r3, [r7, #4] + 80017f8: 689b ldr r3, [r3, #8] + 80017fa: 2b00 cmp r3, #0 + 80017fc: d10c bne.n 8001818 + 80017fe: 4b19 ldr r3, [pc, #100] @ (8001864 ) + 8001800: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001802: 4a18 ldr r2, [pc, #96] @ (8001864 ) + 8001804: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001808: 6353 str r3, [r2, #52] @ 0x34 + 800180a: 4b16 ldr r3, [pc, #88] @ (8001864 ) + 800180c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800180e: 4a15 ldr r2, [pc, #84] @ (8001864 ) + 8001810: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001814: 6353 str r3, [r2, #52] @ 0x34 + 8001816: e01c b.n 8001852 + 8001818: 687b ldr r3, [r7, #4] + 800181a: 689b ldr r3, [r3, #8] + 800181c: 2b05 cmp r3, #5 + 800181e: d10c bne.n 800183a + 8001820: 4b10 ldr r3, [pc, #64] @ (8001864 ) + 8001822: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001824: 4a0f ldr r2, [pc, #60] @ (8001864 ) + 8001826: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 800182a: 6353 str r3, [r2, #52] @ 0x34 + 800182c: 4b0d ldr r3, [pc, #52] @ (8001864 ) + 800182e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001830: 4a0c ldr r2, [pc, #48] @ (8001864 ) + 8001832: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8001836: 6353 str r3, [r2, #52] @ 0x34 + 8001838: e00b b.n 8001852 + 800183a: 4b0a ldr r3, [pc, #40] @ (8001864 ) + 800183c: 6b5b ldr r3, [r3, #52] @ 0x34 + 800183e: 4a09 ldr r2, [pc, #36] @ (8001864 ) + 8001840: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8001844: 6353 str r3, [r2, #52] @ 0x34 + 8001846: 4b07 ldr r3, [pc, #28] @ (8001864 ) + 8001848: 6b5b ldr r3, [r3, #52] @ 0x34 + 800184a: 4a06 ldr r2, [pc, #24] @ (8001864 ) + 800184c: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8001850: 6353 str r3, [r2, #52] @ 0x34 + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8001852: 687b ldr r3, [r7, #4] + 8001854: 689b ldr r3, [r3, #8] + 8001856: 2b00 cmp r3, #0 + 8001858: d024 beq.n 80018a4 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800185a: f7ff fa95 bl 8000d88 + 800185e: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001860: e019 b.n 8001896 + 8001862: bf00 nop + 8001864: 40023800 .word 0x40023800 + 8001868: 08002ecc .word 0x08002ecc + 800186c: 20000000 .word 0x20000000 + 8001870: 20000004 .word 0x20000004 + 8001874: 42470020 .word 0x42470020 + 8001878: 42470680 .word 0x42470680 + 800187c: 40007000 .word 0x40007000 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8001880: f7ff fa82 bl 8000d88 + 8001884: 4602 mov r2, r0 + 8001886: 693b ldr r3, [r7, #16] + 8001888: 1ad3 subs r3, r2, r3 + 800188a: f241 3288 movw r2, #5000 @ 0x1388 + 800188e: 4293 cmp r3, r2 + 8001890: d901 bls.n 8001896 + { + return HAL_TIMEOUT; + 8001892: 2303 movs r3, #3 + 8001894: e0a3 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8001896: 4b54 ldr r3, [pc, #336] @ (80019e8 ) + 8001898: 6b5b ldr r3, [r3, #52] @ 0x34 + 800189a: f403 7300 and.w r3, r3, #512 @ 0x200 + 800189e: 2b00 cmp r3, #0 + 80018a0: d0ee beq.n 8001880 + 80018a2: e014 b.n 80018ce + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80018a4: f7ff fa70 bl 8000d88 + 80018a8: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80018aa: e00a b.n 80018c2 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80018ac: f7ff fa6c bl 8000d88 + 80018b0: 4602 mov r2, r0 + 80018b2: 693b ldr r3, [r7, #16] + 80018b4: 1ad3 subs r3, r2, r3 + 80018b6: f241 3288 movw r2, #5000 @ 0x1388 + 80018ba: 4293 cmp r3, r2 + 80018bc: d901 bls.n 80018c2 + { + return HAL_TIMEOUT; + 80018be: 2303 movs r3, #3 + 80018c0: e08d b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80018c2: 4b49 ldr r3, [pc, #292] @ (80019e8 ) + 80018c4: 6b5b ldr r3, [r3, #52] @ 0x34 + 80018c6: f403 7300 and.w r3, r3, #512 @ 0x200 + 80018ca: 2b00 cmp r3, #0 + 80018cc: d1ee bne.n 80018ac + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 80018ce: 7ffb ldrb r3, [r7, #31] + 80018d0: 2b01 cmp r3, #1 + 80018d2: d105 bne.n 80018e0 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80018d4: 4b44 ldr r3, [pc, #272] @ (80019e8 ) + 80018d6: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018d8: 4a43 ldr r2, [pc, #268] @ (80019e8 ) + 80018da: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80018de: 6253 str r3, [r2, #36] @ 0x24 + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80018e0: 687b ldr r3, [r7, #4] + 80018e2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018e4: 2b00 cmp r3, #0 + 80018e6: d079 beq.n 80019dc + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80018e8: 69bb ldr r3, [r7, #24] + 80018ea: 2b0c cmp r3, #12 + 80018ec: d056 beq.n 800199c + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 80018ee: 687b ldr r3, [r7, #4] + 80018f0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80018f2: 2b02 cmp r3, #2 + 80018f4: d13b bne.n 800196e + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80018f6: 4b3d ldr r3, [pc, #244] @ (80019ec ) + 80018f8: 2200 movs r2, #0 + 80018fa: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80018fc: f7ff fa44 bl 8000d88 + 8001900: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001902: e008 b.n 8001916 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8001904: f7ff fa40 bl 8000d88 + 8001908: 4602 mov r2, r0 + 800190a: 693b ldr r3, [r7, #16] + 800190c: 1ad3 subs r3, r2, r3 + 800190e: 2b02 cmp r3, #2 + 8001910: d901 bls.n 8001916 + { + return HAL_TIMEOUT; + 8001912: 2303 movs r3, #3 + 8001914: e063 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8001916: 4b34 ldr r3, [pc, #208] @ (80019e8 ) + 8001918: 681b ldr r3, [r3, #0] + 800191a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800191e: 2b00 cmp r3, #0 + 8001920: d1f0 bne.n 8001904 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8001922: 4b31 ldr r3, [pc, #196] @ (80019e8 ) + 8001924: 689b ldr r3, [r3, #8] + 8001926: f423 027d bic.w r2, r3, #16580608 @ 0xfd0000 + 800192a: 687b ldr r3, [r7, #4] + 800192c: 6a99 ldr r1, [r3, #40] @ 0x28 + 800192e: 687b ldr r3, [r7, #4] + 8001930: 6adb ldr r3, [r3, #44] @ 0x2c + 8001932: 4319 orrs r1, r3 + 8001934: 687b ldr r3, [r7, #4] + 8001936: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001938: 430b orrs r3, r1 + 800193a: 492b ldr r1, [pc, #172] @ (80019e8 ) + 800193c: 4313 orrs r3, r2 + 800193e: 608b str r3, [r1, #8] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8001940: 4b2a ldr r3, [pc, #168] @ (80019ec ) + 8001942: 2201 movs r2, #1 + 8001944: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001946: f7ff fa1f bl 8000d88 + 800194a: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800194c: e008 b.n 8001960 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800194e: f7ff fa1b bl 8000d88 + 8001952: 4602 mov r2, r0 + 8001954: 693b ldr r3, [r7, #16] + 8001956: 1ad3 subs r3, r2, r3 + 8001958: 2b02 cmp r3, #2 + 800195a: d901 bls.n 8001960 + { + return HAL_TIMEOUT; + 800195c: 2303 movs r3, #3 + 800195e: e03e b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001960: 4b21 ldr r3, [pc, #132] @ (80019e8 ) + 8001962: 681b ldr r3, [r3, #0] + 8001964: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001968: 2b00 cmp r3, #0 + 800196a: d0f0 beq.n 800194e + 800196c: e036 b.n 80019dc + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 800196e: 4b1f ldr r3, [pc, #124] @ (80019ec ) + 8001970: 2200 movs r2, #0 + 8001972: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001974: f7ff fa08 bl 8000d88 + 8001978: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800197a: e008 b.n 800198e + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800197c: f7ff fa04 bl 8000d88 + 8001980: 4602 mov r2, r0 + 8001982: 693b ldr r3, [r7, #16] + 8001984: 1ad3 subs r3, r2, r3 + 8001986: 2b02 cmp r3, #2 + 8001988: d901 bls.n 800198e + { + return HAL_TIMEOUT; + 800198a: 2303 movs r3, #3 + 800198c: e027 b.n 80019de + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 800198e: 4b16 ldr r3, [pc, #88] @ (80019e8 ) + 8001990: 681b ldr r3, [r3, #0] + 8001992: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001996: 2b00 cmp r3, #0 + 8001998: d1f0 bne.n 800197c + 800199a: e01f b.n 80019dc + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 800199c: 687b ldr r3, [r7, #4] + 800199e: 6a5b ldr r3, [r3, #36] @ 0x24 + 80019a0: 2b01 cmp r3, #1 + 80019a2: d101 bne.n 80019a8 + { + return HAL_ERROR; + 80019a4: 2301 movs r3, #1 + 80019a6: e01a b.n 80019de + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 80019a8: 4b0f ldr r3, [pc, #60] @ (80019e8 ) + 80019aa: 689b ldr r3, [r3, #8] + 80019ac: 617b str r3, [r7, #20] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80019ae: 697b ldr r3, [r7, #20] + 80019b0: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 80019b4: 687b ldr r3, [r7, #4] + 80019b6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80019b8: 429a cmp r2, r3 + 80019ba: d10d bne.n 80019d8 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80019bc: 697b ldr r3, [r7, #20] + 80019be: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 80019c2: 687b ldr r3, [r7, #4] + 80019c4: 6adb ldr r3, [r3, #44] @ 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 80019c6: 429a cmp r2, r3 + 80019c8: d106 bne.n 80019d8 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 80019ca: 697b ldr r3, [r7, #20] + 80019cc: f403 0240 and.w r2, r3, #12582912 @ 0xc00000 + 80019d0: 687b ldr r3, [r7, #4] + 80019d2: 6b1b ldr r3, [r3, #48] @ 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 80019d4: 429a cmp r2, r3 + 80019d6: d001 beq.n 80019dc + { + return HAL_ERROR; + 80019d8: 2301 movs r3, #1 + 80019da: e000 b.n 80019de + } + } + } + } + + return HAL_OK; + 80019dc: 2300 movs r3, #0 +} + 80019de: 4618 mov r0, r3 + 80019e0: 3720 adds r7, #32 + 80019e2: 46bd mov sp, r7 + 80019e4: bd80 pop {r7, pc} + 80019e6: bf00 nop + 80019e8: 40023800 .word 0x40023800 + 80019ec: 42470060 .word 0x42470060 + +080019f0 : + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 80019f0: b580 push {r7, lr} + 80019f2: b084 sub sp, #16 + 80019f4: af00 add r7, sp, #0 + 80019f6: 6078 str r0, [r7, #4] + 80019f8: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + 80019fa: 687b ldr r3, [r7, #4] + 80019fc: 2b00 cmp r3, #0 + 80019fe: d101 bne.n 8001a04 + { + return HAL_ERROR; + 8001a00: 2301 movs r3, #1 + 8001a02: e11a b.n 8001c3a + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + 8001a04: 4b8f ldr r3, [pc, #572] @ (8001c44 ) + 8001a06: 681b ldr r3, [r3, #0] + 8001a08: f003 0301 and.w r3, r3, #1 + 8001a0c: 683a ldr r2, [r7, #0] + 8001a0e: 429a cmp r2, r3 + 8001a10: d919 bls.n 8001a46 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001a12: 683b ldr r3, [r7, #0] + 8001a14: 2b01 cmp r3, #1 + 8001a16: d105 bne.n 8001a24 + 8001a18: 4b8a ldr r3, [pc, #552] @ (8001c44 ) + 8001a1a: 681b ldr r3, [r3, #0] + 8001a1c: 4a89 ldr r2, [pc, #548] @ (8001c44 ) + 8001a1e: f043 0304 orr.w r3, r3, #4 + 8001a22: 6013 str r3, [r2, #0] + 8001a24: 4b87 ldr r3, [pc, #540] @ (8001c44 ) + 8001a26: 681b ldr r3, [r3, #0] + 8001a28: f023 0201 bic.w r2, r3, #1 + 8001a2c: 4985 ldr r1, [pc, #532] @ (8001c44 ) + 8001a2e: 683b ldr r3, [r7, #0] + 8001a30: 4313 orrs r3, r2 + 8001a32: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001a34: 4b83 ldr r3, [pc, #524] @ (8001c44 ) + 8001a36: 681b ldr r3, [r3, #0] + 8001a38: f003 0301 and.w r3, r3, #1 + 8001a3c: 683a ldr r2, [r7, #0] + 8001a3e: 429a cmp r2, r3 + 8001a40: d001 beq.n 8001a46 + { + return HAL_ERROR; + 8001a42: 2301 movs r3, #1 + 8001a44: e0f9 b.n 8001c3a + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8001a46: 687b ldr r3, [r7, #4] + 8001a48: 681b ldr r3, [r3, #0] + 8001a4a: f003 0302 and.w r3, r3, #2 + 8001a4e: 2b00 cmp r3, #0 + 8001a50: d008 beq.n 8001a64 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8001a52: 4b7d ldr r3, [pc, #500] @ (8001c48 ) + 8001a54: 689b ldr r3, [r3, #8] + 8001a56: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8001a5a: 687b ldr r3, [r7, #4] + 8001a5c: 689b ldr r3, [r3, #8] + 8001a5e: 497a ldr r1, [pc, #488] @ (8001c48 ) + 8001a60: 4313 orrs r3, r2 + 8001a62: 608b str r3, [r1, #8] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8001a64: 687b ldr r3, [r7, #4] + 8001a66: 681b ldr r3, [r3, #0] + 8001a68: f003 0301 and.w r3, r3, #1 + 8001a6c: 2b00 cmp r3, #0 + 8001a6e: f000 808e beq.w 8001b8e + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001a72: 687b ldr r3, [r7, #4] + 8001a74: 685b ldr r3, [r3, #4] + 8001a76: 2b02 cmp r3, #2 + 8001a78: d107 bne.n 8001a8a + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8001a7a: 4b73 ldr r3, [pc, #460] @ (8001c48 ) + 8001a7c: 681b ldr r3, [r3, #0] + 8001a7e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001a82: 2b00 cmp r3, #0 + 8001a84: d121 bne.n 8001aca + { + return HAL_ERROR; + 8001a86: 2301 movs r3, #1 + 8001a88: e0d7 b.n 8001c3a + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001a8a: 687b ldr r3, [r7, #4] + 8001a8c: 685b ldr r3, [r3, #4] + 8001a8e: 2b03 cmp r3, #3 + 8001a90: d107 bne.n 8001aa2 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8001a92: 4b6d ldr r3, [pc, #436] @ (8001c48 ) + 8001a94: 681b ldr r3, [r3, #0] + 8001a96: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001a9a: 2b00 cmp r3, #0 + 8001a9c: d115 bne.n 8001aca + { + return HAL_ERROR; + 8001a9e: 2301 movs r3, #1 + 8001aa0: e0cb b.n 8001c3a + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001aa2: 687b ldr r3, [r7, #4] + 8001aa4: 685b ldr r3, [r3, #4] + 8001aa6: 2b01 cmp r3, #1 + 8001aa8: d107 bne.n 8001aba + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8001aaa: 4b67 ldr r3, [pc, #412] @ (8001c48 ) + 8001aac: 681b ldr r3, [r3, #0] + 8001aae: f003 0302 and.w r3, r3, #2 + 8001ab2: 2b00 cmp r3, #0 + 8001ab4: d109 bne.n 8001aca + { + return HAL_ERROR; + 8001ab6: 2301 movs r3, #1 + 8001ab8: e0bf b.n 8001c3a + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8001aba: 4b63 ldr r3, [pc, #396] @ (8001c48 ) + 8001abc: 681b ldr r3, [r3, #0] + 8001abe: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001ac2: 2b00 cmp r3, #0 + 8001ac4: d101 bne.n 8001aca + { + return HAL_ERROR; + 8001ac6: 2301 movs r3, #1 + 8001ac8: e0b7 b.n 8001c3a + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8001aca: 4b5f ldr r3, [pc, #380] @ (8001c48 ) + 8001acc: 689b ldr r3, [r3, #8] + 8001ace: f023 0203 bic.w r2, r3, #3 + 8001ad2: 687b ldr r3, [r7, #4] + 8001ad4: 685b ldr r3, [r3, #4] + 8001ad6: 495c ldr r1, [pc, #368] @ (8001c48 ) + 8001ad8: 4313 orrs r3, r2 + 8001ada: 608b str r3, [r1, #8] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8001adc: f7ff f954 bl 8000d88 + 8001ae0: 60f8 str r0, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8001ae2: 687b ldr r3, [r7, #4] + 8001ae4: 685b ldr r3, [r3, #4] + 8001ae6: 2b02 cmp r3, #2 + 8001ae8: d112 bne.n 8001b10 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001aea: e00a b.n 8001b02 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001aec: f7ff f94c bl 8000d88 + 8001af0: 4602 mov r2, r0 + 8001af2: 68fb ldr r3, [r7, #12] + 8001af4: 1ad3 subs r3, r2, r3 + 8001af6: f241 3288 movw r2, #5000 @ 0x1388 + 8001afa: 4293 cmp r3, r2 + 8001afc: d901 bls.n 8001b02 + { + return HAL_TIMEOUT; + 8001afe: 2303 movs r3, #3 + 8001b00: e09b b.n 8001c3a + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8001b02: 4b51 ldr r3, [pc, #324] @ (8001c48 ) + 8001b04: 689b ldr r3, [r3, #8] + 8001b06: f003 030c and.w r3, r3, #12 + 8001b0a: 2b08 cmp r3, #8 + 8001b0c: d1ee bne.n 8001aec + 8001b0e: e03e b.n 8001b8e + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8001b10: 687b ldr r3, [r7, #4] + 8001b12: 685b ldr r3, [r3, #4] + 8001b14: 2b03 cmp r3, #3 + 8001b16: d112 bne.n 8001b3e + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001b18: e00a b.n 8001b30 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b1a: f7ff f935 bl 8000d88 + 8001b1e: 4602 mov r2, r0 + 8001b20: 68fb ldr r3, [r7, #12] + 8001b22: 1ad3 subs r3, r2, r3 + 8001b24: f241 3288 movw r2, #5000 @ 0x1388 + 8001b28: 4293 cmp r3, r2 + 8001b2a: d901 bls.n 8001b30 + { + return HAL_TIMEOUT; + 8001b2c: 2303 movs r3, #3 + 8001b2e: e084 b.n 8001c3a + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8001b30: 4b45 ldr r3, [pc, #276] @ (8001c48 ) + 8001b32: 689b ldr r3, [r3, #8] + 8001b34: f003 030c and.w r3, r3, #12 + 8001b38: 2b0c cmp r3, #12 + 8001b3a: d1ee bne.n 8001b1a + 8001b3c: e027 b.n 8001b8e + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8001b3e: 687b ldr r3, [r7, #4] + 8001b40: 685b ldr r3, [r3, #4] + 8001b42: 2b01 cmp r3, #1 + 8001b44: d11d bne.n 8001b82 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001b46: e00a b.n 8001b5e + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b48: f7ff f91e bl 8000d88 + 8001b4c: 4602 mov r2, r0 + 8001b4e: 68fb ldr r3, [r7, #12] + 8001b50: 1ad3 subs r3, r2, r3 + 8001b52: f241 3288 movw r2, #5000 @ 0x1388 + 8001b56: 4293 cmp r3, r2 + 8001b58: d901 bls.n 8001b5e + { + return HAL_TIMEOUT; + 8001b5a: 2303 movs r3, #3 + 8001b5c: e06d b.n 8001c3a + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8001b5e: 4b3a ldr r3, [pc, #232] @ (8001c48 ) + 8001b60: 689b ldr r3, [r3, #8] + 8001b62: f003 030c and.w r3, r3, #12 + 8001b66: 2b04 cmp r3, #4 + 8001b68: d1ee bne.n 8001b48 + 8001b6a: e010 b.n 8001b8e + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8001b6c: f7ff f90c bl 8000d88 + 8001b70: 4602 mov r2, r0 + 8001b72: 68fb ldr r3, [r7, #12] + 8001b74: 1ad3 subs r3, r2, r3 + 8001b76: f241 3288 movw r2, #5000 @ 0x1388 + 8001b7a: 4293 cmp r3, r2 + 8001b7c: d901 bls.n 8001b82 + { + return HAL_TIMEOUT; + 8001b7e: 2303 movs r3, #3 + 8001b80: e05b b.n 8001c3a + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8001b82: 4b31 ldr r3, [pc, #196] @ (8001c48 ) + 8001b84: 689b ldr r3, [r3, #8] + 8001b86: f003 030c and.w r3, r3, #12 + 8001b8a: 2b00 cmp r3, #0 + 8001b8c: d1ee bne.n 8001b6c + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8001b8e: 4b2d ldr r3, [pc, #180] @ (8001c44 ) + 8001b90: 681b ldr r3, [r3, #0] + 8001b92: f003 0301 and.w r3, r3, #1 + 8001b96: 683a ldr r2, [r7, #0] + 8001b98: 429a cmp r2, r3 + 8001b9a: d219 bcs.n 8001bd0 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8001b9c: 683b ldr r3, [r7, #0] + 8001b9e: 2b01 cmp r3, #1 + 8001ba0: d105 bne.n 8001bae + 8001ba2: 4b28 ldr r3, [pc, #160] @ (8001c44 ) + 8001ba4: 681b ldr r3, [r3, #0] + 8001ba6: 4a27 ldr r2, [pc, #156] @ (8001c44 ) + 8001ba8: f043 0304 orr.w r3, r3, #4 + 8001bac: 6013 str r3, [r2, #0] + 8001bae: 4b25 ldr r3, [pc, #148] @ (8001c44 ) + 8001bb0: 681b ldr r3, [r3, #0] + 8001bb2: f023 0201 bic.w r2, r3, #1 + 8001bb6: 4923 ldr r1, [pc, #140] @ (8001c44 ) + 8001bb8: 683b ldr r3, [r7, #0] + 8001bba: 4313 orrs r3, r2 + 8001bbc: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + 8001bbe: 4b21 ldr r3, [pc, #132] @ (8001c44 ) + 8001bc0: 681b ldr r3, [r3, #0] + 8001bc2: f003 0301 and.w r3, r3, #1 + 8001bc6: 683a ldr r2, [r7, #0] + 8001bc8: 429a cmp r2, r3 + 8001bca: d001 beq.n 8001bd0 + { + return HAL_ERROR; + 8001bcc: 2301 movs r3, #1 + 8001bce: e034 b.n 8001c3a + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8001bd0: 687b ldr r3, [r7, #4] + 8001bd2: 681b ldr r3, [r3, #0] + 8001bd4: f003 0304 and.w r3, r3, #4 + 8001bd8: 2b00 cmp r3, #0 + 8001bda: d008 beq.n 8001bee + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8001bdc: 4b1a ldr r3, [pc, #104] @ (8001c48 ) + 8001bde: 689b ldr r3, [r3, #8] + 8001be0: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8001be4: 687b ldr r3, [r7, #4] + 8001be6: 68db ldr r3, [r3, #12] + 8001be8: 4917 ldr r1, [pc, #92] @ (8001c48 ) + 8001bea: 4313 orrs r3, r2 + 8001bec: 608b str r3, [r1, #8] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8001bee: 687b ldr r3, [r7, #4] + 8001bf0: 681b ldr r3, [r3, #0] + 8001bf2: f003 0308 and.w r3, r3, #8 + 8001bf6: 2b00 cmp r3, #0 + 8001bf8: d009 beq.n 8001c0e + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + 8001bfa: 4b13 ldr r3, [pc, #76] @ (8001c48 ) + 8001bfc: 689b ldr r3, [r3, #8] + 8001bfe: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8001c02: 687b ldr r3, [r7, #4] + 8001c04: 691b ldr r3, [r3, #16] + 8001c06: 00db lsls r3, r3, #3 + 8001c08: 490f ldr r1, [pc, #60] @ (8001c48 ) + 8001c0a: 4313 orrs r3, r2 + 8001c0c: 608b str r3, [r1, #8] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8001c0e: f000 f823 bl 8001c58 + 8001c12: 4602 mov r2, r0 + 8001c14: 4b0c ldr r3, [pc, #48] @ (8001c48 ) + 8001c16: 689b ldr r3, [r3, #8] + 8001c18: 091b lsrs r3, r3, #4 + 8001c1a: f003 030f and.w r3, r3, #15 + 8001c1e: 490b ldr r1, [pc, #44] @ (8001c4c ) + 8001c20: 5ccb ldrb r3, [r1, r3] + 8001c22: fa22 f303 lsr.w r3, r2, r3 + 8001c26: 4a0a ldr r2, [pc, #40] @ (8001c50 ) + 8001c28: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8001c2a: 4b0a ldr r3, [pc, #40] @ (8001c54 ) + 8001c2c: 681b ldr r3, [r3, #0] + 8001c2e: 4618 mov r0, r3 + 8001c30: f7ff f85e bl 8000cf0 + 8001c34: 4603 mov r3, r0 + 8001c36: 72fb strb r3, [r7, #11] + + return status; + 8001c38: 7afb ldrb r3, [r7, #11] +} + 8001c3a: 4618 mov r0, r3 + 8001c3c: 3710 adds r7, #16 + 8001c3e: 46bd mov sp, r7 + 8001c40: bd80 pop {r7, pc} + 8001c42: bf00 nop + 8001c44: 40023c00 .word 0x40023c00 + 8001c48: 40023800 .word 0x40023800 + 8001c4c: 08002ecc .word 0x08002ecc + 8001c50: 20000000 .word 0x20000000 + 8001c54: 20000004 .word 0x20000004 + +08001c58 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8001c58: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001c5c: b08e sub sp, #56 @ 0x38 + 8001c5e: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + 8001c60: 4b58 ldr r3, [pc, #352] @ (8001dc4 ) + 8001c62: 689b ldr r3, [r3, #8] + 8001c64: 62fb str r3, [r7, #44] @ 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8001c66: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c68: f003 030c and.w r3, r3, #12 + 8001c6c: 2b0c cmp r3, #12 + 8001c6e: d00d beq.n 8001c8c + 8001c70: 2b0c cmp r3, #12 + 8001c72: f200 8092 bhi.w 8001d9a + 8001c76: 2b04 cmp r3, #4 + 8001c78: d002 beq.n 8001c80 + 8001c7a: 2b08 cmp r3, #8 + 8001c7c: d003 beq.n 8001c86 + 8001c7e: e08c b.n 8001d9a + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + 8001c80: 4b51 ldr r3, [pc, #324] @ (8001dc8 ) + 8001c82: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c84: e097 b.n 8001db6 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8001c86: 4b51 ldr r3, [pc, #324] @ (8001dcc ) + 8001c88: 633b str r3, [r7, #48] @ 0x30 + break; + 8001c8a: e094 b.n 8001db6 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8001c8c: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c8e: 0c9b lsrs r3, r3, #18 + 8001c90: f003 020f and.w r2, r3, #15 + 8001c94: 4b4e ldr r3, [pc, #312] @ (8001dd0 ) + 8001c96: 5c9b ldrb r3, [r3, r2] + 8001c98: 62bb str r3, [r7, #40] @ 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8001c9a: 6afb ldr r3, [r7, #44] @ 0x2c + 8001c9c: 0d9b lsrs r3, r3, #22 + 8001c9e: f003 0303 and.w r3, r3, #3 + 8001ca2: 3301 adds r3, #1 + 8001ca4: 627b str r3, [r7, #36] @ 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8001ca6: 4b47 ldr r3, [pc, #284] @ (8001dc4 ) + 8001ca8: 689b ldr r3, [r3, #8] + 8001caa: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001cae: 2b00 cmp r3, #0 + 8001cb0: d021 beq.n 8001cf6 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001cb2: 6abb ldr r3, [r7, #40] @ 0x28 + 8001cb4: 2200 movs r2, #0 + 8001cb6: 61bb str r3, [r7, #24] + 8001cb8: 61fa str r2, [r7, #28] + 8001cba: 4b44 ldr r3, [pc, #272] @ (8001dcc ) + 8001cbc: e9d7 8906 ldrd r8, r9, [r7, #24] + 8001cc0: 464a mov r2, r9 + 8001cc2: fb03 f202 mul.w r2, r3, r2 + 8001cc6: 2300 movs r3, #0 + 8001cc8: 4644 mov r4, r8 + 8001cca: fb04 f303 mul.w r3, r4, r3 + 8001cce: 4413 add r3, r2 + 8001cd0: 4a3e ldr r2, [pc, #248] @ (8001dcc ) + 8001cd2: 4644 mov r4, r8 + 8001cd4: fba4 0102 umull r0, r1, r4, r2 + 8001cd8: 440b add r3, r1 + 8001cda: 4619 mov r1, r3 + 8001cdc: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001cde: 2200 movs r2, #0 + 8001ce0: 613b str r3, [r7, #16] + 8001ce2: 617a str r2, [r7, #20] + 8001ce4: e9d7 2304 ldrd r2, r3, [r7, #16] + 8001ce8: f7fe fa48 bl 800017c <__aeabi_uldivmod> + 8001cec: 4602 mov r2, r0 + 8001cee: 460b mov r3, r1 + 8001cf0: 4613 mov r3, r2 + 8001cf2: 637b str r3, [r7, #52] @ 0x34 + 8001cf4: e04e b.n 8001d94 + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8001cf6: 6abb ldr r3, [r7, #40] @ 0x28 + 8001cf8: 2200 movs r2, #0 + 8001cfa: 469a mov sl, r3 + 8001cfc: 4693 mov fp, r2 + 8001cfe: 4652 mov r2, sl + 8001d00: 465b mov r3, fp + 8001d02: f04f 0000 mov.w r0, #0 + 8001d06: f04f 0100 mov.w r1, #0 + 8001d0a: 0159 lsls r1, r3, #5 + 8001d0c: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001d10: 0150 lsls r0, r2, #5 + 8001d12: 4602 mov r2, r0 + 8001d14: 460b mov r3, r1 + 8001d16: ebb2 080a subs.w r8, r2, sl + 8001d1a: eb63 090b sbc.w r9, r3, fp + 8001d1e: f04f 0200 mov.w r2, #0 + 8001d22: f04f 0300 mov.w r3, #0 + 8001d26: ea4f 1389 mov.w r3, r9, lsl #6 + 8001d2a: ea43 6398 orr.w r3, r3, r8, lsr #26 + 8001d2e: ea4f 1288 mov.w r2, r8, lsl #6 + 8001d32: ebb2 0408 subs.w r4, r2, r8 + 8001d36: eb63 0509 sbc.w r5, r3, r9 + 8001d3a: f04f 0200 mov.w r2, #0 + 8001d3e: f04f 0300 mov.w r3, #0 + 8001d42: 00eb lsls r3, r5, #3 + 8001d44: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001d48: 00e2 lsls r2, r4, #3 + 8001d4a: 4614 mov r4, r2 + 8001d4c: 461d mov r5, r3 + 8001d4e: eb14 030a adds.w r3, r4, sl + 8001d52: 603b str r3, [r7, #0] + 8001d54: eb45 030b adc.w r3, r5, fp + 8001d58: 607b str r3, [r7, #4] + 8001d5a: f04f 0200 mov.w r2, #0 + 8001d5e: f04f 0300 mov.w r3, #0 + 8001d62: e9d7 4500 ldrd r4, r5, [r7] + 8001d66: 4629 mov r1, r5 + 8001d68: 028b lsls r3, r1, #10 + 8001d6a: 4620 mov r0, r4 + 8001d6c: 4629 mov r1, r5 + 8001d6e: 4604 mov r4, r0 + 8001d70: ea43 5394 orr.w r3, r3, r4, lsr #22 + 8001d74: 4601 mov r1, r0 + 8001d76: 028a lsls r2, r1, #10 + 8001d78: 4610 mov r0, r2 + 8001d7a: 4619 mov r1, r3 + 8001d7c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001d7e: 2200 movs r2, #0 + 8001d80: 60bb str r3, [r7, #8] + 8001d82: 60fa str r2, [r7, #12] + 8001d84: e9d7 2302 ldrd r2, r3, [r7, #8] + 8001d88: f7fe f9f8 bl 800017c <__aeabi_uldivmod> + 8001d8c: 4602 mov r2, r0 + 8001d8e: 460b mov r3, r1 + 8001d90: 4613 mov r3, r2 + 8001d92: 637b str r3, [r7, #52] @ 0x34 + } + sysclockfreq = pllvco; + 8001d94: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001d96: 633b str r3, [r7, #48] @ 0x30 + break; + 8001d98: e00d b.n 8001db6 + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + 8001d9a: 4b0a ldr r3, [pc, #40] @ (8001dc4 ) + 8001d9c: 685b ldr r3, [r3, #4] + 8001d9e: 0b5b lsrs r3, r3, #13 + 8001da0: f003 0307 and.w r3, r3, #7 + 8001da4: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8001da6: 6a3b ldr r3, [r7, #32] + 8001da8: 3301 adds r3, #1 + 8001daa: f44f 4200 mov.w r2, #32768 @ 0x8000 + 8001dae: fa02 f303 lsl.w r3, r2, r3 + 8001db2: 633b str r3, [r7, #48] @ 0x30 + break; + 8001db4: bf00 nop + } + } + return sysclockfreq; + 8001db6: 6b3b ldr r3, [r7, #48] @ 0x30 +} + 8001db8: 4618 mov r0, r3 + 8001dba: 3738 adds r7, #56 @ 0x38 + 8001dbc: 46bd mov sp, r7 + 8001dbe: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8001dc2: bf00 nop + 8001dc4: 40023800 .word 0x40023800 + 8001dc8: 00f42400 .word 0x00f42400 + 8001dcc: 016e3600 .word 0x016e3600 + 8001dd0: 08002ec0 .word 0x08002ec0 + +08001dd4 : + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + 8001dd4: b480 push {r7} + 8001dd6: b087 sub sp, #28 + 8001dd8: af00 add r7, sp, #0 + 8001dda: 6078 str r0, [r7, #4] + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 8001ddc: 2300 movs r3, #0 + 8001dde: 613b str r3, [r7, #16] + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + 8001de0: 4b29 ldr r3, [pc, #164] @ (8001e88 ) + 8001de2: 689b ldr r3, [r3, #8] + 8001de4: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 8001de8: 2b00 cmp r3, #0 + 8001dea: d12c bne.n 8001e46 + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + 8001dec: 4b26 ldr r3, [pc, #152] @ (8001e88 ) + 8001dee: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001df0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001df4: 2b00 cmp r3, #0 + 8001df6: d005 beq.n 8001e04 + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001df8: 4b24 ldr r3, [pc, #144] @ (8001e8c ) + 8001dfa: 681b ldr r3, [r3, #0] + 8001dfc: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001e00: 617b str r3, [r7, #20] + 8001e02: e016 b.n 8001e32 + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8001e04: 4b20 ldr r3, [pc, #128] @ (8001e88 ) + 8001e06: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e08: 4a1f ldr r2, [pc, #124] @ (8001e88 ) + 8001e0a: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8001e0e: 6253 str r3, [r2, #36] @ 0x24 + 8001e10: 4b1d ldr r3, [pc, #116] @ (8001e88 ) + 8001e12: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e14: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001e18: 60fb str r3, [r7, #12] + 8001e1a: 68fb ldr r3, [r7, #12] + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + 8001e1c: 4b1b ldr r3, [pc, #108] @ (8001e8c ) + 8001e1e: 681b ldr r3, [r3, #0] + 8001e20: f403 53c0 and.w r3, r3, #6144 @ 0x1800 + 8001e24: 617b str r3, [r7, #20] + __HAL_RCC_PWR_CLK_DISABLE(); + 8001e26: 4b18 ldr r3, [pc, #96] @ (8001e88 ) + 8001e28: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001e2a: 4a17 ldr r2, [pc, #92] @ (8001e88 ) + 8001e2c: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8001e30: 6253 str r3, [r2, #36] @ 0x24 + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + 8001e32: 697b ldr r3, [r7, #20] + 8001e34: f5b3 5fc0 cmp.w r3, #6144 @ 0x1800 + 8001e38: d105 bne.n 8001e46 + 8001e3a: 687b ldr r3, [r7, #4] + 8001e3c: f5b3 4f40 cmp.w r3, #49152 @ 0xc000 + 8001e40: d101 bne.n 8001e46 + { + latency = FLASH_LATENCY_1; /* 1WS */ + 8001e42: 2301 movs r3, #1 + 8001e44: 613b str r3, [r7, #16] + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 8001e46: 693b ldr r3, [r7, #16] + 8001e48: 2b01 cmp r3, #1 + 8001e4a: d105 bne.n 8001e58 + 8001e4c: 4b10 ldr r3, [pc, #64] @ (8001e90 ) + 8001e4e: 681b ldr r3, [r3, #0] + 8001e50: 4a0f ldr r2, [pc, #60] @ (8001e90 ) + 8001e52: f043 0304 orr.w r3, r3, #4 + 8001e56: 6013 str r3, [r2, #0] + 8001e58: 4b0d ldr r3, [pc, #52] @ (8001e90 ) + 8001e5a: 681b ldr r3, [r3, #0] + 8001e5c: f023 0201 bic.w r2, r3, #1 + 8001e60: 490b ldr r1, [pc, #44] @ (8001e90 ) + 8001e62: 693b ldr r3, [r7, #16] + 8001e64: 4313 orrs r3, r2 + 8001e66: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + 8001e68: 4b09 ldr r3, [pc, #36] @ (8001e90 ) + 8001e6a: 681b ldr r3, [r3, #0] + 8001e6c: f003 0301 and.w r3, r3, #1 + 8001e70: 693a ldr r2, [r7, #16] + 8001e72: 429a cmp r2, r3 + 8001e74: d001 beq.n 8001e7a + { + return HAL_ERROR; + 8001e76: 2301 movs r3, #1 + 8001e78: e000 b.n 8001e7c + } + + return HAL_OK; + 8001e7a: 2300 movs r3, #0 +} + 8001e7c: 4618 mov r0, r3 + 8001e7e: 371c adds r7, #28 + 8001e80: 46bd mov sp, r7 + 8001e82: bc80 pop {r7} + 8001e84: 4770 bx lr + 8001e86: bf00 nop + 8001e88: 40023800 .word 0x40023800 + 8001e8c: 40007000 .word 0x40007000 + 8001e90: 40023c00 .word 0x40023c00 + +08001e94 : + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + 8001e94: b580 push {r7, lr} + 8001e96: b082 sub sp, #8 + 8001e98: af00 add r7, sp, #0 + 8001e9a: 6078 str r0, [r7, #4] + /* Check the SPI handle allocation */ + if (hspi == NULL) + 8001e9c: 687b ldr r3, [r7, #4] + 8001e9e: 2b00 cmp r3, #0 + 8001ea0: d101 bne.n 8001ea6 + { + return HAL_ERROR; + 8001ea2: 2301 movs r3, #1 + 8001ea4: e07b b.n 8001f9e + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + 8001ea6: 687b ldr r3, [r7, #4] + 8001ea8: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001eaa: 2b00 cmp r3, #0 + 8001eac: d108 bne.n 8001ec0 + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8001eae: 687b ldr r3, [r7, #4] + 8001eb0: 685b ldr r3, [r3, #4] + 8001eb2: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8001eb6: d009 beq.n 8001ecc + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + 8001eb8: 687b ldr r3, [r7, #4] + 8001eba: 2200 movs r2, #0 + 8001ebc: 61da str r2, [r3, #28] + 8001ebe: e005 b.n 8001ecc + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + 8001ec0: 687b ldr r3, [r7, #4] + 8001ec2: 2200 movs r2, #0 + 8001ec4: 611a str r2, [r3, #16] + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + 8001ec6: 687b ldr r3, [r7, #4] + 8001ec8: 2200 movs r2, #0 + 8001eca: 615a str r2, [r3, #20] + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + 8001ecc: 687b ldr r3, [r7, #4] + 8001ece: 2200 movs r2, #0 + 8001ed0: 629a str r2, [r3, #40] @ 0x28 +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + 8001ed2: 687b ldr r3, [r7, #4] + 8001ed4: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001ed8: b2db uxtb r3, r3 + 8001eda: 2b00 cmp r3, #0 + 8001edc: d106 bne.n 8001eec + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + 8001ede: 687b ldr r3, [r7, #4] + 8001ee0: 2200 movs r2, #0 + 8001ee2: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); + 8001ee6: 6878 ldr r0, [r7, #4] + 8001ee8: f7fe fd5a bl 80009a0 +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + 8001eec: 687b ldr r3, [r7, #4] + 8001eee: 2202 movs r2, #2 + 8001ef0: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8001ef4: 687b ldr r3, [r7, #4] + 8001ef6: 681b ldr r3, [r3, #0] + 8001ef8: 681a ldr r2, [r3, #0] + 8001efa: 687b ldr r3, [r7, #4] + 8001efc: 681b ldr r3, [r3, #0] + 8001efe: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8001f02: 601a str r2, [r3, #0] + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + 8001f04: 687b ldr r3, [r7, #4] + 8001f06: 685b ldr r3, [r3, #4] + 8001f08: f403 7282 and.w r2, r3, #260 @ 0x104 + 8001f0c: 687b ldr r3, [r7, #4] + 8001f0e: 689b ldr r3, [r3, #8] + 8001f10: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8001f14: 431a orrs r2, r3 + 8001f16: 687b ldr r3, [r7, #4] + 8001f18: 68db ldr r3, [r3, #12] + 8001f1a: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001f1e: 431a orrs r2, r3 + 8001f20: 687b ldr r3, [r7, #4] + 8001f22: 691b ldr r3, [r3, #16] + 8001f24: f003 0302 and.w r3, r3, #2 + 8001f28: 431a orrs r2, r3 + 8001f2a: 687b ldr r3, [r7, #4] + 8001f2c: 695b ldr r3, [r3, #20] + 8001f2e: f003 0301 and.w r3, r3, #1 + 8001f32: 431a orrs r2, r3 + 8001f34: 687b ldr r3, [r7, #4] + 8001f36: 699b ldr r3, [r3, #24] + 8001f38: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001f3c: 431a orrs r2, r3 + 8001f3e: 687b ldr r3, [r7, #4] + 8001f40: 69db ldr r3, [r3, #28] + 8001f42: f003 0338 and.w r3, r3, #56 @ 0x38 + 8001f46: 431a orrs r2, r3 + 8001f48: 687b ldr r3, [r7, #4] + 8001f4a: 6a1b ldr r3, [r3, #32] + 8001f4c: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001f50: ea42 0103 orr.w r1, r2, r3 + 8001f54: 687b ldr r3, [r7, #4] + 8001f56: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001f58: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 8001f5c: 687b ldr r3, [r7, #4] + 8001f5e: 681b ldr r3, [r3, #0] + 8001f60: 430a orrs r2, r1 + 8001f62: 601a str r2, [r3, #0] + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); + 8001f64: 687b ldr r3, [r7, #4] + 8001f66: 699b ldr r3, [r3, #24] + 8001f68: 0c1b lsrs r3, r3, #16 + 8001f6a: f003 0104 and.w r1, r3, #4 + 8001f6e: 687b ldr r3, [r7, #4] + 8001f70: 6a5b ldr r3, [r3, #36] @ 0x24 + 8001f72: f003 0210 and.w r2, r3, #16 + 8001f76: 687b ldr r3, [r7, #4] + 8001f78: 681b ldr r3, [r3, #0] + 8001f7a: 430a orrs r2, r1 + 8001f7c: 605a str r2, [r3, #4] + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 8001f7e: 687b ldr r3, [r7, #4] + 8001f80: 681b ldr r3, [r3, #0] + 8001f82: 69da ldr r2, [r3, #28] + 8001f84: 687b ldr r3, [r7, #4] + 8001f86: 681b ldr r3, [r3, #0] + 8001f88: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001f8c: 61da str r2, [r3, #28] +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001f8e: 687b ldr r3, [r7, #4] + 8001f90: 2200 movs r2, #0 + 8001f92: 655a str r2, [r3, #84] @ 0x54 + hspi->State = HAL_SPI_STATE_READY; + 8001f94: 687b ldr r3, [r7, #4] + 8001f96: 2201 movs r2, #1 + 8001f98: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + return HAL_OK; + 8001f9c: 2300 movs r3, #0 +} + 8001f9e: 4618 mov r0, r3 + 8001fa0: 3708 adds r7, #8 + 8001fa2: 46bd mov sp, r7 + 8001fa4: bd80 pop {r7, pc} + +08001fa6 : + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001fa6: b580 push {r7, lr} + 8001fa8: b088 sub sp, #32 + 8001faa: af00 add r7, sp, #0 + 8001fac: 60f8 str r0, [r7, #12] + 8001fae: 60b9 str r1, [r7, #8] + 8001fb0: 603b str r3, [r7, #0] + 8001fb2: 4613 mov r3, r2 + 8001fb4: 80fb strh r3, [r7, #6] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001fb6: f7fe fee7 bl 8000d88 + 8001fba: 61f8 str r0, [r7, #28] + initial_TxXferCount = Size; + 8001fbc: 88fb ldrh r3, [r7, #6] + 8001fbe: 837b strh r3, [r7, #26] + + if (hspi->State != HAL_SPI_STATE_READY) + 8001fc0: 68fb ldr r3, [r7, #12] + 8001fc2: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 8001fc6: b2db uxtb r3, r3 + 8001fc8: 2b01 cmp r3, #1 + 8001fca: d001 beq.n 8001fd0 + { + return HAL_BUSY; + 8001fcc: 2302 movs r3, #2 + 8001fce: e12a b.n 8002226 + } + + if ((pData == NULL) || (Size == 0U)) + 8001fd0: 68bb ldr r3, [r7, #8] + 8001fd2: 2b00 cmp r3, #0 + 8001fd4: d002 beq.n 8001fdc + 8001fd6: 88fb ldrh r3, [r7, #6] + 8001fd8: 2b00 cmp r3, #0 + 8001fda: d101 bne.n 8001fe0 + { + return HAL_ERROR; + 8001fdc: 2301 movs r3, #1 + 8001fde: e122 b.n 8002226 + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8001fe0: 68fb ldr r3, [r7, #12] + 8001fe2: f893 3050 ldrb.w r3, [r3, #80] @ 0x50 + 8001fe6: 2b01 cmp r3, #1 + 8001fe8: d101 bne.n 8001fee + 8001fea: 2302 movs r3, #2 + 8001fec: e11b b.n 8002226 + 8001fee: 68fb ldr r3, [r7, #12] + 8001ff0: 2201 movs r2, #1 + 8001ff2: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8001ff6: 68fb ldr r3, [r7, #12] + 8001ff8: 2203 movs r2, #3 + 8001ffa: f883 2051 strb.w r2, [r3, #81] @ 0x51 + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8001ffe: 68fb ldr r3, [r7, #12] + 8002000: 2200 movs r2, #0 + 8002002: 655a str r2, [r3, #84] @ 0x54 + hspi->pTxBuffPtr = (const uint8_t *)pData; + 8002004: 68fb ldr r3, [r7, #12] + 8002006: 68ba ldr r2, [r7, #8] + 8002008: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferSize = Size; + 800200a: 68fb ldr r3, [r7, #12] + 800200c: 88fa ldrh r2, [r7, #6] + 800200e: 869a strh r2, [r3, #52] @ 0x34 + hspi->TxXferCount = Size; + 8002010: 68fb ldr r3, [r7, #12] + 8002012: 88fa ldrh r2, [r7, #6] + 8002014: 86da strh r2, [r3, #54] @ 0x36 + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8002016: 68fb ldr r3, [r7, #12] + 8002018: 2200 movs r2, #0 + 800201a: 639a str r2, [r3, #56] @ 0x38 + hspi->RxXferSize = 0U; + 800201c: 68fb ldr r3, [r7, #12] + 800201e: 2200 movs r2, #0 + 8002020: 879a strh r2, [r3, #60] @ 0x3c + hspi->RxXferCount = 0U; + 8002022: 68fb ldr r3, [r7, #12] + 8002024: 2200 movs r2, #0 + 8002026: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxISR = NULL; + 8002028: 68fb ldr r3, [r7, #12] + 800202a: 2200 movs r2, #0 + 800202c: 645a str r2, [r3, #68] @ 0x44 + hspi->RxISR = NULL; + 800202e: 68fb ldr r3, [r7, #12] + 8002030: 2200 movs r2, #0 + 8002032: 641a str r2, [r3, #64] @ 0x40 + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002034: 68fb ldr r3, [r7, #12] + 8002036: 689b ldr r3, [r3, #8] + 8002038: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 800203c: d10f bne.n 800205e + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 800203e: 68fb ldr r3, [r7, #12] + 8002040: 681b ldr r3, [r3, #0] + 8002042: 681a ldr r2, [r3, #0] + 8002044: 68fb ldr r3, [r7, #12] + 8002046: 681b ldr r3, [r3, #0] + 8002048: f022 0240 bic.w r2, r2, #64 @ 0x40 + 800204c: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 800204e: 68fb ldr r3, [r7, #12] + 8002050: 681b ldr r3, [r3, #0] + 8002052: 681a ldr r2, [r3, #0] + 8002054: 68fb ldr r3, [r7, #12] + 8002056: 681b ldr r3, [r3, #0] + 8002058: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 800205c: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 800205e: 68fb ldr r3, [r7, #12] + 8002060: 681b ldr r3, [r3, #0] + 8002062: 681b ldr r3, [r3, #0] + 8002064: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002068: 2b40 cmp r3, #64 @ 0x40 + 800206a: d007 beq.n 800207c + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 800206c: 68fb ldr r3, [r7, #12] + 800206e: 681b ldr r3, [r3, #0] + 8002070: 681a ldr r2, [r3, #0] + 8002072: 68fb ldr r3, [r7, #12] + 8002074: 681b ldr r3, [r3, #0] + 8002076: f042 0240 orr.w r2, r2, #64 @ 0x40 + 800207a: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + 800207c: 68fb ldr r3, [r7, #12] + 800207e: 68db ldr r3, [r3, #12] + 8002080: f5b3 6f00 cmp.w r3, #2048 @ 0x800 + 8002084: d152 bne.n 800212c + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8002086: 68fb ldr r3, [r7, #12] + 8002088: 685b ldr r3, [r3, #4] + 800208a: 2b00 cmp r3, #0 + 800208c: d002 beq.n 8002094 + 800208e: 8b7b ldrh r3, [r7, #26] + 8002090: 2b01 cmp r3, #1 + 8002092: d145 bne.n 8002120 + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 8002094: 68fb ldr r3, [r7, #12] + 8002096: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002098: 881a ldrh r2, [r3, #0] + 800209a: 68fb ldr r3, [r7, #12] + 800209c: 681b ldr r3, [r3, #0] + 800209e: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80020a0: 68fb ldr r3, [r7, #12] + 80020a2: 6b1b ldr r3, [r3, #48] @ 0x30 + 80020a4: 1c9a adds r2, r3, #2 + 80020a6: 68fb ldr r3, [r7, #12] + 80020a8: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 80020aa: 68fb ldr r3, [r7, #12] + 80020ac: 8edb ldrh r3, [r3, #54] @ 0x36 + 80020ae: b29b uxth r3, r3 + 80020b0: 3b01 subs r3, #1 + 80020b2: b29a uxth r2, r3 + 80020b4: 68fb ldr r3, [r7, #12] + 80020b6: 86da strh r2, [r3, #54] @ 0x36 + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 80020b8: e032 b.n 8002120 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 80020ba: 68fb ldr r3, [r7, #12] + 80020bc: 681b ldr r3, [r3, #0] + 80020be: 689b ldr r3, [r3, #8] + 80020c0: f003 0302 and.w r3, r3, #2 + 80020c4: 2b02 cmp r3, #2 + 80020c6: d112 bne.n 80020ee + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + 80020c8: 68fb ldr r3, [r7, #12] + 80020ca: 6b1b ldr r3, [r3, #48] @ 0x30 + 80020cc: 881a ldrh r2, [r3, #0] + 80020ce: 68fb ldr r3, [r7, #12] + 80020d0: 681b ldr r3, [r3, #0] + 80020d2: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80020d4: 68fb ldr r3, [r7, #12] + 80020d6: 6b1b ldr r3, [r3, #48] @ 0x30 + 80020d8: 1c9a adds r2, r3, #2 + 80020da: 68fb ldr r3, [r7, #12] + 80020dc: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 80020de: 68fb ldr r3, [r7, #12] + 80020e0: 8edb ldrh r3, [r3, #54] @ 0x36 + 80020e2: b29b uxth r3, r3 + 80020e4: 3b01 subs r3, #1 + 80020e6: b29a uxth r2, r3 + 80020e8: 68fb ldr r3, [r7, #12] + 80020ea: 86da strh r2, [r3, #54] @ 0x36 + 80020ec: e018 b.n 8002120 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 80020ee: f7fe fe4b bl 8000d88 + 80020f2: 4602 mov r2, r0 + 80020f4: 69fb ldr r3, [r7, #28] + 80020f6: 1ad3 subs r3, r2, r3 + 80020f8: 683a ldr r2, [r7, #0] + 80020fa: 429a cmp r2, r3 + 80020fc: d803 bhi.n 8002106 + 80020fe: 683b ldr r3, [r7, #0] + 8002100: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8002104: d102 bne.n 800210c + 8002106: 683b ldr r3, [r7, #0] + 8002108: 2b00 cmp r3, #0 + 800210a: d109 bne.n 8002120 + { + hspi->State = HAL_SPI_STATE_READY; + 800210c: 68fb ldr r3, [r7, #12] + 800210e: 2201 movs r2, #1 + 8002110: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 8002114: 68fb ldr r3, [r7, #12] + 8002116: 2200 movs r2, #0 + 8002118: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 800211c: 2303 movs r3, #3 + 800211e: e082 b.n 8002226 + while (hspi->TxXferCount > 0U) + 8002120: 68fb ldr r3, [r7, #12] + 8002122: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002124: b29b uxth r3, r3 + 8002126: 2b00 cmp r3, #0 + 8002128: d1c7 bne.n 80020ba + 800212a: e053 b.n 80021d4 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 800212c: 68fb ldr r3, [r7, #12] + 800212e: 685b ldr r3, [r3, #4] + 8002130: 2b00 cmp r3, #0 + 8002132: d002 beq.n 800213a + 8002134: 8b7b ldrh r3, [r7, #26] + 8002136: 2b01 cmp r3, #1 + 8002138: d147 bne.n 80021ca + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 800213a: 68fb ldr r3, [r7, #12] + 800213c: 6b1a ldr r2, [r3, #48] @ 0x30 + 800213e: 68fb ldr r3, [r7, #12] + 8002140: 681b ldr r3, [r3, #0] + 8002142: 330c adds r3, #12 + 8002144: 7812 ldrb r2, [r2, #0] + 8002146: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8002148: 68fb ldr r3, [r7, #12] + 800214a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800214c: 1c5a adds r2, r3, #1 + 800214e: 68fb ldr r3, [r7, #12] + 8002150: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002152: 68fb ldr r3, [r7, #12] + 8002154: 8edb ldrh r3, [r3, #54] @ 0x36 + 8002156: b29b uxth r3, r3 + 8002158: 3b01 subs r3, #1 + 800215a: b29a uxth r2, r3 + 800215c: 68fb ldr r3, [r7, #12] + 800215e: 86da strh r2, [r3, #54] @ 0x36 + } + while (hspi->TxXferCount > 0U) + 8002160: e033 b.n 80021ca + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8002162: 68fb ldr r3, [r7, #12] + 8002164: 681b ldr r3, [r3, #0] + 8002166: 689b ldr r3, [r3, #8] + 8002168: f003 0302 and.w r3, r3, #2 + 800216c: 2b02 cmp r3, #2 + 800216e: d113 bne.n 8002198 + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + 8002170: 68fb ldr r3, [r7, #12] + 8002172: 6b1a ldr r2, [r3, #48] @ 0x30 + 8002174: 68fb ldr r3, [r7, #12] + 8002176: 681b ldr r3, [r3, #0] + 8002178: 330c adds r3, #12 + 800217a: 7812 ldrb r2, [r2, #0] + 800217c: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800217e: 68fb ldr r3, [r7, #12] + 8002180: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002182: 1c5a adds r2, r3, #1 + 8002184: 68fb ldr r3, [r7, #12] + 8002186: 631a str r2, [r3, #48] @ 0x30 + hspi->TxXferCount--; + 8002188: 68fb ldr r3, [r7, #12] + 800218a: 8edb ldrh r3, [r3, #54] @ 0x36 + 800218c: b29b uxth r3, r3 + 800218e: 3b01 subs r3, #1 + 8002190: b29a uxth r2, r3 + 8002192: 68fb ldr r3, [r7, #12] + 8002194: 86da strh r2, [r3, #54] @ 0x36 + 8002196: e018 b.n 80021ca + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8002198: f7fe fdf6 bl 8000d88 + 800219c: 4602 mov r2, r0 + 800219e: 69fb ldr r3, [r7, #28] + 80021a0: 1ad3 subs r3, r2, r3 + 80021a2: 683a ldr r2, [r7, #0] + 80021a4: 429a cmp r2, r3 + 80021a6: d803 bhi.n 80021b0 + 80021a8: 683b ldr r3, [r7, #0] + 80021aa: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80021ae: d102 bne.n 80021b6 + 80021b0: 683b ldr r3, [r7, #0] + 80021b2: 2b00 cmp r3, #0 + 80021b4: d109 bne.n 80021ca + { + hspi->State = HAL_SPI_STATE_READY; + 80021b6: 68fb ldr r3, [r7, #12] + 80021b8: 2201 movs r2, #1 + 80021ba: f883 2051 strb.w r2, [r3, #81] @ 0x51 + __HAL_UNLOCK(hspi); + 80021be: 68fb ldr r3, [r7, #12] + 80021c0: 2200 movs r2, #0 + 80021c2: f883 2050 strb.w r2, [r3, #80] @ 0x50 + return HAL_TIMEOUT; + 80021c6: 2303 movs r3, #3 + 80021c8: e02d b.n 8002226 + while (hspi->TxXferCount > 0U) + 80021ca: 68fb ldr r3, [r7, #12] + 80021cc: 8edb ldrh r3, [r3, #54] @ 0x36 + 80021ce: b29b uxth r3, r3 + 80021d0: 2b00 cmp r3, #0 + 80021d2: d1c6 bne.n 8002162 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 80021d4: 69fa ldr r2, [r7, #28] + 80021d6: 6839 ldr r1, [r7, #0] + 80021d8: 68f8 ldr r0, [r7, #12] + 80021da: f000 f8b1 bl 8002340 + 80021de: 4603 mov r3, r0 + 80021e0: 2b00 cmp r3, #0 + 80021e2: d002 beq.n 80021ea + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80021e4: 68fb ldr r3, [r7, #12] + 80021e6: 2220 movs r2, #32 + 80021e8: 655a str r2, [r3, #84] @ 0x54 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 80021ea: 68fb ldr r3, [r7, #12] + 80021ec: 689b ldr r3, [r3, #8] + 80021ee: 2b00 cmp r3, #0 + 80021f0: d10a bne.n 8002208 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 80021f2: 2300 movs r3, #0 + 80021f4: 617b str r3, [r7, #20] + 80021f6: 68fb ldr r3, [r7, #12] + 80021f8: 681b ldr r3, [r3, #0] + 80021fa: 68db ldr r3, [r3, #12] + 80021fc: 617b str r3, [r7, #20] + 80021fe: 68fb ldr r3, [r7, #12] + 8002200: 681b ldr r3, [r3, #0] + 8002202: 689b ldr r3, [r3, #8] + 8002204: 617b str r3, [r7, #20] + 8002206: 697b ldr r3, [r7, #20] + } + + hspi->State = HAL_SPI_STATE_READY; + 8002208: 68fb ldr r3, [r7, #12] + 800220a: 2201 movs r2, #1 + 800220c: f883 2051 strb.w r2, [r3, #81] @ 0x51 + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8002210: 68fb ldr r3, [r7, #12] + 8002212: 2200 movs r2, #0 + 8002214: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8002218: 68fb ldr r3, [r7, #12] + 800221a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800221c: 2b00 cmp r3, #0 + 800221e: d001 beq.n 8002224 + { + return HAL_ERROR; + 8002220: 2301 movs r3, #1 + 8002222: e000 b.n 8002226 + } + else + { + return HAL_OK; + 8002224: 2300 movs r3, #0 + } +} + 8002226: 4618 mov r0, r3 + 8002228: 3720 adds r7, #32 + 800222a: 46bd mov sp, r7 + 800222c: bd80 pop {r7, pc} + ... + +08002230 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 8002230: b580 push {r7, lr} + 8002232: b088 sub sp, #32 + 8002234: af00 add r7, sp, #0 + 8002236: 60f8 str r0, [r7, #12] + 8002238: 60b9 str r1, [r7, #8] + 800223a: 603b str r3, [r7, #0] + 800223c: 4613 mov r3, r2 + 800223e: 71fb strb r3, [r7, #7] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8002240: f7fe fda2 bl 8000d88 + 8002244: 4602 mov r2, r0 + 8002246: 6abb ldr r3, [r7, #40] @ 0x28 + 8002248: 1a9b subs r3, r3, r2 + 800224a: 683a ldr r2, [r7, #0] + 800224c: 4413 add r3, r2 + 800224e: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8002250: f7fe fd9a bl 8000d88 + 8002254: 61b8 str r0, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8002256: 4b39 ldr r3, [pc, #228] @ (800233c ) + 8002258: 681b ldr r3, [r3, #0] + 800225a: 015b lsls r3, r3, #5 + 800225c: 0d1b lsrs r3, r3, #20 + 800225e: 69fa ldr r2, [r7, #28] + 8002260: fb02 f303 mul.w r3, r2, r3 + 8002264: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8002266: e054 b.n 8002312 + { + if (Timeout != HAL_MAX_DELAY) + 8002268: 683b ldr r3, [r7, #0] + 800226a: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 800226e: d050 beq.n 8002312 + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8002270: f7fe fd8a bl 8000d88 + 8002274: 4602 mov r2, r0 + 8002276: 69bb ldr r3, [r7, #24] + 8002278: 1ad3 subs r3, r2, r3 + 800227a: 69fa ldr r2, [r7, #28] + 800227c: 429a cmp r2, r3 + 800227e: d902 bls.n 8002286 + 8002280: 69fb ldr r3, [r7, #28] + 8002282: 2b00 cmp r3, #0 + 8002284: d13d bne.n 8002302 + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8002286: 68fb ldr r3, [r7, #12] + 8002288: 681b ldr r3, [r3, #0] + 800228a: 685a ldr r2, [r3, #4] + 800228c: 68fb ldr r3, [r7, #12] + 800228e: 681b ldr r3, [r3, #0] + 8002290: f022 02e0 bic.w r2, r2, #224 @ 0xe0 + 8002294: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8002296: 68fb ldr r3, [r7, #12] + 8002298: 685b ldr r3, [r3, #4] + 800229a: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800229e: d111 bne.n 80022c4 + 80022a0: 68fb ldr r3, [r7, #12] + 80022a2: 689b ldr r3, [r3, #8] + 80022a4: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 80022a8: d004 beq.n 80022b4 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 80022aa: 68fb ldr r3, [r7, #12] + 80022ac: 689b ldr r3, [r3, #8] + 80022ae: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 80022b2: d107 bne.n 80022c4 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80022b4: 68fb ldr r3, [r7, #12] + 80022b6: 681b ldr r3, [r3, #0] + 80022b8: 681a ldr r2, [r3, #0] + 80022ba: 68fb ldr r3, [r7, #12] + 80022bc: 681b ldr r3, [r3, #0] + 80022be: f022 0240 bic.w r2, r2, #64 @ 0x40 + 80022c2: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 80022c4: 68fb ldr r3, [r7, #12] + 80022c6: 6a9b ldr r3, [r3, #40] @ 0x28 + 80022c8: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80022cc: d10f bne.n 80022ee + { + SPI_RESET_CRC(hspi); + 80022ce: 68fb ldr r3, [r7, #12] + 80022d0: 681b ldr r3, [r3, #0] + 80022d2: 681a ldr r2, [r3, #0] + 80022d4: 68fb ldr r3, [r7, #12] + 80022d6: 681b ldr r3, [r3, #0] + 80022d8: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 80022dc: 601a str r2, [r3, #0] + 80022de: 68fb ldr r3, [r7, #12] + 80022e0: 681b ldr r3, [r3, #0] + 80022e2: 681a ldr r2, [r3, #0] + 80022e4: 68fb ldr r3, [r7, #12] + 80022e6: 681b ldr r3, [r3, #0] + 80022e8: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 80022ec: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80022ee: 68fb ldr r3, [r7, #12] + 80022f0: 2201 movs r2, #1 + 80022f2: f883 2051 strb.w r2, [r3, #81] @ 0x51 + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80022f6: 68fb ldr r3, [r7, #12] + 80022f8: 2200 movs r2, #0 + 80022fa: f883 2050 strb.w r2, [r3, #80] @ 0x50 + + return HAL_TIMEOUT; + 80022fe: 2303 movs r3, #3 + 8002300: e017 b.n 8002332 + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 8002302: 697b ldr r3, [r7, #20] + 8002304: 2b00 cmp r3, #0 + 8002306: d101 bne.n 800230c + { + tmp_timeout = 0U; + 8002308: 2300 movs r3, #0 + 800230a: 61fb str r3, [r7, #28] + } + count--; + 800230c: 697b ldr r3, [r7, #20] + 800230e: 3b01 subs r3, #1 + 8002310: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8002312: 68fb ldr r3, [r7, #12] + 8002314: 681b ldr r3, [r3, #0] + 8002316: 689a ldr r2, [r3, #8] + 8002318: 68bb ldr r3, [r7, #8] + 800231a: 4013 ands r3, r2 + 800231c: 68ba ldr r2, [r7, #8] + 800231e: 429a cmp r2, r3 + 8002320: bf0c ite eq + 8002322: 2301 moveq r3, #1 + 8002324: 2300 movne r3, #0 + 8002326: b2db uxtb r3, r3 + 8002328: 461a mov r2, r3 + 800232a: 79fb ldrb r3, [r7, #7] + 800232c: 429a cmp r2, r3 + 800232e: d19b bne.n 8002268 + } + } + + return HAL_OK; + 8002330: 2300 movs r3, #0 +} + 8002332: 4618 mov r0, r3 + 8002334: 3720 adds r7, #32 + 8002336: 46bd mov sp, r7 + 8002338: bd80 pop {r7, pc} + 800233a: bf00 nop + 800233c: 20000000 .word 0x20000000 + +08002340 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8002340: b580 push {r7, lr} + 8002342: b088 sub sp, #32 + 8002344: af02 add r7, sp, #8 + 8002346: 60f8 str r0, [r7, #12] + 8002348: 60b9 str r1, [r7, #8] + 800234a: 607a str r2, [r7, #4] + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + 800234c: 687b ldr r3, [r7, #4] + 800234e: 9300 str r3, [sp, #0] + 8002350: 68bb ldr r3, [r7, #8] + 8002352: 2201 movs r2, #1 + 8002354: 2102 movs r1, #2 + 8002356: 68f8 ldr r0, [r7, #12] + 8002358: f7ff ff6a bl 8002230 + 800235c: 4603 mov r3, r0 + 800235e: 2b00 cmp r3, #0 + 8002360: d007 beq.n 8002372 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8002362: 68fb ldr r3, [r7, #12] + 8002364: 6d5b ldr r3, [r3, #84] @ 0x54 + 8002366: f043 0220 orr.w r2, r3, #32 + 800236a: 68fb ldr r3, [r7, #12] + 800236c: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 800236e: 2303 movs r3, #3 + 8002370: e032 b.n 80023d8 + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + 8002372: 4b1b ldr r3, [pc, #108] @ (80023e0 ) + 8002374: 681b ldr r3, [r3, #0] + 8002376: 4a1b ldr r2, [pc, #108] @ (80023e4 ) + 8002378: fba2 2303 umull r2, r3, r2, r3 + 800237c: 0d5b lsrs r3, r3, #21 + 800237e: f44f 727a mov.w r2, #1000 @ 0x3e8 + 8002382: fb02 f303 mul.w r3, r2, r3 + 8002386: 617b str r3, [r7, #20] + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + 8002388: 68fb ldr r3, [r7, #12] + 800238a: 685b ldr r3, [r3, #4] + 800238c: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 8002390: d112 bne.n 80023b8 + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8002392: 687b ldr r3, [r7, #4] + 8002394: 9300 str r3, [sp, #0] + 8002396: 68bb ldr r3, [r7, #8] + 8002398: 2200 movs r2, #0 + 800239a: 2180 movs r1, #128 @ 0x80 + 800239c: 68f8 ldr r0, [r7, #12] + 800239e: f7ff ff47 bl 8002230 + 80023a2: 4603 mov r3, r0 + 80023a4: 2b00 cmp r3, #0 + 80023a6: d016 beq.n 80023d6 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 80023a8: 68fb ldr r3, [r7, #12] + 80023aa: 6d5b ldr r3, [r3, #84] @ 0x54 + 80023ac: f043 0220 orr.w r2, r3, #32 + 80023b0: 68fb ldr r3, [r7, #12] + 80023b2: 655a str r2, [r3, #84] @ 0x54 + return HAL_TIMEOUT; + 80023b4: 2303 movs r3, #3 + 80023b6: e00f b.n 80023d8 + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + 80023b8: 697b ldr r3, [r7, #20] + 80023ba: 2b00 cmp r3, #0 + 80023bc: d00a beq.n 80023d4 + { + break; + } + count--; + 80023be: 697b ldr r3, [r7, #20] + 80023c0: 3b01 subs r3, #1 + 80023c2: 617b str r3, [r7, #20] + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + 80023c4: 68fb ldr r3, [r7, #12] + 80023c6: 681b ldr r3, [r3, #0] + 80023c8: 689b ldr r3, [r3, #8] + 80023ca: f003 0380 and.w r3, r3, #128 @ 0x80 + 80023ce: 2b80 cmp r3, #128 @ 0x80 + 80023d0: d0f2 beq.n 80023b8 + 80023d2: e000 b.n 80023d6 + break; + 80023d4: bf00 nop + } + + return HAL_OK; + 80023d6: 2300 movs r3, #0 +} + 80023d8: 4618 mov r0, r3 + 80023da: 3718 adds r7, #24 + 80023dc: 46bd mov sp, r7 + 80023de: bd80 pop {r7, pc} + 80023e0: 20000000 .word 0x20000000 + 80023e4: 165e9f81 .word 0x165e9f81 + +080023e8 : + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + 80023e8: b580 push {r7, lr} + 80023ea: b082 sub sp, #8 + 80023ec: af00 add r7, sp, #0 + 80023ee: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80023f0: 687b ldr r3, [r7, #4] + 80023f2: 2b00 cmp r3, #0 + 80023f4: d101 bne.n 80023fa + { + return HAL_ERROR; + 80023f6: 2301 movs r3, #1 + 80023f8: e031 b.n 800245e + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80023fa: 687b ldr r3, [r7, #4] + 80023fc: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8002400: b2db uxtb r3, r3 + 8002402: 2b00 cmp r3, #0 + 8002404: d106 bne.n 8002414 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002406: 687b ldr r3, [r7, #4] + 8002408: 2200 movs r2, #0 + 800240a: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); + 800240e: 6878 ldr r0, [r7, #4] + 8002410: f7fe fb0a bl 8000a28 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002414: 687b ldr r3, [r7, #4] + 8002416: 2202 movs r2, #2 + 8002418: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 800241c: 687b ldr r3, [r7, #4] + 800241e: 681a ldr r2, [r3, #0] + 8002420: 687b ldr r3, [r7, #4] + 8002422: 3304 adds r3, #4 + 8002424: 4619 mov r1, r3 + 8002426: 4610 mov r0, r2 + 8002428: f000 fa86 bl 8002938 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 800242c: 687b ldr r3, [r7, #4] + 800242e: 2201 movs r2, #1 + 8002430: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8002434: 687b ldr r3, [r7, #4] + 8002436: 2201 movs r2, #1 + 8002438: f883 203a strb.w r2, [r3, #58] @ 0x3a + 800243c: 687b ldr r3, [r7, #4] + 800243e: 2201 movs r2, #1 + 8002440: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002444: 687b ldr r3, [r7, #4] + 8002446: 2201 movs r2, #1 + 8002448: f883 203c strb.w r2, [r3, #60] @ 0x3c + 800244c: 687b ldr r3, [r7, #4] + 800244e: 2201 movs r2, #1 + 8002450: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8002454: 687b ldr r3, [r7, #4] + 8002456: 2201 movs r2, #1 + 8002458: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 800245c: 2300 movs r3, #0 +} + 800245e: 4618 mov r0, r3 + 8002460: 3708 adds r7, #8 + 8002462: 46bd mov sp, r7 + 8002464: bd80 pop {r7, pc} + +08002466 : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 8002466: b580 push {r7, lr} + 8002468: b082 sub sp, #8 + 800246a: af00 add r7, sp, #0 + 800246c: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 800246e: 687b ldr r3, [r7, #4] + 8002470: 2b00 cmp r3, #0 + 8002472: d101 bne.n 8002478 + { + return HAL_ERROR; + 8002474: 2301 movs r3, #1 + 8002476: e031 b.n 80024dc + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8002478: 687b ldr r3, [r7, #4] + 800247a: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 800247e: b2db uxtb r3, r3 + 8002480: 2b00 cmp r3, #0 + 8002482: d106 bne.n 8002492 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8002484: 687b ldr r3, [r7, #4] + 8002486: 2200 movs r2, #0 + 8002488: f883 2038 strb.w r2, [r3, #56] @ 0x38 + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 800248c: 6878 ldr r0, [r7, #4] + 800248e: f000 f829 bl 80024e4 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002492: 687b ldr r3, [r7, #4] + 8002494: 2202 movs r2, #2 + 8002496: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 800249a: 687b ldr r3, [r7, #4] + 800249c: 681a ldr r2, [r3, #0] + 800249e: 687b ldr r3, [r7, #4] + 80024a0: 3304 adds r3, #4 + 80024a2: 4619 mov r1, r3 + 80024a4: 4610 mov r0, r2 + 80024a6: f000 fa47 bl 8002938 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 80024aa: 687b ldr r3, [r7, #4] + 80024ac: 2201 movs r2, #1 + 80024ae: f883 203e strb.w r2, [r3, #62] @ 0x3e + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 80024b2: 687b ldr r3, [r7, #4] + 80024b4: 2201 movs r2, #1 + 80024b6: f883 203a strb.w r2, [r3, #58] @ 0x3a + 80024ba: 687b ldr r3, [r7, #4] + 80024bc: 2201 movs r2, #1 + 80024be: f883 203b strb.w r2, [r3, #59] @ 0x3b + 80024c2: 687b ldr r3, [r7, #4] + 80024c4: 2201 movs r2, #1 + 80024c6: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80024ca: 687b ldr r3, [r7, #4] + 80024cc: 2201 movs r2, #1 + 80024ce: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 80024d2: 687b ldr r3, [r7, #4] + 80024d4: 2201 movs r2, #1 + 80024d6: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + return HAL_OK; + 80024da: 2300 movs r3, #0 +} + 80024dc: 4618 mov r0, r3 + 80024de: 3708 adds r7, #8 + 80024e0: 46bd mov sp, r7 + 80024e2: bd80 pop {r7, pc} + +080024e4 : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 80024e4: b480 push {r7} + 80024e6: b083 sub sp, #12 + 80024e8: af00 add r7, sp, #0 + 80024ea: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 80024ec: bf00 nop + 80024ee: 370c adds r7, #12 + 80024f0: 46bd mov sp, r7 + 80024f2: bc80 pop {r7} + 80024f4: 4770 bx lr + ... + +080024f8 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 80024f8: b580 push {r7, lr} + 80024fa: b084 sub sp, #16 + 80024fc: af00 add r7, sp, #0 + 80024fe: 6078 str r0, [r7, #4] + 8002500: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 8002502: 683b ldr r3, [r7, #0] + 8002504: 2b00 cmp r3, #0 + 8002506: d109 bne.n 800251c + 8002508: 687b ldr r3, [r7, #4] + 800250a: f893 303a ldrb.w r3, [r3, #58] @ 0x3a + 800250e: b2db uxtb r3, r3 + 8002510: 2b01 cmp r3, #1 + 8002512: bf14 ite ne + 8002514: 2301 movne r3, #1 + 8002516: 2300 moveq r3, #0 + 8002518: b2db uxtb r3, r3 + 800251a: e022 b.n 8002562 + 800251c: 683b ldr r3, [r7, #0] + 800251e: 2b04 cmp r3, #4 + 8002520: d109 bne.n 8002536 + 8002522: 687b ldr r3, [r7, #4] + 8002524: f893 303b ldrb.w r3, [r3, #59] @ 0x3b + 8002528: b2db uxtb r3, r3 + 800252a: 2b01 cmp r3, #1 + 800252c: bf14 ite ne + 800252e: 2301 movne r3, #1 + 8002530: 2300 moveq r3, #0 + 8002532: b2db uxtb r3, r3 + 8002534: e015 b.n 8002562 + 8002536: 683b ldr r3, [r7, #0] + 8002538: 2b08 cmp r3, #8 + 800253a: d109 bne.n 8002550 + 800253c: 687b ldr r3, [r7, #4] + 800253e: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8002542: b2db uxtb r3, r3 + 8002544: 2b01 cmp r3, #1 + 8002546: bf14 ite ne + 8002548: 2301 movne r3, #1 + 800254a: 2300 moveq r3, #0 + 800254c: b2db uxtb r3, r3 + 800254e: e008 b.n 8002562 + 8002550: 687b ldr r3, [r7, #4] + 8002552: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8002556: b2db uxtb r3, r3 + 8002558: 2b01 cmp r3, #1 + 800255a: bf14 ite ne + 800255c: 2301 movne r3, #1 + 800255e: 2300 moveq r3, #0 + 8002560: b2db uxtb r3, r3 + 8002562: 2b00 cmp r3, #0 + 8002564: d001 beq.n 800256a + { + return HAL_ERROR; + 8002566: 2301 movs r3, #1 + 8002568: e051 b.n 800260e + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 800256a: 683b ldr r3, [r7, #0] + 800256c: 2b00 cmp r3, #0 + 800256e: d104 bne.n 800257a + 8002570: 687b ldr r3, [r7, #4] + 8002572: 2202 movs r2, #2 + 8002574: f883 203a strb.w r2, [r3, #58] @ 0x3a + 8002578: e013 b.n 80025a2 + 800257a: 683b ldr r3, [r7, #0] + 800257c: 2b04 cmp r3, #4 + 800257e: d104 bne.n 800258a + 8002580: 687b ldr r3, [r7, #4] + 8002582: 2202 movs r2, #2 + 8002584: f883 203b strb.w r2, [r3, #59] @ 0x3b + 8002588: e00b b.n 80025a2 + 800258a: 683b ldr r3, [r7, #0] + 800258c: 2b08 cmp r3, #8 + 800258e: d104 bne.n 800259a + 8002590: 687b ldr r3, [r7, #4] + 8002592: 2202 movs r2, #2 + 8002594: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8002598: e003 b.n 80025a2 + 800259a: 687b ldr r3, [r7, #4] + 800259c: 2202 movs r2, #2 + 800259e: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 80025a2: 687b ldr r3, [r7, #4] + 80025a4: 681b ldr r3, [r3, #0] + 80025a6: 2201 movs r2, #1 + 80025a8: 6839 ldr r1, [r7, #0] + 80025aa: 4618 mov r0, r3 + 80025ac: f000 fbc5 bl 8002d3a + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 80025b0: 687b ldr r3, [r7, #4] + 80025b2: 681b ldr r3, [r3, #0] + 80025b4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80025b8: d00e beq.n 80025d8 + 80025ba: 687b ldr r3, [r7, #4] + 80025bc: 681b ldr r3, [r3, #0] + 80025be: 4a16 ldr r2, [pc, #88] @ (8002618 ) + 80025c0: 4293 cmp r3, r2 + 80025c2: d009 beq.n 80025d8 + 80025c4: 687b ldr r3, [r7, #4] + 80025c6: 681b ldr r3, [r3, #0] + 80025c8: 4a14 ldr r2, [pc, #80] @ (800261c ) + 80025ca: 4293 cmp r3, r2 + 80025cc: d004 beq.n 80025d8 + 80025ce: 687b ldr r3, [r7, #4] + 80025d0: 681b ldr r3, [r3, #0] + 80025d2: 4a13 ldr r2, [pc, #76] @ (8002620 ) + 80025d4: 4293 cmp r3, r2 + 80025d6: d111 bne.n 80025fc + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 80025d8: 687b ldr r3, [r7, #4] + 80025da: 681b ldr r3, [r3, #0] + 80025dc: 689b ldr r3, [r3, #8] + 80025de: f003 0307 and.w r3, r3, #7 + 80025e2: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025e4: 68fb ldr r3, [r7, #12] + 80025e6: 2b06 cmp r3, #6 + 80025e8: d010 beq.n 800260c + { + __HAL_TIM_ENABLE(htim); + 80025ea: 687b ldr r3, [r7, #4] + 80025ec: 681b ldr r3, [r3, #0] + 80025ee: 681a ldr r2, [r3, #0] + 80025f0: 687b ldr r3, [r7, #4] + 80025f2: 681b ldr r3, [r3, #0] + 80025f4: f042 0201 orr.w r2, r2, #1 + 80025f8: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 80025fa: e007 b.n 800260c + } + } + else + { + __HAL_TIM_ENABLE(htim); + 80025fc: 687b ldr r3, [r7, #4] + 80025fe: 681b ldr r3, [r3, #0] + 8002600: 681a ldr r2, [r3, #0] + 8002602: 687b ldr r3, [r7, #4] + 8002604: 681b ldr r3, [r3, #0] + 8002606: f042 0201 orr.w r2, r2, #1 + 800260a: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 800260c: 2300 movs r3, #0 +} + 800260e: 4618 mov r0, r3 + 8002610: 3710 adds r7, #16 + 8002612: 46bd mov sp, r7 + 8002614: bd80 pop {r7, pc} + 8002616: bf00 nop + 8002618: 40000400 .word 0x40000400 + 800261c: 40000800 .word 0x40000800 + 8002620: 40010800 .word 0x40010800 + +08002624 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8002624: b580 push {r7, lr} + 8002626: b086 sub sp, #24 + 8002628: af00 add r7, sp, #0 + 800262a: 60f8 str r0, [r7, #12] + 800262c: 60b9 str r1, [r7, #8] + 800262e: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8002630: 2300 movs r3, #0 + 8002632: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8002634: 68fb ldr r3, [r7, #12] + 8002636: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 800263a: 2b01 cmp r3, #1 + 800263c: d101 bne.n 8002642 + 800263e: 2302 movs r3, #2 + 8002640: e0ae b.n 80027a0 + 8002642: 68fb ldr r3, [r7, #12] + 8002644: 2201 movs r2, #1 + 8002646: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + switch (Channel) + 800264a: 687b ldr r3, [r7, #4] + 800264c: 2b0c cmp r3, #12 + 800264e: f200 809f bhi.w 8002790 + 8002652: a201 add r2, pc, #4 @ (adr r2, 8002658 ) + 8002654: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8002658: 0800268d .word 0x0800268d + 800265c: 08002791 .word 0x08002791 + 8002660: 08002791 .word 0x08002791 + 8002664: 08002791 .word 0x08002791 + 8002668: 080026cd .word 0x080026cd + 800266c: 08002791 .word 0x08002791 + 8002670: 08002791 .word 0x08002791 + 8002674: 08002791 .word 0x08002791 + 8002678: 0800270f .word 0x0800270f + 800267c: 08002791 .word 0x08002791 + 8002680: 08002791 .word 0x08002791 + 8002684: 08002791 .word 0x08002791 + 8002688: 0800274f .word 0x0800274f + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 800268c: 68fb ldr r3, [r7, #12] + 800268e: 681b ldr r3, [r3, #0] + 8002690: 68b9 ldr r1, [r7, #8] + 8002692: 4618 mov r0, r3 + 8002694: f000 f9c6 bl 8002a24 + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 8002698: 68fb ldr r3, [r7, #12] + 800269a: 681b ldr r3, [r3, #0] + 800269c: 699a ldr r2, [r3, #24] + 800269e: 68fb ldr r3, [r7, #12] + 80026a0: 681b ldr r3, [r3, #0] + 80026a2: f042 0208 orr.w r2, r2, #8 + 80026a6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 80026a8: 68fb ldr r3, [r7, #12] + 80026aa: 681b ldr r3, [r3, #0] + 80026ac: 699a ldr r2, [r3, #24] + 80026ae: 68fb ldr r3, [r7, #12] + 80026b0: 681b ldr r3, [r3, #0] + 80026b2: f022 0204 bic.w r2, r2, #4 + 80026b6: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 80026b8: 68fb ldr r3, [r7, #12] + 80026ba: 681b ldr r3, [r3, #0] + 80026bc: 6999 ldr r1, [r3, #24] + 80026be: 68bb ldr r3, [r7, #8] + 80026c0: 68da ldr r2, [r3, #12] + 80026c2: 68fb ldr r3, [r7, #12] + 80026c4: 681b ldr r3, [r3, #0] + 80026c6: 430a orrs r2, r1 + 80026c8: 619a str r2, [r3, #24] + break; + 80026ca: e064 b.n 8002796 + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 80026cc: 68fb ldr r3, [r7, #12] + 80026ce: 681b ldr r3, [r3, #0] + 80026d0: 68b9 ldr r1, [r7, #8] + 80026d2: 4618 mov r0, r3 + 80026d4: f000 f9e2 bl 8002a9c + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 80026d8: 68fb ldr r3, [r7, #12] + 80026da: 681b ldr r3, [r3, #0] + 80026dc: 699a ldr r2, [r3, #24] + 80026de: 68fb ldr r3, [r7, #12] + 80026e0: 681b ldr r3, [r3, #0] + 80026e2: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 80026e6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 80026e8: 68fb ldr r3, [r7, #12] + 80026ea: 681b ldr r3, [r3, #0] + 80026ec: 699a ldr r2, [r3, #24] + 80026ee: 68fb ldr r3, [r7, #12] + 80026f0: 681b ldr r3, [r3, #0] + 80026f2: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80026f6: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 80026f8: 68fb ldr r3, [r7, #12] + 80026fa: 681b ldr r3, [r3, #0] + 80026fc: 6999 ldr r1, [r3, #24] + 80026fe: 68bb ldr r3, [r7, #8] + 8002700: 68db ldr r3, [r3, #12] + 8002702: 021a lsls r2, r3, #8 + 8002704: 68fb ldr r3, [r7, #12] + 8002706: 681b ldr r3, [r3, #0] + 8002708: 430a orrs r2, r1 + 800270a: 619a str r2, [r3, #24] + break; + 800270c: e043 b.n 8002796 + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 800270e: 68fb ldr r3, [r7, #12] + 8002710: 681b ldr r3, [r3, #0] + 8002712: 68b9 ldr r1, [r7, #8] + 8002714: 4618 mov r0, r3 + 8002716: f000 f9ff bl 8002b18 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 800271a: 68fb ldr r3, [r7, #12] + 800271c: 681b ldr r3, [r3, #0] + 800271e: 69da ldr r2, [r3, #28] + 8002720: 68fb ldr r3, [r7, #12] + 8002722: 681b ldr r3, [r3, #0] + 8002724: f042 0208 orr.w r2, r2, #8 + 8002728: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 800272a: 68fb ldr r3, [r7, #12] + 800272c: 681b ldr r3, [r3, #0] + 800272e: 69da ldr r2, [r3, #28] + 8002730: 68fb ldr r3, [r7, #12] + 8002732: 681b ldr r3, [r3, #0] + 8002734: f022 0204 bic.w r2, r2, #4 + 8002738: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 800273a: 68fb ldr r3, [r7, #12] + 800273c: 681b ldr r3, [r3, #0] + 800273e: 69d9 ldr r1, [r3, #28] + 8002740: 68bb ldr r3, [r7, #8] + 8002742: 68da ldr r2, [r3, #12] + 8002744: 68fb ldr r3, [r7, #12] + 8002746: 681b ldr r3, [r3, #0] + 8002748: 430a orrs r2, r1 + 800274a: 61da str r2, [r3, #28] + break; + 800274c: e023 b.n 8002796 + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 800274e: 68fb ldr r3, [r7, #12] + 8002750: 681b ldr r3, [r3, #0] + 8002752: 68b9 ldr r1, [r7, #8] + 8002754: 4618 mov r0, r3 + 8002756: f000 fa1c bl 8002b92 + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 800275a: 68fb ldr r3, [r7, #12] + 800275c: 681b ldr r3, [r3, #0] + 800275e: 69da ldr r2, [r3, #28] + 8002760: 68fb ldr r3, [r7, #12] + 8002762: 681b ldr r3, [r3, #0] + 8002764: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8002768: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 800276a: 68fb ldr r3, [r7, #12] + 800276c: 681b ldr r3, [r3, #0] + 800276e: 69da ldr r2, [r3, #28] + 8002770: 68fb ldr r3, [r7, #12] + 8002772: 681b ldr r3, [r3, #0] + 8002774: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8002778: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 800277a: 68fb ldr r3, [r7, #12] + 800277c: 681b ldr r3, [r3, #0] + 800277e: 69d9 ldr r1, [r3, #28] + 8002780: 68bb ldr r3, [r7, #8] + 8002782: 68db ldr r3, [r3, #12] + 8002784: 021a lsls r2, r3, #8 + 8002786: 68fb ldr r3, [r7, #12] + 8002788: 681b ldr r3, [r3, #0] + 800278a: 430a orrs r2, r1 + 800278c: 61da str r2, [r3, #28] + break; + 800278e: e002 b.n 8002796 + } + + default: + status = HAL_ERROR; + 8002790: 2301 movs r3, #1 + 8002792: 75fb strb r3, [r7, #23] + break; + 8002794: bf00 nop + } + + __HAL_UNLOCK(htim); + 8002796: 68fb ldr r3, [r7, #12] + 8002798: 2200 movs r2, #0 + 800279a: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 800279e: 7dfb ldrb r3, [r7, #23] +} + 80027a0: 4618 mov r0, r3 + 80027a2: 3718 adds r7, #24 + 80027a4: 46bd mov sp, r7 + 80027a6: bd80 pop {r7, pc} + +080027a8 : + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 80027a8: b580 push {r7, lr} + 80027aa: b084 sub sp, #16 + 80027ac: af00 add r7, sp, #0 + 80027ae: 6078 str r0, [r7, #4] + 80027b0: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 80027b2: 2300 movs r3, #0 + 80027b4: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 80027b6: 687b ldr r3, [r7, #4] + 80027b8: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 80027bc: 2b01 cmp r3, #1 + 80027be: d101 bne.n 80027c4 + 80027c0: 2302 movs r3, #2 + 80027c2: e0b4 b.n 800292e + 80027c4: 687b ldr r3, [r7, #4] + 80027c6: 2201 movs r2, #1 + 80027c8: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + htim->State = HAL_TIM_STATE_BUSY; + 80027cc: 687b ldr r3, [r7, #4] + 80027ce: 2202 movs r2, #2 + 80027d0: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 80027d4: 687b ldr r3, [r7, #4] + 80027d6: 681b ldr r3, [r3, #0] + 80027d8: 689b ldr r3, [r3, #8] + 80027da: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 80027dc: 68bb ldr r3, [r7, #8] + 80027de: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80027e2: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80027e4: 68bb ldr r3, [r7, #8] + 80027e6: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80027ea: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 80027ec: 687b ldr r3, [r7, #4] + 80027ee: 681b ldr r3, [r3, #0] + 80027f0: 68ba ldr r2, [r7, #8] + 80027f2: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 80027f4: 683b ldr r3, [r7, #0] + 80027f6: 681b ldr r3, [r3, #0] + 80027f8: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80027fc: d03e beq.n 800287c + 80027fe: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8002802: f200 8087 bhi.w 8002914 + 8002806: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800280a: f000 8086 beq.w 800291a + 800280e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8002812: d87f bhi.n 8002914 + 8002814: 2b70 cmp r3, #112 @ 0x70 + 8002816: d01a beq.n 800284e + 8002818: 2b70 cmp r3, #112 @ 0x70 + 800281a: d87b bhi.n 8002914 + 800281c: 2b60 cmp r3, #96 @ 0x60 + 800281e: d050 beq.n 80028c2 + 8002820: 2b60 cmp r3, #96 @ 0x60 + 8002822: d877 bhi.n 8002914 + 8002824: 2b50 cmp r3, #80 @ 0x50 + 8002826: d03c beq.n 80028a2 + 8002828: 2b50 cmp r3, #80 @ 0x50 + 800282a: d873 bhi.n 8002914 + 800282c: 2b40 cmp r3, #64 @ 0x40 + 800282e: d058 beq.n 80028e2 + 8002830: 2b40 cmp r3, #64 @ 0x40 + 8002832: d86f bhi.n 8002914 + 8002834: 2b30 cmp r3, #48 @ 0x30 + 8002836: d064 beq.n 8002902 + 8002838: 2b30 cmp r3, #48 @ 0x30 + 800283a: d86b bhi.n 8002914 + 800283c: 2b20 cmp r3, #32 + 800283e: d060 beq.n 8002902 + 8002840: 2b20 cmp r3, #32 + 8002842: d867 bhi.n 8002914 + 8002844: 2b00 cmp r3, #0 + 8002846: d05c beq.n 8002902 + 8002848: 2b10 cmp r3, #16 + 800284a: d05a beq.n 8002902 + 800284c: e062 b.n 8002914 + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 800284e: 687b ldr r3, [r7, #4] + 8002850: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002852: 683b ldr r3, [r7, #0] + 8002854: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8002856: 683b ldr r3, [r7, #0] + 8002858: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 800285a: 683b ldr r3, [r7, #0] + 800285c: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800285e: f000 fa4d bl 8002cfc + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 8002862: 687b ldr r3, [r7, #4] + 8002864: 681b ldr r3, [r3, #0] + 8002866: 689b ldr r3, [r3, #8] + 8002868: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 800286a: 68bb ldr r3, [r7, #8] + 800286c: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8002870: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002872: 687b ldr r3, [r7, #4] + 8002874: 681b ldr r3, [r3, #0] + 8002876: 68ba ldr r2, [r7, #8] + 8002878: 609a str r2, [r3, #8] + break; + 800287a: e04f b.n 800291c + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + 800287c: 687b ldr r3, [r7, #4] + 800287e: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8002880: 683b ldr r3, [r7, #0] + 8002882: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8002884: 683b ldr r3, [r7, #0] + 8002886: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8002888: 683b ldr r3, [r7, #0] + 800288a: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800288c: f000 fa36 bl 8002cfc + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 8002890: 687b ldr r3, [r7, #4] + 8002892: 681b ldr r3, [r3, #0] + 8002894: 689a ldr r2, [r3, #8] + 8002896: 687b ldr r3, [r7, #4] + 8002898: 681b ldr r3, [r3, #0] + 800289a: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 800289e: 609a str r2, [r3, #8] + break; + 80028a0: e03c b.n 800291c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80028a2: 687b ldr r3, [r7, #4] + 80028a4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80028a6: 683b ldr r3, [r7, #0] + 80028a8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028aa: 683b ldr r3, [r7, #0] + 80028ac: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80028ae: 461a mov r2, r3 + 80028b0: f000 f9ad bl 8002c0e + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 80028b4: 687b ldr r3, [r7, #4] + 80028b6: 681b ldr r3, [r3, #0] + 80028b8: 2150 movs r1, #80 @ 0x50 + 80028ba: 4618 mov r0, r3 + 80028bc: f000 fa04 bl 8002cc8 + break; + 80028c0: e02c b.n 800291c + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + 80028c2: 687b ldr r3, [r7, #4] + 80028c4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80028c6: 683b ldr r3, [r7, #0] + 80028c8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028ca: 683b ldr r3, [r7, #0] + 80028cc: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 80028ce: 461a mov r2, r3 + 80028d0: f000 f9cb bl 8002c6a + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 80028d4: 687b ldr r3, [r7, #4] + 80028d6: 681b ldr r3, [r3, #0] + 80028d8: 2160 movs r1, #96 @ 0x60 + 80028da: 4618 mov r0, r3 + 80028dc: f000 f9f4 bl 8002cc8 + break; + 80028e0: e01c b.n 800291c + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + 80028e2: 687b ldr r3, [r7, #4] + 80028e4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80028e6: 683b ldr r3, [r7, #0] + 80028e8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80028ea: 683b ldr r3, [r7, #0] + 80028ec: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80028ee: 461a mov r2, r3 + 80028f0: f000 f98d bl 8002c0e + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 80028f4: 687b ldr r3, [r7, #4] + 80028f6: 681b ldr r3, [r3, #0] + 80028f8: 2140 movs r1, #64 @ 0x40 + 80028fa: 4618 mov r0, r3 + 80028fc: f000 f9e4 bl 8002cc8 + break; + 8002900: e00c b.n 800291c + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + 8002902: 687b ldr r3, [r7, #4] + 8002904: 681a ldr r2, [r3, #0] + 8002906: 683b ldr r3, [r7, #0] + 8002908: 681b ldr r3, [r3, #0] + 800290a: 4619 mov r1, r3 + 800290c: 4610 mov r0, r2 + 800290e: f000 f9db bl 8002cc8 + break; + 8002912: e003 b.n 800291c + } + + default: + status = HAL_ERROR; + 8002914: 2301 movs r3, #1 + 8002916: 73fb strb r3, [r7, #15] + break; + 8002918: e000 b.n 800291c + break; + 800291a: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 800291c: 687b ldr r3, [r7, #4] + 800291e: 2201 movs r2, #1 + 8002920: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002924: 687b ldr r3, [r7, #4] + 8002926: 2200 movs r2, #0 + 8002928: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return status; + 800292c: 7bfb ldrb r3, [r7, #15] +} + 800292e: 4618 mov r0, r3 + 8002930: 3710 adds r7, #16 + 8002932: 46bd mov sp, r7 + 8002934: bd80 pop {r7, pc} + ... + +08002938 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 8002938: b480 push {r7} + 800293a: b085 sub sp, #20 + 800293c: af00 add r7, sp, #0 + 800293e: 6078 str r0, [r7, #4] + 8002940: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 8002942: 687b ldr r3, [r7, #4] + 8002944: 681b ldr r3, [r3, #0] + 8002946: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 8002948: 687b ldr r3, [r7, #4] + 800294a: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800294e: d00f beq.n 8002970 + 8002950: 687b ldr r3, [r7, #4] + 8002952: 4a2e ldr r2, [pc, #184] @ (8002a0c ) + 8002954: 4293 cmp r3, r2 + 8002956: d00b beq.n 8002970 + 8002958: 687b ldr r3, [r7, #4] + 800295a: 4a2d ldr r2, [pc, #180] @ (8002a10 ) + 800295c: 4293 cmp r3, r2 + 800295e: d007 beq.n 8002970 + 8002960: 687b ldr r3, [r7, #4] + 8002962: 4a2c ldr r2, [pc, #176] @ (8002a14 ) + 8002964: 4293 cmp r3, r2 + 8002966: d003 beq.n 8002970 + 8002968: 687b ldr r3, [r7, #4] + 800296a: 4a2b ldr r2, [pc, #172] @ (8002a18 ) + 800296c: 4293 cmp r3, r2 + 800296e: d108 bne.n 8002982 + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 8002970: 68fb ldr r3, [r7, #12] + 8002972: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002976: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 8002978: 683b ldr r3, [r7, #0] + 800297a: 685b ldr r3, [r3, #4] + 800297c: 68fa ldr r2, [r7, #12] + 800297e: 4313 orrs r3, r2 + 8002980: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8002982: 687b ldr r3, [r7, #4] + 8002984: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002988: d017 beq.n 80029ba + 800298a: 687b ldr r3, [r7, #4] + 800298c: 4a1f ldr r2, [pc, #124] @ (8002a0c ) + 800298e: 4293 cmp r3, r2 + 8002990: d013 beq.n 80029ba + 8002992: 687b ldr r3, [r7, #4] + 8002994: 4a1e ldr r2, [pc, #120] @ (8002a10 ) + 8002996: 4293 cmp r3, r2 + 8002998: d00f beq.n 80029ba + 800299a: 687b ldr r3, [r7, #4] + 800299c: 4a1d ldr r2, [pc, #116] @ (8002a14 ) + 800299e: 4293 cmp r3, r2 + 80029a0: d00b beq.n 80029ba + 80029a2: 687b ldr r3, [r7, #4] + 80029a4: 4a1c ldr r2, [pc, #112] @ (8002a18 ) + 80029a6: 4293 cmp r3, r2 + 80029a8: d007 beq.n 80029ba + 80029aa: 687b ldr r3, [r7, #4] + 80029ac: 4a1b ldr r2, [pc, #108] @ (8002a1c ) + 80029ae: 4293 cmp r3, r2 + 80029b0: d003 beq.n 80029ba + 80029b2: 687b ldr r3, [r7, #4] + 80029b4: 4a1a ldr r2, [pc, #104] @ (8002a20 ) + 80029b6: 4293 cmp r3, r2 + 80029b8: d108 bne.n 80029cc + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 80029ba: 68fb ldr r3, [r7, #12] + 80029bc: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80029c0: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 80029c2: 683b ldr r3, [r7, #0] + 80029c4: 68db ldr r3, [r3, #12] + 80029c6: 68fa ldr r2, [r7, #12] + 80029c8: 4313 orrs r3, r2 + 80029ca: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 80029cc: 68fb ldr r3, [r7, #12] + 80029ce: f023 0280 bic.w r2, r3, #128 @ 0x80 + 80029d2: 683b ldr r3, [r7, #0] + 80029d4: 691b ldr r3, [r3, #16] + 80029d6: 4313 orrs r3, r2 + 80029d8: 60fb str r3, [r7, #12] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 80029da: 683b ldr r3, [r7, #0] + 80029dc: 689a ldr r2, [r3, #8] + 80029de: 687b ldr r3, [r7, #4] + 80029e0: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 80029e2: 683b ldr r3, [r7, #0] + 80029e4: 681a ldr r2, [r3, #0] + 80029e6: 687b ldr r3, [r7, #4] + 80029e8: 629a str r2, [r3, #40] @ 0x28 + + /* Disable Update Event (UEV) with Update Generation (UG) + by changing Update Request Source (URS) to avoid Update flag (UIF) */ + SET_BIT(TIMx->CR1, TIM_CR1_URS); + 80029ea: 687b ldr r3, [r7, #4] + 80029ec: 681b ldr r3, [r3, #0] + 80029ee: f043 0204 orr.w r2, r3, #4 + 80029f2: 687b ldr r3, [r7, #4] + 80029f4: 601a str r2, [r3, #0] + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 80029f6: 687b ldr r3, [r7, #4] + 80029f8: 2201 movs r2, #1 + 80029fa: 615a str r2, [r3, #20] + + TIMx->CR1 = tmpcr1; + 80029fc: 687b ldr r3, [r7, #4] + 80029fe: 68fa ldr r2, [r7, #12] + 8002a00: 601a str r2, [r3, #0] +} + 8002a02: bf00 nop + 8002a04: 3714 adds r7, #20 + 8002a06: 46bd mov sp, r7 + 8002a08: bc80 pop {r7} + 8002a0a: 4770 bx lr + 8002a0c: 40000400 .word 0x40000400 + 8002a10: 40000800 .word 0x40000800 + 8002a14: 40000c00 .word 0x40000c00 + 8002a18: 40010800 .word 0x40010800 + 8002a1c: 40010c00 .word 0x40010c00 + 8002a20: 40011000 .word 0x40011000 + +08002a24 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002a24: b480 push {r7} + 8002a26: b087 sub sp, #28 + 8002a28: af00 add r7, sp, #0 + 8002a2a: 6078 str r0, [r7, #4] + 8002a2c: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002a2e: 687b ldr r3, [r7, #4] + 8002a30: 6a1b ldr r3, [r3, #32] + 8002a32: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002a34: 687b ldr r3, [r7, #4] + 8002a36: 6a1b ldr r3, [r3, #32] + 8002a38: f023 0201 bic.w r2, r3, #1 + 8002a3c: 687b ldr r3, [r7, #4] + 8002a3e: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002a40: 687b ldr r3, [r7, #4] + 8002a42: 685b ldr r3, [r3, #4] + 8002a44: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002a46: 687b ldr r3, [r7, #4] + 8002a48: 699b ldr r3, [r3, #24] + 8002a4a: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 8002a4c: 68fb ldr r3, [r7, #12] + 8002a4e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002a52: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8002a54: 68fb ldr r3, [r7, #12] + 8002a56: f023 0303 bic.w r3, r3, #3 + 8002a5a: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002a5c: 683b ldr r3, [r7, #0] + 8002a5e: 681b ldr r3, [r3, #0] + 8002a60: 68fa ldr r2, [r7, #12] + 8002a62: 4313 orrs r3, r2 + 8002a64: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8002a66: 697b ldr r3, [r7, #20] + 8002a68: f023 0302 bic.w r3, r3, #2 + 8002a6c: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8002a6e: 683b ldr r3, [r7, #0] + 8002a70: 689b ldr r3, [r3, #8] + 8002a72: 697a ldr r2, [r7, #20] + 8002a74: 4313 orrs r3, r2 + 8002a76: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002a78: 687b ldr r3, [r7, #4] + 8002a7a: 693a ldr r2, [r7, #16] + 8002a7c: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002a7e: 687b ldr r3, [r7, #4] + 8002a80: 68fa ldr r2, [r7, #12] + 8002a82: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 8002a84: 683b ldr r3, [r7, #0] + 8002a86: 685a ldr r2, [r3, #4] + 8002a88: 687b ldr r3, [r7, #4] + 8002a8a: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002a8c: 687b ldr r3, [r7, #4] + 8002a8e: 697a ldr r2, [r7, #20] + 8002a90: 621a str r2, [r3, #32] +} + 8002a92: bf00 nop + 8002a94: 371c adds r7, #28 + 8002a96: 46bd mov sp, r7 + 8002a98: bc80 pop {r7} + 8002a9a: 4770 bx lr + +08002a9c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002a9c: b480 push {r7} + 8002a9e: b087 sub sp, #28 + 8002aa0: af00 add r7, sp, #0 + 8002aa2: 6078 str r0, [r7, #4] + 8002aa4: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002aa6: 687b ldr r3, [r7, #4] + 8002aa8: 6a1b ldr r3, [r3, #32] + 8002aaa: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002aac: 687b ldr r3, [r7, #4] + 8002aae: 6a1b ldr r3, [r3, #32] + 8002ab0: f023 0210 bic.w r2, r3, #16 + 8002ab4: 687b ldr r3, [r7, #4] + 8002ab6: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002ab8: 687b ldr r3, [r7, #4] + 8002aba: 685b ldr r3, [r3, #4] + 8002abc: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8002abe: 687b ldr r3, [r7, #4] + 8002ac0: 699b ldr r3, [r3, #24] + 8002ac2: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 8002ac4: 68fb ldr r3, [r7, #12] + 8002ac6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002aca: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8002acc: 68fb ldr r3, [r7, #12] + 8002ace: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002ad2: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002ad4: 683b ldr r3, [r7, #0] + 8002ad6: 681b ldr r3, [r3, #0] + 8002ad8: 021b lsls r3, r3, #8 + 8002ada: 68fa ldr r2, [r7, #12] + 8002adc: 4313 orrs r3, r2 + 8002ade: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8002ae0: 697b ldr r3, [r7, #20] + 8002ae2: f023 0320 bic.w r3, r3, #32 + 8002ae6: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8002ae8: 683b ldr r3, [r7, #0] + 8002aea: 689b ldr r3, [r3, #8] + 8002aec: 011b lsls r3, r3, #4 + 8002aee: 697a ldr r2, [r7, #20] + 8002af0: 4313 orrs r3, r2 + 8002af2: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002af4: 687b ldr r3, [r7, #4] + 8002af6: 693a ldr r2, [r7, #16] + 8002af8: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8002afa: 687b ldr r3, [r7, #4] + 8002afc: 68fa ldr r2, [r7, #12] + 8002afe: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8002b00: 683b ldr r3, [r7, #0] + 8002b02: 685a ldr r2, [r3, #4] + 8002b04: 687b ldr r3, [r7, #4] + 8002b06: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002b08: 687b ldr r3, [r7, #4] + 8002b0a: 697a ldr r2, [r7, #20] + 8002b0c: 621a str r2, [r3, #32] +} + 8002b0e: bf00 nop + 8002b10: 371c adds r7, #28 + 8002b12: 46bd mov sp, r7 + 8002b14: bc80 pop {r7} + 8002b16: 4770 bx lr + +08002b18 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002b18: b480 push {r7} + 8002b1a: b087 sub sp, #28 + 8002b1c: af00 add r7, sp, #0 + 8002b1e: 6078 str r0, [r7, #4] + 8002b20: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002b22: 687b ldr r3, [r7, #4] + 8002b24: 6a1b ldr r3, [r3, #32] + 8002b26: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8002b28: 687b ldr r3, [r7, #4] + 8002b2a: 6a1b ldr r3, [r3, #32] + 8002b2c: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8002b30: 687b ldr r3, [r7, #4] + 8002b32: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002b34: 687b ldr r3, [r7, #4] + 8002b36: 685b ldr r3, [r3, #4] + 8002b38: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002b3a: 687b ldr r3, [r7, #4] + 8002b3c: 69db ldr r3, [r3, #28] + 8002b3e: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8002b40: 68fb ldr r3, [r7, #12] + 8002b42: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002b46: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 8002b48: 68fb ldr r3, [r7, #12] + 8002b4a: f023 0303 bic.w r3, r3, #3 + 8002b4e: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8002b50: 683b ldr r3, [r7, #0] + 8002b52: 681b ldr r3, [r3, #0] + 8002b54: 68fa ldr r2, [r7, #12] + 8002b56: 4313 orrs r3, r2 + 8002b58: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8002b5a: 697b ldr r3, [r7, #20] + 8002b5c: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8002b60: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 8002b62: 683b ldr r3, [r7, #0] + 8002b64: 689b ldr r3, [r3, #8] + 8002b66: 021b lsls r3, r3, #8 + 8002b68: 697a ldr r2, [r7, #20] + 8002b6a: 4313 orrs r3, r2 + 8002b6c: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002b6e: 687b ldr r3, [r7, #4] + 8002b70: 693a ldr r2, [r7, #16] + 8002b72: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002b74: 687b ldr r3, [r7, #4] + 8002b76: 68fa ldr r2, [r7, #12] + 8002b78: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8002b7a: 683b ldr r3, [r7, #0] + 8002b7c: 685a ldr r2, [r3, #4] + 8002b7e: 687b ldr r3, [r7, #4] + 8002b80: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002b82: 687b ldr r3, [r7, #4] + 8002b84: 697a ldr r2, [r7, #20] + 8002b86: 621a str r2, [r3, #32] +} + 8002b88: bf00 nop + 8002b8a: 371c adds r7, #28 + 8002b8c: 46bd mov sp, r7 + 8002b8e: bc80 pop {r7} + 8002b90: 4770 bx lr + +08002b92 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8002b92: b480 push {r7} + 8002b94: b087 sub sp, #28 + 8002b96: af00 add r7, sp, #0 + 8002b98: 6078 str r0, [r7, #4] + 8002b9a: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8002b9c: 687b ldr r3, [r7, #4] + 8002b9e: 6a1b ldr r3, [r3, #32] + 8002ba0: 617b str r3, [r7, #20] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8002ba2: 687b ldr r3, [r7, #4] + 8002ba4: 6a1b ldr r3, [r3, #32] + 8002ba6: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8002baa: 687b ldr r3, [r7, #4] + 8002bac: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8002bae: 687b ldr r3, [r7, #4] + 8002bb0: 685b ldr r3, [r3, #4] + 8002bb2: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8002bb4: 687b ldr r3, [r7, #4] + 8002bb6: 69db ldr r3, [r3, #28] + 8002bb8: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8002bba: 68fb ldr r3, [r7, #12] + 8002bbc: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002bc0: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8002bc2: 68fb ldr r3, [r7, #12] + 8002bc4: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8002bc8: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8002bca: 683b ldr r3, [r7, #0] + 8002bcc: 681b ldr r3, [r3, #0] + 8002bce: 021b lsls r3, r3, #8 + 8002bd0: 68fa ldr r2, [r7, #12] + 8002bd2: 4313 orrs r3, r2 + 8002bd4: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8002bd6: 697b ldr r3, [r7, #20] + 8002bd8: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8002bdc: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8002bde: 683b ldr r3, [r7, #0] + 8002be0: 689b ldr r3, [r3, #8] + 8002be2: 031b lsls r3, r3, #12 + 8002be4: 697a ldr r2, [r7, #20] + 8002be6: 4313 orrs r3, r2 + 8002be8: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8002bea: 687b ldr r3, [r7, #4] + 8002bec: 693a ldr r2, [r7, #16] + 8002bee: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8002bf0: 687b ldr r3, [r7, #4] + 8002bf2: 68fa ldr r2, [r7, #12] + 8002bf4: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 8002bf6: 683b ldr r3, [r7, #0] + 8002bf8: 685a ldr r2, [r3, #4] + 8002bfa: 687b ldr r3, [r7, #4] + 8002bfc: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8002bfe: 687b ldr r3, [r7, #4] + 8002c00: 697a ldr r2, [r7, #20] + 8002c02: 621a str r2, [r3, #32] +} + 8002c04: bf00 nop + 8002c06: 371c adds r7, #28 + 8002c08: 46bd mov sp, r7 + 8002c0a: bc80 pop {r7} + 8002c0c: 4770 bx lr + +08002c0e : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002c0e: b480 push {r7} + 8002c10: b087 sub sp, #28 + 8002c12: af00 add r7, sp, #0 + 8002c14: 60f8 str r0, [r7, #12] + 8002c16: 60b9 str r1, [r7, #8] + 8002c18: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8002c1a: 68fb ldr r3, [r7, #12] + 8002c1c: 6a1b ldr r3, [r3, #32] + 8002c1e: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8002c20: 68fb ldr r3, [r7, #12] + 8002c22: 6a1b ldr r3, [r3, #32] + 8002c24: f023 0201 bic.w r2, r3, #1 + 8002c28: 68fb ldr r3, [r7, #12] + 8002c2a: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002c2c: 68fb ldr r3, [r7, #12] + 8002c2e: 699b ldr r3, [r3, #24] + 8002c30: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8002c32: 693b ldr r3, [r7, #16] + 8002c34: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8002c38: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8002c3a: 687b ldr r3, [r7, #4] + 8002c3c: 011b lsls r3, r3, #4 + 8002c3e: 693a ldr r2, [r7, #16] + 8002c40: 4313 orrs r3, r2 + 8002c42: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8002c44: 697b ldr r3, [r7, #20] + 8002c46: f023 030a bic.w r3, r3, #10 + 8002c4a: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8002c4c: 697a ldr r2, [r7, #20] + 8002c4e: 68bb ldr r3, [r7, #8] + 8002c50: 4313 orrs r3, r2 + 8002c52: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8002c54: 68fb ldr r3, [r7, #12] + 8002c56: 693a ldr r2, [r7, #16] + 8002c58: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002c5a: 68fb ldr r3, [r7, #12] + 8002c5c: 697a ldr r2, [r7, #20] + 8002c5e: 621a str r2, [r3, #32] +} + 8002c60: bf00 nop + 8002c62: 371c adds r7, #28 + 8002c64: 46bd mov sp, r7 + 8002c66: bc80 pop {r7} + 8002c68: 4770 bx lr + +08002c6a : + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + 8002c6a: b480 push {r7} + 8002c6c: b087 sub sp, #28 + 8002c6e: af00 add r7, sp, #0 + 8002c70: 60f8 str r0, [r7, #12] + 8002c72: 60b9 str r1, [r7, #8] + 8002c74: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 8002c76: 68fb ldr r3, [r7, #12] + 8002c78: 6a1b ldr r3, [r3, #32] + 8002c7a: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8002c7c: 68fb ldr r3, [r7, #12] + 8002c7e: 6a1b ldr r3, [r3, #32] + 8002c80: f023 0210 bic.w r2, r3, #16 + 8002c84: 68fb ldr r3, [r7, #12] + 8002c86: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8002c88: 68fb ldr r3, [r7, #12] + 8002c8a: 699b ldr r3, [r3, #24] + 8002c8c: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8002c8e: 693b ldr r3, [r7, #16] + 8002c90: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 8002c94: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 8002c96: 687b ldr r3, [r7, #4] + 8002c98: 031b lsls r3, r3, #12 + 8002c9a: 693a ldr r2, [r7, #16] + 8002c9c: 4313 orrs r3, r2 + 8002c9e: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8002ca0: 697b ldr r3, [r7, #20] + 8002ca2: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8002ca6: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8002ca8: 68bb ldr r3, [r7, #8] + 8002caa: 011b lsls r3, r3, #4 + 8002cac: 697a ldr r2, [r7, #20] + 8002cae: 4313 orrs r3, r2 + 8002cb0: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8002cb2: 68fb ldr r3, [r7, #12] + 8002cb4: 693a ldr r2, [r7, #16] + 8002cb6: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8002cb8: 68fb ldr r3, [r7, #12] + 8002cba: 697a ldr r2, [r7, #20] + 8002cbc: 621a str r2, [r3, #32] +} + 8002cbe: bf00 nop + 8002cc0: 371c adds r7, #28 + 8002cc2: 46bd mov sp, r7 + 8002cc4: bc80 pop {r7} + 8002cc6: 4770 bx lr + +08002cc8 : + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + 8002cc8: b480 push {r7} + 8002cca: b085 sub sp, #20 + 8002ccc: af00 add r7, sp, #0 + 8002cce: 6078 str r0, [r7, #4] + 8002cd0: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 8002cd2: 687b ldr r3, [r7, #4] + 8002cd4: 689b ldr r3, [r3, #8] + 8002cd6: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8002cd8: 68fb ldr r3, [r7, #12] + 8002cda: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002cde: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8002ce0: 683a ldr r2, [r7, #0] + 8002ce2: 68fb ldr r3, [r7, #12] + 8002ce4: 4313 orrs r3, r2 + 8002ce6: f043 0307 orr.w r3, r3, #7 + 8002cea: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002cec: 687b ldr r3, [r7, #4] + 8002cee: 68fa ldr r2, [r7, #12] + 8002cf0: 609a str r2, [r3, #8] +} + 8002cf2: bf00 nop + 8002cf4: 3714 adds r7, #20 + 8002cf6: 46bd mov sp, r7 + 8002cf8: bc80 pop {r7} + 8002cfa: 4770 bx lr + +08002cfc : + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + 8002cfc: b480 push {r7} + 8002cfe: b087 sub sp, #28 + 8002d00: af00 add r7, sp, #0 + 8002d02: 60f8 str r0, [r7, #12] + 8002d04: 60b9 str r1, [r7, #8] + 8002d06: 607a str r2, [r7, #4] + 8002d08: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8002d0a: 68fb ldr r3, [r7, #12] + 8002d0c: 689b ldr r3, [r3, #8] + 8002d0e: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8002d10: 697b ldr r3, [r7, #20] + 8002d12: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8002d16: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8002d18: 683b ldr r3, [r7, #0] + 8002d1a: 021a lsls r2, r3, #8 + 8002d1c: 687b ldr r3, [r7, #4] + 8002d1e: 431a orrs r2, r3 + 8002d20: 68bb ldr r3, [r7, #8] + 8002d22: 4313 orrs r3, r2 + 8002d24: 697a ldr r2, [r7, #20] + 8002d26: 4313 orrs r3, r2 + 8002d28: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8002d2a: 68fb ldr r3, [r7, #12] + 8002d2c: 697a ldr r2, [r7, #20] + 8002d2e: 609a str r2, [r3, #8] +} + 8002d30: bf00 nop + 8002d32: 371c adds r7, #28 + 8002d34: 46bd mov sp, r7 + 8002d36: bc80 pop {r7} + 8002d38: 4770 bx lr + +08002d3a : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8002d3a: b480 push {r7} + 8002d3c: b087 sub sp, #28 + 8002d3e: af00 add r7, sp, #0 + 8002d40: 60f8 str r0, [r7, #12] + 8002d42: 60b9 str r1, [r7, #8] + 8002d44: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 8002d46: 68bb ldr r3, [r7, #8] + 8002d48: f003 031f and.w r3, r3, #31 + 8002d4c: 2201 movs r2, #1 + 8002d4e: fa02 f303 lsl.w r3, r2, r3 + 8002d52: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 8002d54: 68fb ldr r3, [r7, #12] + 8002d56: 6a1a ldr r2, [r3, #32] + 8002d58: 697b ldr r3, [r7, #20] + 8002d5a: 43db mvns r3, r3 + 8002d5c: 401a ands r2, r3 + 8002d5e: 68fb ldr r3, [r7, #12] + 8002d60: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8002d62: 68fb ldr r3, [r7, #12] + 8002d64: 6a1a ldr r2, [r3, #32] + 8002d66: 68bb ldr r3, [r7, #8] + 8002d68: f003 031f and.w r3, r3, #31 + 8002d6c: 6879 ldr r1, [r7, #4] + 8002d6e: fa01 f303 lsl.w r3, r1, r3 + 8002d72: 431a orrs r2, r3 + 8002d74: 68fb ldr r3, [r7, #12] + 8002d76: 621a str r2, [r3, #32] +} + 8002d78: bf00 nop + 8002d7a: 371c adds r7, #28 + 8002d7c: 46bd mov sp, r7 + 8002d7e: bc80 pop {r7} + 8002d80: 4770 bx lr + ... + +08002d84 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8002d84: b480 push {r7} + 8002d86: b085 sub sp, #20 + 8002d88: af00 add r7, sp, #0 + 8002d8a: 6078 str r0, [r7, #4] + 8002d8c: 6039 str r1, [r7, #0] + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + 8002d8e: 687b ldr r3, [r7, #4] + 8002d90: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8002d94: 2b01 cmp r3, #1 + 8002d96: d101 bne.n 8002d9c + 8002d98: 2302 movs r3, #2 + 8002d9a: e046 b.n 8002e2a + 8002d9c: 687b ldr r3, [r7, #4] + 8002d9e: 2201 movs r2, #1 + 8002da0: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8002da4: 687b ldr r3, [r7, #4] + 8002da6: 2202 movs r2, #2 + 8002da8: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8002dac: 687b ldr r3, [r7, #4] + 8002dae: 681b ldr r3, [r3, #0] + 8002db0: 685b ldr r3, [r3, #4] + 8002db2: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8002db4: 687b ldr r3, [r7, #4] + 8002db6: 681b ldr r3, [r3, #0] + 8002db8: 689b ldr r3, [r3, #8] + 8002dba: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8002dbc: 68fb ldr r3, [r7, #12] + 8002dbe: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002dc2: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8002dc4: 683b ldr r3, [r7, #0] + 8002dc6: 681b ldr r3, [r3, #0] + 8002dc8: 68fa ldr r2, [r7, #12] + 8002dca: 4313 orrs r3, r2 + 8002dcc: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8002dce: 687b ldr r3, [r7, #4] + 8002dd0: 681b ldr r3, [r3, #0] + 8002dd2: 68fa ldr r2, [r7, #12] + 8002dd4: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8002dd6: 687b ldr r3, [r7, #4] + 8002dd8: 681b ldr r3, [r3, #0] + 8002dda: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8002dde: d00e beq.n 8002dfe + 8002de0: 687b ldr r3, [r7, #4] + 8002de2: 681b ldr r3, [r3, #0] + 8002de4: 4a13 ldr r2, [pc, #76] @ (8002e34 ) + 8002de6: 4293 cmp r3, r2 + 8002de8: d009 beq.n 8002dfe + 8002dea: 687b ldr r3, [r7, #4] + 8002dec: 681b ldr r3, [r3, #0] + 8002dee: 4a12 ldr r2, [pc, #72] @ (8002e38 ) + 8002df0: 4293 cmp r3, r2 + 8002df2: d004 beq.n 8002dfe + 8002df4: 687b ldr r3, [r7, #4] + 8002df6: 681b ldr r3, [r3, #0] + 8002df8: 4a10 ldr r2, [pc, #64] @ (8002e3c ) + 8002dfa: 4293 cmp r3, r2 + 8002dfc: d10c bne.n 8002e18 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8002dfe: 68bb ldr r3, [r7, #8] + 8002e00: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8002e04: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 8002e06: 683b ldr r3, [r7, #0] + 8002e08: 685b ldr r3, [r3, #4] + 8002e0a: 68ba ldr r2, [r7, #8] + 8002e0c: 4313 orrs r3, r2 + 8002e0e: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8002e10: 687b ldr r3, [r7, #4] + 8002e12: 681b ldr r3, [r3, #0] + 8002e14: 68ba ldr r2, [r7, #8] + 8002e16: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8002e18: 687b ldr r3, [r7, #4] + 8002e1a: 2201 movs r2, #1 + 8002e1c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + + __HAL_UNLOCK(htim); + 8002e20: 687b ldr r3, [r7, #4] + 8002e22: 2200 movs r2, #0 + 8002e24: f883 2038 strb.w r2, [r3, #56] @ 0x38 + + return HAL_OK; + 8002e28: 2300 movs r3, #0 +} + 8002e2a: 4618 mov r0, r3 + 8002e2c: 3714 adds r7, #20 + 8002e2e: 46bd mov sp, r7 + 8002e30: bc80 pop {r7} + 8002e32: 4770 bx lr + 8002e34: 40000400 .word 0x40000400 + 8002e38: 40000800 .word 0x40000800 + 8002e3c: 40010800 .word 0x40010800 + +08002e40 : + 8002e40: 4603 mov r3, r0 + 8002e42: 4402 add r2, r0 + 8002e44: 4293 cmp r3, r2 + 8002e46: d100 bne.n 8002e4a + 8002e48: 4770 bx lr + 8002e4a: f803 1b01 strb.w r1, [r3], #1 + 8002e4e: e7f9 b.n 8002e44 + +08002e50 <__libc_init_array>: + 8002e50: b570 push {r4, r5, r6, lr} + 8002e52: 2600 movs r6, #0 + 8002e54: 4d0c ldr r5, [pc, #48] @ (8002e88 <__libc_init_array+0x38>) + 8002e56: 4c0d ldr r4, [pc, #52] @ (8002e8c <__libc_init_array+0x3c>) + 8002e58: 1b64 subs r4, r4, r5 + 8002e5a: 10a4 asrs r4, r4, #2 + 8002e5c: 42a6 cmp r6, r4 + 8002e5e: d109 bne.n 8002e74 <__libc_init_array+0x24> + 8002e60: f000 f81a bl 8002e98 <_init> + 8002e64: 2600 movs r6, #0 + 8002e66: 4d0a ldr r5, [pc, #40] @ (8002e90 <__libc_init_array+0x40>) + 8002e68: 4c0a ldr r4, [pc, #40] @ (8002e94 <__libc_init_array+0x44>) + 8002e6a: 1b64 subs r4, r4, r5 + 8002e6c: 10a4 asrs r4, r4, #2 + 8002e6e: 42a6 cmp r6, r4 + 8002e70: d105 bne.n 8002e7e <__libc_init_array+0x2e> + 8002e72: bd70 pop {r4, r5, r6, pc} + 8002e74: f855 3b04 ldr.w r3, [r5], #4 + 8002e78: 4798 blx r3 + 8002e7a: 3601 adds r6, #1 + 8002e7c: e7ee b.n 8002e5c <__libc_init_array+0xc> + 8002e7e: f855 3b04 ldr.w r3, [r5], #4 + 8002e82: 4798 blx r3 + 8002e84: 3601 adds r6, #1 + 8002e86: e7f2 b.n 8002e6e <__libc_init_array+0x1e> + 8002e88: 08002ef4 .word 0x08002ef4 + 8002e8c: 08002ef4 .word 0x08002ef4 + 8002e90: 08002ef4 .word 0x08002ef4 + 8002e94: 08002ef8 .word 0x08002ef8 + +08002e98 <_init>: + 8002e98: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002e9a: bf00 nop + 8002e9c: bcf8 pop {r3, r4, r5, r6, r7} + 8002e9e: bc08 pop {r3} + 8002ea0: 469e mov lr, r3 + 8002ea2: 4770 bx lr + +08002ea4 <_fini>: + 8002ea4: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002ea6: bf00 nop + 8002ea8: bcf8 pop {r3, r4, r5, r6, r7} + 8002eaa: bc08 pop {r3} + 8002eac: 469e mov lr, r3 + 8002eae: 4770 bx lr diff --git a/TP4_INIT_TFT/Debug/TP4_MELODIE.map b/TP4_INIT_TFT/Debug/TP4_MELODIE.map new file mode 100644 index 0000000..ab44bd7 --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP4_MELODIE.map @@ -0,0 +1,3415 @@ +Archive member included to satisfy reference by file (symbol) + +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) (_impure_ptr) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_malloc_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (_fflush_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (__malloc_lock) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) (__sread) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_lseek_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_read_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_write_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) (_close_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) (errno) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) (_free_r) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o (__aeabi_uldivmod) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32l1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x30 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32l1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x10f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe49 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x11f ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x5b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xe37 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x35b ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xc5 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x21e ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x236 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x115 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x567 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x225 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x788 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0xac ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x170 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00000000 0x492 ./Core/Src/stm32l1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x845 ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9994 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x00000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x00000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x00000000 0x168 ./Core/Src/sysmem.o + .debug_abbrev 0x00000000 0xbc ./Core/Src/sysmem.o + .debug_aranges + 0x00000000 0x20 ./Core/Src/sysmem.o + .debug_rnglists + 0x00000000 0x13 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x00000000 0x521 ./Core/Src/sysmem.o + .debug_str 0x00000000 0x7732 ./Core/Src/sysmem.o + .comment 0x00000000 0x44 ./Core/Src/sysmem.o + .debug_frame 0x00000000 0x34 ./Core/Src/sysmem.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32l1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32l1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0x154 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe49 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x11f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xb7a1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x10f ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x34e1 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x5b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xe37 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x35b ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1b8 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xc5 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x21e ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x236 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x115 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x567 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x1e9 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x225 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x788 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0xac ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x170 ./Core/Src/system_stm32l1xx.o + .debug_macro 0x00000000 0x492 ./Core/Src/system_stm32l1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32l152retx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32l152retx.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/7Seg_MAX7219/max7219.o + .text 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .data 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .bss 0x00000000 0x0 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_ShutdownStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayTestStart + 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOff + 0x00000000 0x2c ./Drivers/7Seg_MAX7219/max7219.o + .text.MAX7219_DisplayCharPointOn + 0x00000000 0x34 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xacc ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x2e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x8e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x51 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x103 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6a ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1df ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1c ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xbd ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe49 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x11f ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x6d ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x34e1 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x190 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x5b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xe37 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x35b ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1b8 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xc5 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x21e ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x236 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x115 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x567 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x22 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x225 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x788 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0xac ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x170 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x492 ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x00000000 0x10 ./Drivers/7Seg_MAX7219/max7219.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x00000000 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xdc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0x82 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x14e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x15e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_info 0x00000000 0x6c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_abbrev 0x00000000 0x201 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_line 0x00000000 0xbf2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_str 0x00000000 0x85c85 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .debug_frame 0x00000000 0x204 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_info 0x00000000 0x4ca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_line 0x00000000 0x9ba ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_str 0x00000000 0x85a36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .bss.pFlash 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x160 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xcc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_info 0x00000000 0x46a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_abbrev 0x00000000 0x242 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_line 0x00000000 0x9b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_str 0x00000000 0x85aff ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .debug_frame 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x00000000 0x20 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP1OrPCROP1 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP2OrPCROP2 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP3 + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_WRPConfigWRP4 + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x9c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_OB_BootConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramByte + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramHalfWord + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_FastProgramWord + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramByte + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramHalfWord + 0x00000000 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_DATAEEPROM_ProgramWord + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_info 0x00000000 0xc8d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x290 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0xd2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_line 0x00000000 0xf5f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_str 0x00000000 0x85f5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x470 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .RamFunc 0x00000000 0x534 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_info 0x00000000 0x623 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_abbrev 0x00000000 0x2b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_aranges + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_rnglists + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_line 0x00000000 0x976 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_str 0x00000000 0x85b88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .debug_frame 0x00000000 0x178 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x1e0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_info 0x00000000 0x6de ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_line 0x00000000 0x994 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_str 0x00000000 0x85b94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .debug_frame 0x00000000 0x274 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x00000000 0x5a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_info 0x00000000 0x2e7 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_abbrev 0x00000000 0x152 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_aranges + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_rnglists + 0x00000000 0x37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_line 0x00000000 0x8c5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_str 0x00000000 0x85973 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x6c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000 0x214 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0xd0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x00000000 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x00000000 0x2c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x00000000 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_info 0x00000000 0x3eb ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_abbrev 0x00000000 0x1c9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_aranges + 0x00000000 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000000 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_line 0x00000000 0x91f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_str 0x00000000 0x85aa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .debug_frame 0x00000000 0x120 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DeInit + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive + 0x00000000 0x232 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive + 0x00000000 0x352 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_IT + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_IT + 0x00000000 0x130 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_IT + 0x00000000 0x11c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Transmit_DMA + 0x00000000 0x164 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Receive_DMA + 0x00000000 0x188 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1f8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort + 0x00000000 0x1d8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_Abort_IT + 0x00000000 0x1f4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAPause + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAResume + 0x00000000 0x42 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_DMAStop + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_IRQHandler + 0x00000000 0x200 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_AbortCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_SPI_GetError + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0xa6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x40 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMAAbortOnError + 0x00000000 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMATxAbortCallback + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_DMARxAbortCallback + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_8BIT + 0x00000000 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_8BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesRxISR_16BIT + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_2linesTxISR_16BIT + 0x00000000 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_8BIT + 0x00000000 0x4a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_RxISR_16BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_8BIT + 0x00000000 0x46 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_TxISR_16BIT + 0x00000000 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x00000000 0xca ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRxTx_ISR + 0x00000000 0xe8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseRx_ISR + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_CloseTx_ISR + 0x00000000 0xc4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortRx_ISR + 0x00000000 0x8c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_AbortTx_ISR + 0x00000000 0x3a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x00000000 0xa4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1c4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x328 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x108 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x1a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x2a0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0x80 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x13c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0xd4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0xd6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x114 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x278 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x13a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IRQHandler + 0x00000000 0x198 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x192 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x250 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xd8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x1c8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_DelayElapsedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x3c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x10f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe49 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x11f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7a1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34e1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe37 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x35b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xc5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x236 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x115 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x567 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1e9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x225 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x788 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xac ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x170 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x492 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__sf 0x00000000 0x138 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00000000 0x144 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text.__errno 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release_recursive + 0x00000000 0x2 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___malloc_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x00000000 0xb0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .data._impure_data + 0x00000000 0x4c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text.sbrk_aligned + 0x00000000 0x44 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_sbrk_start + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .bss.__malloc_free_list + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_lock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x00000000 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .bss.errno 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .text._free_r 0x00000000 0x90 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00000000 0x38 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00014000 xrw +FLASH 0x08000000 0x00080000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32l1xx_hal_msp.o +LOAD ./Core/Src/stm32l1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l1xx.o +LOAD ./Core/Startup/startup_stm32l152retx.o +LOAD ./Drivers/7Seg_MAX7219/max7219.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o +LOAD ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +END GROUP +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20014000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x13c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x13c ./Core/Startup/startup_stm32l152retx.o + 0x08000000 g_pfnVectors + 0x0800013c . = ALIGN (0x4) + +.text 0x0800013c 0x2d74 + 0x0800013c . = ALIGN (0x4) + *(.text) + .text 0x0800013c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0800017c 0x30 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0800017c __aeabi_uldivmod + .text 0x080001ac 0x300 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x080001ac __udivmoddi4 + .text 0x080004ac 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + 0x080004ac __aeabi_ldiv0 + 0x080004ac __aeabi_idiv0 + *(.text*) + .text.note 0x080004b0 0x44 ./Core/Src/main.o + 0x080004b0 note + .text.main 0x080004f4 0x158 ./Core/Src/main.o + 0x080004f4 main + .text.SystemClock_Config + 0x0800064c 0x8c ./Core/Src/main.o + 0x0800064c SystemClock_Config + .text.MX_SPI1_Init + 0x080006d8 0x6c ./Core/Src/main.o + .text.MX_TIM3_Init + 0x08000744 0xe8 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x0800082c 0x10c ./Core/Src/main.o + .text.Error_Handler + 0x08000938 0xc ./Core/Src/main.o + 0x08000938 Error_Handler + .text.HAL_MspInit + 0x08000944 0x5c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000944 HAL_MspInit + .text.HAL_SPI_MspInit + 0x080009a0 0x88 ./Core/Src/stm32l1xx_hal_msp.o + 0x080009a0 HAL_SPI_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000a28 0x3c ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a28 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000a64 0x70 ./Core/Src/stm32l1xx_hal_msp.o + 0x08000a64 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x08000ad4 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ad4 NMI_Handler + .text.HardFault_Handler + 0x08000adc 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000adc HardFault_Handler + .text.MemManage_Handler + 0x08000ae4 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000ae4 MemManage_Handler + .text.BusFault_Handler + 0x08000aec 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000aec BusFault_Handler + .text.UsageFault_Handler + 0x08000af4 0x8 ./Core/Src/stm32l1xx_it.o + 0x08000af4 UsageFault_Handler + .text.SVC_Handler + 0x08000afc 0xc ./Core/Src/stm32l1xx_it.o + 0x08000afc SVC_Handler + .text.DebugMon_Handler + 0x08000b08 0xc ./Core/Src/stm32l1xx_it.o + 0x08000b08 DebugMon_Handler + .text.PendSV_Handler + 0x08000b14 0xc ./Core/Src/stm32l1xx_it.o + 0x08000b14 PendSV_Handler + .text.SysTick_Handler + 0x08000b20 0xc ./Core/Src/stm32l1xx_it.o + 0x08000b20 SysTick_Handler + .text.EXTI15_10_IRQHandler + 0x08000b2c 0x18 ./Core/Src/stm32l1xx_it.o + 0x08000b2c EXTI15_10_IRQHandler + .text.SystemInit + 0x08000b44 0xc ./Core/Src/system_stm32l1xx.o + 0x08000b44 SystemInit + .text.Reset_Handler + 0x08000b50 0x48 ./Core/Startup/startup_stm32l152retx.o + 0x08000b50 Reset_Handler + .text.Default_Handler + 0x08000b98 0x2 ./Core/Startup/startup_stm32l152retx.o + 0x08000b98 DMA2_Channel3_IRQHandler + 0x08000b98 EXTI2_IRQHandler + 0x08000b98 COMP_ACQ_IRQHandler + 0x08000b98 TIM10_IRQHandler + 0x08000b98 USB_HP_IRQHandler + 0x08000b98 TIM6_IRQHandler + 0x08000b98 PVD_IRQHandler + 0x08000b98 EXTI3_IRQHandler + 0x08000b98 EXTI0_IRQHandler + 0x08000b98 I2C2_EV_IRQHandler + 0x08000b98 SPI1_IRQHandler + 0x08000b98 USB_FS_WKUP_IRQHandler + 0x08000b98 DMA2_Channel2_IRQHandler + 0x08000b98 DMA1_Channel4_IRQHandler + 0x08000b98 ADC1_IRQHandler + 0x08000b98 USART3_IRQHandler + 0x08000b98 DMA1_Channel7_IRQHandler + 0x08000b98 LCD_IRQHandler + 0x08000b98 UART5_IRQHandler + 0x08000b98 TIM4_IRQHandler + 0x08000b98 DMA2_Channel1_IRQHandler + 0x08000b98 I2C1_EV_IRQHandler + 0x08000b98 DMA1_Channel6_IRQHandler + 0x08000b98 UART4_IRQHandler + 0x08000b98 DMA2_Channel4_IRQHandler + 0x08000b98 TIM3_IRQHandler + 0x08000b98 RCC_IRQHandler + 0x08000b98 DMA1_Channel1_IRQHandler + 0x08000b98 Default_Handler + 0x08000b98 TIM7_IRQHandler + 0x08000b98 TIM5_IRQHandler + 0x08000b98 EXTI9_5_IRQHandler + 0x08000b98 TIM9_IRQHandler + 0x08000b98 TAMPER_STAMP_IRQHandler + 0x08000b98 RTC_WKUP_IRQHandler + 0x08000b98 SPI2_IRQHandler + 0x08000b98 DMA2_Channel5_IRQHandler + 0x08000b98 DMA1_Channel5_IRQHandler + 0x08000b98 USB_LP_IRQHandler + 0x08000b98 EXTI4_IRQHandler + 0x08000b98 DMA1_Channel3_IRQHandler + 0x08000b98 COMP_IRQHandler + 0x08000b98 WWDG_IRQHandler + 0x08000b98 TIM2_IRQHandler + 0x08000b98 DAC_IRQHandler + 0x08000b98 EXTI1_IRQHandler + 0x08000b98 TIM11_IRQHandler + 0x08000b98 USART2_IRQHandler + 0x08000b98 I2C2_ER_IRQHandler + 0x08000b98 DMA1_Channel2_IRQHandler + 0x08000b98 FLASH_IRQHandler + 0x08000b98 USART1_IRQHandler + 0x08000b98 SPI3_IRQHandler + 0x08000b98 I2C1_ER_IRQHandler + 0x08000b98 RTC_Alarm_IRQHandler + .text.MAX7219_Init + 0x08000b9a 0x2a ./Drivers/7Seg_MAX7219/max7219.o + 0x08000b9a MAX7219_Init + .text.MAX7219_ShutdownStop + 0x08000bc4 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bc4 MAX7219_ShutdownStop + .text.MAX7219_DisplayTestStop + 0x08000bd4 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000bd4 MAX7219_DisplayTestStop + .text.MAX7219_SetBrightness + 0x08000be4 0x24 ./Drivers/7Seg_MAX7219/max7219.o + 0x08000be4 MAX7219_SetBrightness + .text.MAX7219_Clear + 0x08000c08 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000c08 MAX7219_Clear + .text.MAX7219_DisplayChar + 0x08000c34 0x2c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000c34 MAX7219_DisplayChar + .text.MAX7219_Write + 0x08000c60 0x3c ./Drivers/7Seg_MAX7219/max7219.o + 0x08000c60 MAX7219_Write + .text.MAX7219_SendByte + 0x08000c9c 0x24 ./Drivers/7Seg_MAX7219/max7219.o + .text.HAL_Init + 0x08000cc0 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000cc0 HAL_Init + .text.HAL_InitTick + 0x08000cf0 0x74 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000cf0 HAL_InitTick + .text.HAL_IncTick + 0x08000d64 0x24 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d64 HAL_IncTick + .text.HAL_GetTick + 0x08000d88 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d88 HAL_GetTick + .text.HAL_Delay + 0x08000d9c 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x08000d9c HAL_Delay + .text.__NVIC_SetPriorityGrouping + 0x08000de0 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000e28 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000e44 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000e7c 0x54 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000ed0 0x64 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.SysTick_Config + 0x08000f34 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000f78 0x16 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000f78 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000f8e 0x38 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000f8e HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000fc6 0x1c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000fc6 HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x08000fe2 0x18 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + 0x08000fe2 HAL_SYSTICK_Config + *fill* 0x08000ffa 0x2 + .text.HAL_GPIO_Init + 0x08000ffc 0x320 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x08000ffc HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x0800131c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x0800131c HAL_GPIO_WritePin + .text.HAL_GPIO_EXTI_IRQHandler + 0x0800134c 0x30 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x0800134c HAL_GPIO_EXTI_IRQHandler + .text.HAL_GPIO_EXTI_Callback + 0x0800137c 0x14 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + 0x0800137c HAL_GPIO_EXTI_Callback + .text.HAL_RCC_OscConfig + 0x08001390 0x660 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001390 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x080019f0 0x268 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x080019f0 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08001c58 0x17c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + 0x08001c58 HAL_RCC_GetSysClockFreq + .text.RCC_SetFlashLatencyFromMSIRange + 0x08001dd4 0xc0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .text.HAL_SPI_Init + 0x08001e94 0x112 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001e94 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x08001fa6 0x288 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + 0x08001fa6 HAL_SPI_Transmit + *fill* 0x0800222e 0x2 + .text.SPI_WaitFlagStateUntilTimeout + 0x08002230 0x110 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x08002340 0xa8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .text.HAL_TIM_Base_Init + 0x080023e8 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080023e8 HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x08002466 0x7e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002466 HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x080024e4 0x12 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024e4 HAL_TIM_PWM_MspInit + *fill* 0x080024f6 0x2 + .text.HAL_TIM_PWM_Start + 0x080024f8 0x12c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080024f8 HAL_TIM_PWM_Start + .text.HAL_TIM_PWM_ConfigChannel + 0x08002624 0x184 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x08002624 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x080027a8 0x18e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + 0x080027a8 HAL_TIM_ConfigClockSource + *fill* 0x08002936 0x2 + .text.TIM_Base_SetConfig + 0x08002938 0xec ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x08002a24 0x78 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x08002a9c 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x08002b18 0x7a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08002b92 0x7c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08002c0e 0x5c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08002c6a 0x5e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08002cc8 0x34 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08002cfc 0x3e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x08002d3a 0x48 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + *fill* 0x08002d82 0x2 + .text.HAL_TIMEx_MasterConfigSynchronization + 0x08002d84 0xbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + 0x08002d84 HAL_TIMEx_MasterConfigSynchronization + .text.memset 0x08002e40 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + 0x08002e40 memset + .text.__libc_init_array + 0x08002e50 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + 0x08002e50 __libc_init_array + *(.glue_7) + .glue_7 0x08002e98 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08002e98 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08002e98 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08002e98 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002e98 _init + .init 0x08002e9c 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08002ea4 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08002ea4 _fini + .fini 0x08002ea8 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08002eb0 . = ALIGN (0x4) + 0x08002eb0 _etext = . + +.vfp11_veneer 0x08002eb0 0x0 + .vfp11_veneer 0x08002eb0 0x0 linker stubs + +.v4_bx 0x08002eb0 0x0 + .v4_bx 0x08002eb0 0x0 linker stubs + +.iplt 0x08002eb0 0x0 + .iplt 0x08002eb0 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08002eb0 0x3c + 0x08002eb0 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.tab_music + 0x08002eb0 0xd ./Core/Src/main.o + 0x08002eb0 tab_music + *fill* 0x08002ebd 0x3 + .rodata.PLLMulTable + 0x08002ec0 0x9 ./Core/Src/system_stm32l1xx.o + 0x08002ec0 PLLMulTable + *fill* 0x08002ec9 0x3 + .rodata.AHBPrescTable + 0x08002ecc 0x10 ./Core/Src/system_stm32l1xx.o + 0x08002ecc AHBPrescTable + .rodata.conv_7seg + 0x08002edc 0x10 ./Drivers/7Seg_MAX7219/max7219.o + 0x08002edc conv_7seg + 0x08002eec . = ALIGN (0x4) + +.ARM.extab 0x08002eec 0x0 + 0x08002eec . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08002eec . = ALIGN (0x4) + +.ARM 0x08002eec 0x8 + 0x08002eec . = ALIGN (0x4) + 0x08002eec __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x08002eec 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + 0x08002ef4 __exidx_end = . + 0x08002ef4 . = ALIGN (0x4) + +.preinit_array 0x08002ef4 0x0 + 0x08002ef4 . = ALIGN (0x4) + 0x08002ef4 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08002ef4 PROVIDE (__preinit_array_end = .) + 0x08002ef4 . = ALIGN (0x4) + +.init_array 0x08002ef4 0x4 + 0x08002ef4 . = ALIGN (0x4) + 0x08002ef4 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08002ef4 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08002ef8 PROVIDE (__init_array_end = .) + 0x08002ef8 . = ALIGN (0x4) + +.fini_array 0x08002ef8 0x4 + 0x08002ef8 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08002ef8 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08002efc . = ALIGN (0x4) + 0x08002efc _sidata = LOADADDR (.data) + +.rel.dyn 0x08002efc 0x0 + .rel.iplt 0x08002efc 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0xc load address 0x08002efc + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32l1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x20000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + +.igot.plt 0x2000000c 0x0 load address 0x08002f08 + .igot.plt 0x2000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x2000000c . = ALIGN (0x4) + +.bss 0x2000000c 0xb8 load address 0x08002f08 + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss + *(.bss) + .bss 0x2000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hspi1 0x20000028 0x58 ./Core/Src/main.o + 0x20000028 hspi1 + .bss.htim3 0x20000080 0x40 ./Core/Src/main.o + 0x20000080 htim3 + .bss.uwTick 0x200000c0 0x4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + 0x200000c0 uwTick + *(COMMON) + 0x200000c4 . = ALIGN (0x4) + 0x200000c4 _ebss = . + 0x200000c4 __bss_end__ = _ebss + +._user_heap_stack + 0x200000c4 0x604 load address 0x08002f08 + 0x200000c8 . = ALIGN (0x8) + *fill* 0x200000c4 0x4 + [!provide] PROVIDE (end = .) + 0x200000c8 PROVIDE (_end = .) + 0x200002c8 . = (. + _Min_Heap_Size) + *fill* 0x200000c8 0x200 + 0x200006c8 . = (. + _Min_Stack_Size) + *fill* 0x200002c8 0x400 + 0x200006c8 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32l1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32l1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/system_stm32l1xx.o + .ARM.attributes + 0x000000fe 0x21 ./Core/Startup/startup_stm32l152retx.o + .ARM.attributes + 0x0000011f 0x2d ./Drivers/7Seg_MAX7219/max7219.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .ARM.attributes + 0x00000287 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000002b4 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000002e1 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x000002fe 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000032b 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x00000348 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(TP4_MELODIE.elf elf32-littlearm) +LOAD linker stubs +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a + +.debug_info 0x00000000 0x90de + .debug_info 0x00000000 0x1257 ./Core/Src/main.o + .debug_info 0x00001257 0xc12 ./Core/Src/stm32l1xx_hal_msp.o + .debug_info 0x00001e69 0x14c ./Core/Src/stm32l1xx_it.o + .debug_info 0x00001fb5 0x27c ./Core/Src/system_stm32l1xx.o + .debug_info 0x00002231 0x30 ./Core/Startup/startup_stm32l152retx.o + .debug_info 0x00002261 0x80e ./Drivers/7Seg_MAX7219/max7219.o + .debug_info 0x00002a6f 0x6ef ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_info 0x0000315e 0xce5 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_info 0x00003e43 0x5b2 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_info 0x000043f5 0x99b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_info 0x00004d90 0x14d9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_info 0x00006269 0x27cd ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_info 0x00008a36 0x6a8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_abbrev 0x00000000 0x18ef + .debug_abbrev 0x00000000 0x2f0 ./Core/Src/main.o + .debug_abbrev 0x000002f0 0x1d9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_abbrev 0x000004c9 0xa0 ./Core/Src/stm32l1xx_it.o + .debug_abbrev 0x00000569 0x11c ./Core/Src/system_stm32l1xx.o + .debug_abbrev 0x00000685 0x24 ./Core/Startup/startup_stm32l152retx.o + .debug_abbrev 0x000006a9 0x1e9 ./Drivers/7Seg_MAX7219/max7219.o + .debug_abbrev 0x00000892 0x275 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_abbrev 0x00000b07 0x31c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_abbrev 0x00000e23 0x1d4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_abbrev 0x00000ff7 0x2b8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_abbrev 0x000012af 0x27a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_abbrev 0x00001529 0x25e ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_abbrev 0x00001787 0x168 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_aranges 0x00000000 0xa80 + .debug_aranges + 0x00000000 0x50 ./Core/Src/main.o + .debug_aranges + 0x00000050 0x48 ./Core/Src/stm32l1xx_hal_msp.o + .debug_aranges + 0x00000098 0x68 ./Core/Src/stm32l1xx_it.o + .debug_aranges + 0x00000100 0x28 ./Core/Src/system_stm32l1xx.o + .debug_aranges + 0x00000128 0x28 ./Core/Startup/startup_stm32l152retx.o + .debug_aranges + 0x00000150 0x78 ./Drivers/7Seg_MAX7219/max7219.o + .debug_aranges + 0x000001c8 0xe0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_aranges + 0x000002a8 0x128 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_aranges + 0x000003d0 0x58 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_aranges + 0x00000428 0x90 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_aranges + 0x000004b8 0x1d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_aranges + 0x00000688 0x3d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_aranges + 0x00000a58 0x28 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_rnglists + 0x00000000 0x7f6 + .debug_rnglists + 0x00000000 0x3b ./Core/Src/main.o + .debug_rnglists + 0x0000003b 0x32 ./Core/Src/stm32l1xx_hal_msp.o + .debug_rnglists + 0x0000006d 0x49 ./Core/Src/stm32l1xx_it.o + .debug_rnglists + 0x000000b6 0x1a ./Core/Src/system_stm32l1xx.o + .debug_rnglists + 0x000000d0 0x19 ./Core/Startup/startup_stm32l152retx.o + .debug_rnglists + 0x000000e9 0x55 ./Drivers/7Seg_MAX7219/max7219.o + .debug_rnglists + 0x0000013e 0xa3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_rnglists + 0x000001e1 0xd9 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_rnglists + 0x000002ba 0x3f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_rnglists + 0x000002f9 0x6d ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_rnglists + 0x00000366 0x16f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_rnglists + 0x000004d5 0x307 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_rnglists + 0x000007dc 0x1a ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_macro 0x00000000 0x155f9 + .debug_macro 0x00000000 0x1c2 ./Core/Src/main.o + .debug_macro 0x000001c2 0xacc ./Core/Src/main.o + .debug_macro 0x00000c8e 0x10f ./Core/Src/main.o + .debug_macro 0x00000d9d 0x2e ./Core/Src/main.o + .debug_macro 0x00000dcb 0x22 ./Core/Src/main.o + .debug_macro 0x00000ded 0x22 ./Core/Src/main.o + .debug_macro 0x00000e0f 0x8e ./Core/Src/main.o + .debug_macro 0x00000e9d 0x51 ./Core/Src/main.o + .debug_macro 0x00000eee 0x103 ./Core/Src/main.o + .debug_macro 0x00000ff1 0x6a ./Core/Src/main.o + .debug_macro 0x0000105b 0x1df ./Core/Src/main.o + .debug_macro 0x0000123a 0x1c ./Core/Src/main.o + .debug_macro 0x00001256 0x22 ./Core/Src/main.o + .debug_macro 0x00001278 0xbd ./Core/Src/main.o + .debug_macro 0x00001335 0xe49 ./Core/Src/main.o + .debug_macro 0x0000217e 0x11f ./Core/Src/main.o + .debug_macro 0x0000229d 0xb7a1 ./Core/Src/main.o + .debug_macro 0x0000da3e 0x6d ./Core/Src/main.o + .debug_macro 0x0000daab 0x34e1 ./Core/Src/main.o + .debug_macro 0x00010f8c 0x190 ./Core/Src/main.o + .debug_macro 0x0001111c 0x5b ./Core/Src/main.o + .debug_macro 0x00011177 0xe37 ./Core/Src/main.o + .debug_macro 0x00011fae 0x35b ./Core/Src/main.o + .debug_macro 0x00012309 0x1b8 ./Core/Src/main.o + .debug_macro 0x000124c1 0xc5 ./Core/Src/main.o + .debug_macro 0x00012586 0x21e ./Core/Src/main.o + .debug_macro 0x000127a4 0x236 ./Core/Src/main.o + .debug_macro 0x000129da 0x115 ./Core/Src/main.o + .debug_macro 0x00012aef 0x567 ./Core/Src/main.o + .debug_macro 0x00013056 0x1e9 ./Core/Src/main.o + .debug_macro 0x0001323f 0x22 ./Core/Src/main.o + .debug_macro 0x00013261 0x225 ./Core/Src/main.o + .debug_macro 0x00013486 0x788 ./Core/Src/main.o + .debug_macro 0x00013c0e 0xac ./Core/Src/main.o + .debug_macro 0x00013cba 0x170 ./Core/Src/main.o + .debug_macro 0x00013e2a 0x492 ./Core/Src/main.o + .debug_macro 0x000142bc 0x10 ./Core/Src/main.o + .debug_macro 0x000142cc 0x1b9 ./Core/Src/stm32l1xx_hal_msp.o + .debug_macro 0x00014485 0x1c3 ./Core/Src/stm32l1xx_it.o + .debug_macro 0x00014648 0x1af ./Core/Src/system_stm32l1xx.o + .debug_macro 0x000147f7 0x1ec ./Drivers/7Seg_MAX7219/max7219.o + .debug_macro 0x000149e3 0x1d3 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_macro 0x00014bb6 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_macro 0x00014d65 0x1b6 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_macro 0x00014f1b 0x1c1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_macro 0x000150dc 0x1be ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_macro 0x0001529a 0x1b0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_macro 0x0001544a 0x1af ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_line 0x00000000 0xaa5f + .debug_line 0x00000000 0x91d ./Core/Src/main.o + .debug_line 0x0000091d 0x776 ./Core/Src/stm32l1xx_hal_msp.o + .debug_line 0x00001093 0x788 ./Core/Src/stm32l1xx_it.o + .debug_line 0x0000181b 0x761 ./Core/Src/system_stm32l1xx.o + .debug_line 0x00001f7c 0x79 ./Core/Startup/startup_stm32l152retx.o + .debug_line 0x00001ff5 0x80f ./Drivers/7Seg_MAX7219/max7219.o + .debug_line 0x00002804 0x98c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_line 0x00003190 0xc5b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_line 0x00003deb 0x9d0 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_line 0x000047bb 0xf4f ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_line 0x0000570a 0x1c4b ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_line 0x00007355 0x2fb1 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_line 0x0000a306 0x759 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_str 0x00000000 0x88693 + .debug_str 0x00000000 0x88693 ./Core/Src/main.o + 0x86792 (size before relaxing) + .debug_str 0x00088693 0x86035 ./Core/Src/stm32l1xx_hal_msp.o + .debug_str 0x00088693 0x858f1 ./Core/Src/stm32l1xx_it.o + .debug_str 0x00088693 0x85900 ./Core/Src/system_stm32l1xx.o + .debug_str 0x00088693 0x8c ./Core/Startup/startup_stm32l152retx.o + .debug_str 0x00088693 0x85e5c ./Drivers/7Seg_MAX7219/max7219.o + .debug_str 0x00088693 0x86028 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_str 0x00088693 0x86134 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_str 0x00088693 0x85a93 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_str 0x00088693 0x85dbc ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_str 0x00088693 0x86222 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_str 0x00088693 0x86c03 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_str 0x00088693 0x85da8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32l1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32l1xx.o + .comment 0x00000043 0x44 ./Drivers/7Seg_MAX7219/max7219.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + +.debug_frame 0x00000000 0x2b74 + .debug_frame 0x00000000 0xf4 ./Core/Src/main.o + .debug_frame 0x000000f4 0xf4 ./Core/Src/stm32l1xx_hal_msp.o + .debug_frame 0x000001e8 0x120 ./Core/Src/stm32l1xx_it.o + .debug_frame 0x00000308 0x58 ./Core/Src/system_stm32l1xx.o + .debug_frame 0x00000360 0x198 ./Drivers/7Seg_MAX7219/max7219.o + .debug_frame 0x000004f8 0x33c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o + .debug_frame 0x00000834 0x4e8 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o + .debug_frame 0x00000d1c 0x14c ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o + .debug_frame 0x00000e68 0x224 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o + .debug_frame 0x0000108c 0x828 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o + .debug_frame 0x000018b4 0x11b4 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim.o + .debug_frame 0x00002a68 0x60 ./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_tim_ex.o + .debug_frame 0x00002ac8 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00002ae8 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00002b14 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00002b40 0x34 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.macos64_1.0.0.202411102158/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/libgcc.a(_udivmoddi4.o) + +.debug_line_str + 0x00000000 0x70 + .debug_line_str + 0x00000000 0x70 ./Core/Startup/startup_stm32l152retx.o diff --git a/TP4_INIT_TFT/Debug/makefile b/TP4_INIT_TFT/Debug/makefile new file mode 100644 index 0000000..bb78ad5 --- /dev/null +++ b/TP4_INIT_TFT/Debug/makefile @@ -0,0 +1,96 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Drivers/TFT_ST7735/subdir.mk +-include Drivers/STM32L1xx_HAL_Driver/Src/subdir.mk +-include Drivers/7Seg_MAX7219/subdir.mk +-include Core/Startup/subdir.mk +-include Core/Src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OPTIONAL_TOOL_DEPS := \ +$(wildcard ../makefile.defs) \ +$(wildcard ../makefile.init) \ +$(wildcard ../makefile.targets) \ + + +BUILD_ARTIFACT_NAME := TP4_INIT_TFT +BUILD_ARTIFACT_EXTENSION := elf +BUILD_ARTIFACT_PREFIX := +BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) + +# Add inputs and outputs from these tool invocations to the build variables +EXECUTABLES += \ +TP4_INIT_TFT.elf \ + +MAP_FILES += \ +TP4_INIT_TFT.map \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +TP4_INIT_TFT.list \ + + +# All Target +all: main-build + +# Main-build Target +main-build: TP4_INIT_TFT.elf secondary-outputs + +# Tool invocations +TP4_INIT_TFT.elf TP4_INIT_TFT.map: $(OBJS) $(USER_OBJS) /Users/felixmarquet/Nextcloud/Programation/STM32/TP4_INIT_TFT/STM32L152RETX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "TP4_INIT_TFT.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"/Users/felixmarquet/Nextcloud/Programation/STM32/TP4_INIT_TFT/STM32L152RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="TP4_INIT_TFT.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +TP4_INIT_TFT.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "TP4_INIT_TFT.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) TP4_INIT_TFT.elf TP4_INIT_TFT.list TP4_INIT_TFT.map default.size.stdout + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/TP4_INIT_TFT/Debug/objects.list b/TP4_INIT_TFT/Debug/objects.list new file mode 100644 index 0000000..2e3876b --- /dev/null +++ b/TP4_INIT_TFT/Debug/objects.list @@ -0,0 +1,22 @@ +"./Core/Src/main.o" +"./Core/Src/stm32l1xx_hal_msp.o" +"./Core/Src/stm32l1xx_it.o" +"./Core/Src/syscalls.o" +"./Core/Src/sysmem.o" +"./Core/Src/system_stm32l1xx.o" +"./Core/Startup/startup_stm32l152retx.o" +"./Drivers/7Seg_MAX7219/max7219.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.o" +"./Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.o" +"./Drivers/TFT_ST7735/fonc_tft.o" diff --git a/TP4_INIT_TFT/Debug/objects.mk b/TP4_INIT_TFT/Debug/objects.mk new file mode 100644 index 0000000..b471e98 --- /dev/null +++ b/TP4_INIT_TFT/Debug/objects.mk @@ -0,0 +1,9 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/TP4_INIT_TFT/Debug/sources.mk b/TP4_INIT_TFT/Debug/sources.mk new file mode 100644 index 0000000..3e989bd --- /dev/null +++ b/TP4_INIT_TFT/Debug/sources.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Core/Src \ +Core/Startup \ +Drivers/7Seg_MAX7219 \ +Drivers/STM32L1xx_HAL_Driver/Src \ +Drivers/TFT_ST7735 \ + diff --git a/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.c b/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.c new file mode 100644 index 0000000..5a71248 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.c @@ -0,0 +1,269 @@ +/* +********************************************************************************************************* +* Module : MAX7219.C +* Author : Randy Rasa modifié par Alain REBOUX pour STM32 +* Description: MAX7219 LED Display Driver Routines +* +* The Maxim MAX7219 is an LED display driver thant can control up to 64 individual LEDs, or +* eight 7-segment LED digits, or any combination of individual LEDs and digits. It frees the +* host from the chore of constantly multiplexing the 8 rows and 8 columns. In addition, it +* takes care of brightness control (16 steps), and implements display test and display blank +* (shutdown) features. +* +* The host communicates with the MAX7219 using three signals: DATA, CLK, and LOAD. This +* modules bit-bangs them, but Motorola's SPI interface (or similar interface from other +* manufacturers) may also be used to simplify and speed up the data transfer. +* ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ +* DATA _________|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00|______ +* ________ __ __ __ __ __ __ __ __ __ __ ________ +* CLK |__| |__| |__| |__| |__| |__| |__| |__| |__| |__| |__| +* __________________________________________________________________ +* LOAD ______| |__ + +/* +********************************************************************************************************* +* Include Header Files +********************************************************************************************************* +*/ + +/* +********************************************************************************************************* +* Include Header Files +********************************************************************************************************* +*/ + +#include "main.h" +#include "max7219.h" +extern SPI_HandleTypeDef hspi1; + +/*defined in main.h +#define MAX7219_nCS_PORT GPIOC +#define MAX7219_nCS_PIN GPIO_PIN_0 +*/ + +//Constantes + +/* +********************************************************************************************************* +* LED Segments: a +* ---- +* f| |b +* | g | +* ---- +* e| |c +* | | +* ---- o dp +* d +* Register bits: +* bit: 7 6 5 4 3 2 1 0 +* dp a b c d e f g +********************************************************************************************************* +*/ + + +char const conv_7seg[]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x1F,0x4E,0x3D,0x4F,0x47}; + + +// define +#define REG_DECODE 0x09 // "decode mode" register +#define REG_INTENSITY 0x0a // "intensity" register +#define REG_SCAN_LIMIT 0x0b // "scan limit" register +#define REG_SHUTDOWN 0x0c // "shutdown" register +#define REG_DISPLAY_TEST 0x0f // "display test" register + +#define INTENSITY_MIN 0x00 // minimum display intensity +#define INTENSITY_MAX 0x0f // maximum display intensity + + +/* +********************************************************************************************************* +* Private Function Prototypes +********************************************************************************************************* +*/ + void MAX7219_Write (unsigned char reg_number, unsigned char data); +static void MAX7219_SendByte (unsigned char data); + + + +// ...................................... Public Functions .............................................. + + +/* +********************************************************************************************************* +* MAX7219_Init() +* +* Description: Initialize MAX7219 module; must be called before any other MAX7219 functions. +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Init (void) +{ + // configure "LOAD" as output + + MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits + MAX7219_Write(REG_DECODE, 0x00); // set to "no decode" for all digits + MAX7219_ShutdownStop(); // select normal operation (i.e. not shutdown) + MAX7219_DisplayTestStop(); // select normal operation (i.e. not test mode) + MAX7219_Clear(); // clear all digits + MAX7219_SetBrightness(INTENSITY_MAX); // set to maximum intensity +} + +/* +********************************************************************************************************* +* MAX7219_ShutdownStart() +* +* Description: Shut down the display. +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStart (void) +{ + MAX7219_Write(REG_SHUTDOWN, 0); // put MAX7219 into "shutdown" mode +} + + +/* +********************************************************************************************************* +* MAX7219_ShutdownStop() +* +* Description: Take the display out of shutdown mode. +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_ShutdownStop (void) +{ + MAX7219_Write(REG_SHUTDOWN, 1); // put MAX7219 into "normal" mode +} +/* +********************************************************************************************************* +* MAX7219_DisplayTestStart() +* +* Description: Start a display test. +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStart (void) +{ + MAX7219_Write(REG_DISPLAY_TEST, 1); // put MAX7219 into "display test" mode +} + + + +/* +********************************************************************************************************* +* MAX7219_DisplayTestStop() +* +* Description: Stop a display test. +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayTestStop (void) +{ + MAX7219_Write(REG_DISPLAY_TEST, 0); // put MAX7219 into "normal" mode +} + + +/* +********************************************************************************************************* +* MAX7219_SetBrightness() +* +* Description: Set the LED display brightness +* Arguments : brightness (0-15) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_SetBrightness (char brightness) +{ + brightness &= 0x0f; // mask off extra bits + MAX7219_Write(REG_INTENSITY, brightness); // set brightness +} + + +/* +********************************************************************************************************* +* MAX7219_Clear() +* +* Description: Clear the display (all digits blank) +* Arguments : none +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Clear (void) +{ + char i; + for (i=0; i < 8; i++) + MAX7219_Write(i, 0x00); // turn all segments off +} + + +/* +********************************************************************************************************* +* MAX7219_DisplayChar() = MAX7219_DisplayCharPointOff(), MAX7219_DisplayCharPointON() +* +* Description: Display a character on the specified digit. +* Arguments : digit = digit number (0-7) +* character = character to display (0-9, A-Z) +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_DisplayChar(char digit, char character) +{ + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); +} + +void MAX7219_DisplayCharPointOff (char digit, char character) +{ + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]); +} +void MAX7219_DisplayCharPointOn (char digit, char character) +{ + //MAX7219_Write(digit, MAX7219_LookupCode(character)); + MAX7219_Write(digit, conv_7seg[character]|128); +} + + + +/* +********************************************************************************************************* +* MAX7219_Write() +* +* Description: Write to MAX7219 +* Arguments : reg_number = register to write to +* dataout = data to write to MAX7219 +* Returns : none +********************************************************************************************************* +*/ +void MAX7219_Write (unsigned char reg_number, unsigned char dataout) +{ + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN<<16;// nCS = 0 // take LOAD high to begin + MAX7219_SendByte(reg_number); // write register number to MAX7219 + MAX7219_SendByte(dataout); // write data to MAX7219 + MAX7219_nCS_PORT->BSRR = (uint32_t)MAX7219_nCS_PIN;// nCS = 1 // take LOAD low to latch in data + } + + +/* +********************************************************************************************************* +* MAX7219_SendByte() +* +* Description: Send one byte to the MAX7219 +* Arguments : dataout = data to send +* Returns : none +********************************************************************************************************* +*/ + +static void MAX7219_SendByte (unsigned char dataout) +{ + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 1000); + +} + + diff --git a/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.h b/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.h new file mode 100644 index 0000000..9ce37ee --- /dev/null +++ b/TP4_INIT_TFT/Drivers/7Seg_MAX7219/max7219.h @@ -0,0 +1,15 @@ +void MAX7219_Init(void); +void MAX7219_ShutdownStart(void); +void MAX7219_ShutdownStop(void); +void MAX7219_DisplayTestStart(void); +void MAX7219_DisplayTestStop(void); +void MAX7219_SetBrightness(char brightness); +void MAX7219_Clear(void); +void MAX7219_DisplayChar(char digit, char character); +void MAX7219_DisplayCharPointOff(char digit, char character); +void MAX7219_DisplayCharPointOn(char digit, char character); + +// ST7735 CS (Chip Select) pin +#define MAX7219_nCS_PORT GPIOC //A +#define MAX7219_nCS_PIN GPIO_PIN_0 //8 + diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h b/TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h new file mode 100644 index 0000000..dbe7432 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Device/ST/STM32L1xx/Include/stm32l152xe.h @@ -0,0 +1,9022 @@ +/** + ****************************************************************************** + * @file stm32l152xe.h + * @author MCD Application Team + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32L1xx devices. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l152xe + * @{ + */ + +#ifndef __STM32L152xE_H +#define __STM32L152xE_H + +#ifdef __cplusplus + extern "C" { +#endif + + + /** @addtogroup Configuration_section_for_CMSIS + * @{ + */ +/** + * @brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ +#define __CM3_REV 0x200U /*!< Cortex-M3 Revision r2p0 */ +#define __MPU_PRESENT 1U /*!< STM32L1xx provides MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32L1xx uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32L1xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + + /*!< Interrupt Number Definition */ +typedef enum +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M3 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32L specific Interrupt Numbers ***********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup Timer through EXTI Line Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB High Priority Interrupt */ + USB_LP_IRQn = 20, /*!< USB Low Priority Interrupt */ + DAC_IRQn = 21, /*!< DAC Interrupt */ + COMP_IRQn = 22, /*!< Comparator through EXTI Line Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + LCD_IRQn = 24, /*!< LCD Interrupt */ + TIM9_IRQn = 25, /*!< TIM9 global Interrupt */ + TIM10_IRQn = 26, /*!< TIM10 global Interrupt */ + TIM11_IRQn = 27, /*!< TIM11 global Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USB_FS_WKUP_IRQn = 42, /*!< USB FS WakeUp from suspend through EXTI Line Interrupt */ + TIM6_IRQn = 43, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 44, /*!< TIM7 global Interrupt */ + TIM5_IRQn = 46, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 47, /*!< SPI3 global Interrupt */ + UART4_IRQn = 48, /*!< UART4 global Interrupt */ + UART5_IRQn = 49, /*!< UART5 global Interrupt */ + DMA2_Channel1_IRQn = 50, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 51, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 52, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 53, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 54, /*!< DMA2 Channel 5 global Interrupt */ + COMP_ACQ_IRQn = 56 /*!< Comparator Channel Acquisition global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32l1xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */ + __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */ + __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */ + __IO uint32_t SMPR3; /*!< ADC sample time register 3, Address offset: 0x14 */ + __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x18 */ + __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x1C */ + __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x20 */ + __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x24 */ + __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x28 */ + __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x2C */ + __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC regular sequence register 4, Address offset: 0x3C */ + __IO uint32_t SQR5; /*!< ADC regular sequence register 5, Address offset: 0x40 */ + __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x44 */ + __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x48 */ + __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x4C */ + __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x50 */ + __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x54 */ + __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x58 */ + __IO uint32_t SMPR0; /*!< ADC sample time register 0, Address offset: 0x5C */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: ADC1 base address + 0x300 */ + __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ +} ADC_Common_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, used for bits common to several COMP instances, Address offset: 0x00 */ +} COMP_Common_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, Address offset: 0x05 */ + uint16_t RESERVED1; /*!< Reserved, Address offset: 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*! 0x7C */ + __IO uint32_t WRP1213; /*!< write protection register 12 13, Address offset: 0x80 */ + __IO uint32_t WRP1415; /*!< write protection register 14 15, Address offset: 0x84 */ +} OB_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control and status register, Address offset: 0x00 */ + __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t LPOTR; /*!< OPAMP offset trimming register for low power mode, Address offset: 0x08 */ +} OPAMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control and status register, used for bits common to several OPAMP instances, Address offset: 0x00 */ + __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, used for bits common to several OPAMP instances, Address offset: 0x04 */ +} OPAMP_Common_TypeDef; + +/** + * @brief General Purpose IO + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset registerBSRR, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function register, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO bit reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief SysTem Configuration + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ +} SYSCFG_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address register 1, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address register 2, Address offset: 0x0C */ + __IO uint32_t DR; /*!< I2C Data register, Address offset: 0x10 */ + __IO uint32_t SR1; /*!< I2C Status register 1, Address offset: 0x14 */ + __IO uint32_t SR2; /*!< I2C Status register 2, Address offset: 0x18 */ + __IO uint32_t CCR; /*!< I2C Clock control register, Address offset: 0x1C */ + __IO uint32_t TRISE; /*!< I2C TRISE register, Address offset: 0x20 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + +/** + * @brief LCD + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LCD control register, Address offset: 0x00 */ + __IO uint32_t FCR; /*!< LCD frame control register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< LCD status register, Address offset: 0x08 */ + __IO uint32_t CLR; /*!< LCD clear register, Address offset: 0x0C */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD display memory, Address offset: 0x14-0x50 */ +} LCD_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< PWR power control register, Address offset: 0x00 */ + __IO uint32_t CSR; /*!< PWR power control/status register, Address offset: 0x04 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Clock configuration register, Address offset: 0x08 */ + __IO uint32_t CIR; /*!< RCC Clock interrupt register, Address offset: 0x0C */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripheral reset register, Address offset: 0x10 */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x14 */ + __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x18 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripheral clock enable register, Address offset: 0x1C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x20 */ + __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x24 */ + __IO uint32_t AHBLPENR; /*!< RCC AHB peripheral clock enable in low power mode register, Address offset: 0x28 */ + __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x2C */ + __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x30 */ + __IO uint32_t CSR; /*!< RCC Control/status register, Address offset: 0x34 */ +} RCC_TypeDef; + +/** + * @brief Routing Interface + */ + +typedef struct +{ + __IO uint32_t ICR; /*!< RI input capture register, Address offset: 0x00 */ + __IO uint32_t ASCR1; /*!< RI analog switches control register, Address offset: 0x04 */ + __IO uint32_t ASCR2; /*!< RI analog switch control register 2, Address offset: 0x08 */ + __IO uint32_t HYSCR1; /*!< RI hysteresis control register, Address offset: 0x0C */ + __IO uint32_t HYSCR2; /*!< RI Hysteresis control register, Address offset: 0x10 */ + __IO uint32_t HYSCR3; /*!< RI Hysteresis control register, Address offset: 0x14 */ + __IO uint32_t HYSCR4; /*!< RI Hysteresis control register, Address offset: 0x18 */ + __IO uint32_t ASMR1; /*!< RI Analog switch mode register 1, Address offset: 0x1C */ + __IO uint32_t CMR1; /*!< RI Channel mask register 1, Address offset: 0x20 */ + __IO uint32_t CICR1; /*!< RI Channel Iden for capture register 1, Address offset: 0x24 */ + __IO uint32_t ASMR2; /*!< RI Analog switch mode register 2, Address offset: 0x28 */ + __IO uint32_t CMR2; /*!< RI Channel mask register 2, Address offset: 0x2C */ + __IO uint32_t CICR2; /*!< RI Channel Iden for capture register 2, Address offset: 0x30 */ + __IO uint32_t ASMR3; /*!< RI Analog switch mode register 3, Address offset: 0x34 */ + __IO uint32_t CMR3; /*!< RI Channel mask register 3, Address offset: 0x38 */ + __IO uint32_t CICR3; /*!< RI Channel Iden for capture register 3, Address offset: 0x3C */ + __IO uint32_t ASMR4; /*!< RI Analog switch mode register 4, Address offset: 0x40 */ + __IO uint32_t CMR4; /*!< RI Channel mask register 4, Address offset: 0x44 */ + __IO uint32_t CICR4; /*!< RI Channel Iden for capture register 4, Address offset: 0x48 */ + __IO uint32_t ASMR5; /*!< RI Analog switch mode register 5, Address offset: 0x4C */ + __IO uint32_t CMR5; /*!< RI Channel mask register 5, Address offset: 0x50 */ + __IO uint32_t CICR5; /*!< RI Channel Iden for capture register 5, Address offset: 0x54 */ +} RI_TypeDef; + +/** + * @brief Real-Time Clock + */ +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CALIBR; /*!< RTC calibration register, Address offset: 0x18 */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RRTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAFCR; /*!< RTC tamper and alternate function configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + uint32_t RESERVED7; /*!< Reserved, 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1 (not used in I2S mode), Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register (not used in I2S mode), Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register (not used in I2S mode), Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave Mode Control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler register, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + uint32_t RESERVED12; /*!< Reserved, 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + uint32_t RESERVED17; /*!< Reserved, 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR; /*!< TIM option register, Address offset: 0x50 */ +} TIM_TypeDef; +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint32_t SR; /*!< USART Status register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< USART Data register, Address offset: 0x04 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x18 */ +} USART_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ +} USB_TypeDef; + +/** + * @brief Window WATCHDOG + */ +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + +/** + * @brief Universal Serial Bus Full Speed Device + */ +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE (0x08000000UL) /*!< FLASH base address in the alias region */ +#define FLASH_EEPROM_BASE (FLASH_BASE + 0x80000UL) /*!< FLASH EEPROM base address in the alias region */ +#define SRAM_BASE (0x20000000UL) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address in the alias region */ +#define SRAM_BB_BASE (0x22000000UL) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ +#define FLASH_BANK2_BASE (0x08040000UL) /*!< FLASH BANK2 base address in the alias region */ +#define FLASH_BANK1_END (0x0803FFFFUL) /*!< Program end FLASH BANK1 address */ +#define FLASH_BANK2_END (0x0807FFFFUL) /*!< Program end FLASH BANK2 address */ +#define FLASH_END (0x0807FFFFUL) /*!< Program end FLASH address for Cat5 */ +#define FLASH_EEPROM_END (0x08083FFFUL) /*!< FLASH EEPROM end address (16KB) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x00000000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x00000400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x00000800UL) +#define TIM5_BASE (APB1PERIPH_BASE + 0x00000C00UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x00001000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x00001400UL) +#define LCD_BASE (APB1PERIPH_BASE + 0x00002400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x00002800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x00002C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x00003000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x00003800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x00003C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x00004400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x00004800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x00004C00UL) +#define UART5_BASE (APB1PERIPH_BASE + 0x00005000UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x00005400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x00005800UL) + +/* USB device FS */ +#define USB_BASE (APB1PERIPH_BASE + 0x00005C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x00006000UL) /*!< USB_IP Packet Memory Area base address */ + +/* USB device FS SRAM */ +#define PWR_BASE (APB1PERIPH_BASE + 0x00007000UL) +#define DAC_BASE (APB1PERIPH_BASE + 0x00007400UL) +#define COMP_BASE (APB1PERIPH_BASE + 0x00007C00UL) +#define RI_BASE (APB1PERIPH_BASE + 0x00007C04UL) +#define OPAMP_BASE (APB1PERIPH_BASE + 0x00007C5CUL) + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x00000000UL) +#define EXTI_BASE (APB2PERIPH_BASE + 0x00000400UL) +#define TIM9_BASE (APB2PERIPH_BASE + 0x00000800UL) +#define TIM10_BASE (APB2PERIPH_BASE + 0x00000C00UL) +#define TIM11_BASE (APB2PERIPH_BASE + 0x00001000UL) +#define ADC1_BASE (APB2PERIPH_BASE + 0x00002400UL) +#define ADC_BASE (APB2PERIPH_BASE + 0x00002700UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x00003000UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x00003800UL) + +/*!< AHB peripherals */ +#define GPIOA_BASE (AHBPERIPH_BASE + 0x00000000UL) +#define GPIOB_BASE (AHBPERIPH_BASE + 0x00000400UL) +#define GPIOC_BASE (AHBPERIPH_BASE + 0x00000800UL) +#define GPIOD_BASE (AHBPERIPH_BASE + 0x00000C00UL) +#define GPIOE_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define GPIOH_BASE (AHBPERIPH_BASE + 0x00001400UL) +#define GPIOF_BASE (AHBPERIPH_BASE + 0x00001800UL) +#define GPIOG_BASE (AHBPERIPH_BASE + 0x00001C00UL) +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) +#define RCC_BASE (AHBPERIPH_BASE + 0x00003800UL) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00003C00UL) /*!< FLASH registers base address */ +#define OB_BASE (0x1FF80000UL) /*!< FLASH Option Bytes base address */ +#define FLASHSIZE_BASE (0x1FF800CCUL) /*!< FLASH Size register base address for Cat.3, Cat.4, Cat.5 and Cat.6 devices */ +#define UID_BASE (0x1FF800D0UL) /*!< Unique device ID register base address for Cat.3, Cat.4, Cat.5 and Cat.6 devices */ +#define DMA1_BASE (AHBPERIPH_BASE + 0x00006000UL) +#define DMA1_Channel1_BASE (DMA1_BASE + 0x00000008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x0000001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x00000030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x00000044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x00000058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x0000006CUL) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x00000080UL) +#define DMA2_BASE (AHBPERIPH_BASE + 0x00006400UL) +#define DMA2_Channel1_BASE (DMA2_BASE + 0x00000008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x0000001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x00000030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x00000044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x00000058UL) +#define DBGMCU_BASE (0xE0042000UL) /*!< Debug MCU registers base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define LCD ((LCD_TypeDef *) LCD_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +/* USB device FS */ +#define USB ((USB_TypeDef *) USB_BASE) +/* USB device FS SRAM */ +#define PWR ((PWR_TypeDef *) PWR_BASE) + +#define DAC1 ((DAC_TypeDef *) DAC_BASE) +/* Legacy define */ +#define DAC DAC1 + +#define COMP ((COMP_TypeDef *) COMP_BASE) /* COMP generic instance include bits of COMP1 and COMP2 mixed in the same register */ +#define COMP1 ((COMP_TypeDef *) COMP_BASE) /* COMP1 instance definition to differentiate COMP1 and COMP2, not to be used to access comparator register */ +#define COMP2 ((COMP_TypeDef *) (COMP_BASE + 0x00000001U)) /* COMP2 instance definition to differentiate COMP1 and COMP2, not to be used to access comparator register */ +#define COMP12_COMMON ((COMP_Common_TypeDef *) COMP_BASE) /* COMP common instance definition to access comparator register bits used by both comparator instances (window mode) */ + +#define RI ((RI_TypeDef *) RI_BASE) + +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) (OPAMP_BASE + 0x00000001U)) +#define OPAMP12_COMMON ((OPAMP_Common_TypeDef *) OPAMP_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) + +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC1_COMMON ((ADC_Common_TypeDef *) ADC_BASE) +/* Legacy defines */ +#define ADC ADC1_COMMON + +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + + /** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 200U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ +#define VREFINT_CAL_ADDR_CMSIS 0x1FF800F8 /*!>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_armclang.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_armclang.h new file mode 100644 index 0000000..162a400 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_armclang.h @@ -0,0 +1,1869 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF); + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF); + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF); + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_compiler.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 0000000..94212eb --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_compiler.h @@ -0,0 +1,266 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_gcc.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 0000000..2d9db15 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_gcc.h @@ -0,0 +1,2085 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.0.4 + * @date 09. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_iccarm.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_iccarm.h new file mode 100644 index 0000000..11c4af0 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_iccarm.h @@ -0,0 +1,935 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.0.7 + * @date 19. June 2018 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2018 IAR Systems +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_version.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_version.h new file mode 100644 index 0000000..660f612 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.2 + * @date 19. April 2017 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mbl.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..251e4ed --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1918 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mml.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..3a3148e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2927 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0.h new file mode 100644 index 0000000..f929bba --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0.h @@ -0,0 +1,949 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0plus.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0plus.h new file mode 100644 index 0000000..424011a --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm0plus.h @@ -0,0 +1,1083 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; + +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm1.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..0ed678e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,976 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 23. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm23.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..acbc5df --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1993 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm3.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..74bff64 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1941 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm33.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..6cd2db7 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,3002 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_PCS_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm4.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm4.h new file mode 100644 index 0000000..7d56873 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm7.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..a14dc62 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_INLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_INLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_INLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_INLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_INLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_INLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_INLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_INLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t)addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc000.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..9b67c92 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1022 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc300.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..3e8a471 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1915 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + uint32_t RESERVED1[1U]; +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv7.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv7.h new file mode 100644 index 0000000..0142203 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv7.h @@ -0,0 +1,270 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField ) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable ) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable ) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable ) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec ) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) ) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if non-shareable) or 010b (if shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv8.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..62571da --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + orderedCpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/TP4_INIT_TFT/Drivers/CMSIS/Include/tz_context.h b/TP4_INIT_TFT/Drivers/CMSIS/Include/tz_context.h new file mode 100644 index 0000000..0d09749 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/TP4_INIT_TFT/Drivers/CMSIS/LICENSE.txt b/TP4_INIT_TFT/Drivers/CMSIS/LICENSE.txt new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/CMSIS/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h new file mode 100644 index 0000000..c3b8473 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h @@ -0,0 +1,4422 @@ +/** + ****************************************************************************** + * @file stm32_hal_legacy.h + * @author MCD Application Team + * @brief This file contains aliases definition for the STM32Cube HAL constants + * macros and functions maintained for legacy purpose. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32_HAL_LEGACY +#define STM32_HAL_LEGACY + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose + * @{ + */ +#define AES_FLAG_RDERR CRYP_FLAG_RDERR +#define AES_FLAG_WRERR CRYP_FLAG_WRERR +#define AES_CLEARFLAG_CCF CRYP_CLEARFLAG_CCF +#define AES_CLEARFLAG_RDERR CRYP_CLEARFLAG_RDERR +#define AES_CLEARFLAG_WRERR CRYP_CLEARFLAG_WRERR +#if defined(STM32H7) || defined(STM32MP1) +#define CRYP_DATATYPE_32B CRYP_NO_SWAP +#define CRYP_DATATYPE_16B CRYP_HALFWORD_SWAP +#define CRYP_DATATYPE_8B CRYP_BYTE_SWAP +#define CRYP_DATATYPE_1B CRYP_BIT_SWAP +#endif /* STM32H7 || STM32MP1 */ +/** + * @} + */ + +/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose + * @{ + */ +#define ADC_RESOLUTION12b ADC_RESOLUTION_12B +#define ADC_RESOLUTION10b ADC_RESOLUTION_10B +#define ADC_RESOLUTION8b ADC_RESOLUTION_8B +#define ADC_RESOLUTION6b ADC_RESOLUTION_6B +#define OVR_DATA_OVERWRITTEN ADC_OVR_DATA_OVERWRITTEN +#define OVR_DATA_PRESERVED ADC_OVR_DATA_PRESERVED +#define EOC_SINGLE_CONV ADC_EOC_SINGLE_CONV +#define EOC_SEQ_CONV ADC_EOC_SEQ_CONV +#define EOC_SINGLE_SEQ_CONV ADC_EOC_SINGLE_SEQ_CONV +#define REGULAR_GROUP ADC_REGULAR_GROUP +#define INJECTED_GROUP ADC_INJECTED_GROUP +#define REGULAR_INJECTED_GROUP ADC_REGULAR_INJECTED_GROUP +#define AWD_EVENT ADC_AWD_EVENT +#define AWD1_EVENT ADC_AWD1_EVENT +#define AWD2_EVENT ADC_AWD2_EVENT +#define AWD3_EVENT ADC_AWD3_EVENT +#define OVR_EVENT ADC_OVR_EVENT +#define JQOVF_EVENT ADC_JQOVF_EVENT +#define ALL_CHANNELS ADC_ALL_CHANNELS +#define REGULAR_CHANNELS ADC_REGULAR_CHANNELS +#define INJECTED_CHANNELS ADC_INJECTED_CHANNELS +#define SYSCFG_FLAG_SENSOR_ADC ADC_FLAG_SENSOR +#define SYSCFG_FLAG_VREF_ADC ADC_FLAG_VREFINT +#define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 +#define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 +#define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 +#define ADC_CLOCKPRESCALER_PCLK_DIV6 ADC_CLOCK_SYNC_PCLK_DIV6 +#define ADC_CLOCKPRESCALER_PCLK_DIV8 ADC_CLOCK_SYNC_PCLK_DIV8 +#define ADC_EXTERNALTRIG0_T6_TRGO ADC_EXTERNALTRIGCONV_T6_TRGO +#define ADC_EXTERNALTRIG1_T21_CC2 ADC_EXTERNALTRIGCONV_T21_CC2 +#define ADC_EXTERNALTRIG2_T2_TRGO ADC_EXTERNALTRIGCONV_T2_TRGO +#define ADC_EXTERNALTRIG3_T2_CC4 ADC_EXTERNALTRIGCONV_T2_CC4 +#define ADC_EXTERNALTRIG4_T22_TRGO ADC_EXTERNALTRIGCONV_T22_TRGO +#define ADC_EXTERNALTRIG7_EXT_IT11 ADC_EXTERNALTRIGCONV_EXT_IT11 +#define ADC_CLOCK_ASYNC ADC_CLOCK_ASYNC_DIV1 +#define ADC_EXTERNALTRIG_EDGE_NONE ADC_EXTERNALTRIGCONVEDGE_NONE +#define ADC_EXTERNALTRIG_EDGE_RISING ADC_EXTERNALTRIGCONVEDGE_RISING +#define ADC_EXTERNALTRIG_EDGE_FALLING ADC_EXTERNALTRIGCONVEDGE_FALLING +#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING +#define ADC_SAMPLETIME_2CYCLE_5 ADC_SAMPLETIME_2CYCLES_5 + +#define HAL_ADC_STATE_BUSY_REG HAL_ADC_STATE_REG_BUSY +#define HAL_ADC_STATE_BUSY_INJ HAL_ADC_STATE_INJ_BUSY +#define HAL_ADC_STATE_EOC_REG HAL_ADC_STATE_REG_EOC +#define HAL_ADC_STATE_EOC_INJ HAL_ADC_STATE_INJ_EOC +#define HAL_ADC_STATE_ERROR HAL_ADC_STATE_ERROR_INTERNAL +#define HAL_ADC_STATE_BUSY HAL_ADC_STATE_BUSY_INTERNAL +#define HAL_ADC_STATE_AWD HAL_ADC_STATE_AWD1 + +#if defined(STM32H7) +#define ADC_CHANNEL_VBAT_DIV4 ADC_CHANNEL_VBAT +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define ADC_SAMPLETIME_5CYCLE ADC_SAMPLETIME_5CYCLES +#define ADC_SAMPLETIME_391CYCLES_5 ADC_SAMPLETIME_391CYCLES +#define ADC4_SAMPLETIME_160CYCLES_5 ADC4_SAMPLETIME_814CYCLES_5 +#endif /* STM32U5 */ + +#if defined(STM32H5) +#define ADC_CHANNEL_VCORE ADC_CHANNEL_VDDCORE +#endif /* STM32H5 */ +/** + * @} + */ + +/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose + * @{ + */ +#define COMP_WINDOWMODE_DISABLED COMP_WINDOWMODE_DISABLE +#define COMP_WINDOWMODE_ENABLED COMP_WINDOWMODE_ENABLE +#define COMP_EXTI_LINE_COMP1_EVENT COMP_EXTI_LINE_COMP1 +#define COMP_EXTI_LINE_COMP2_EVENT COMP_EXTI_LINE_COMP2 +#define COMP_EXTI_LINE_COMP3_EVENT COMP_EXTI_LINE_COMP3 +#define COMP_EXTI_LINE_COMP4_EVENT COMP_EXTI_LINE_COMP4 +#define COMP_EXTI_LINE_COMP5_EVENT COMP_EXTI_LINE_COMP5 +#define COMP_EXTI_LINE_COMP6_EVENT COMP_EXTI_LINE_COMP6 +#define COMP_EXTI_LINE_COMP7_EVENT COMP_EXTI_LINE_COMP7 +#if defined(STM32L0) +#define COMP_LPTIMCONNECTION_ENABLED ((uint32_t)0x00000003U) /*!< COMPX output generic naming: connected to LPTIM + input 1 for COMP1, LPTIM input 2 for COMP2 */ +#endif +#define COMP_OUTPUT_COMP6TIM2OCREFCLR COMP_OUTPUT_COMP6_TIM2OCREFCLR +#if defined(STM32F373xC) || defined(STM32F378xx) +#define COMP_OUTPUT_TIM3IC1 COMP_OUTPUT_COMP1_TIM3IC1 +#define COMP_OUTPUT_TIM3OCREFCLR COMP_OUTPUT_COMP1_TIM3OCREFCLR +#endif /* STM32F373xC || STM32F378xx */ + +#if defined(STM32L0) || defined(STM32L4) +#define COMP_WINDOWMODE_ENABLE COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON + +#define COMP_NONINVERTINGINPUT_IO1 COMP_INPUT_PLUS_IO1 +#define COMP_NONINVERTINGINPUT_IO2 COMP_INPUT_PLUS_IO2 +#define COMP_NONINVERTINGINPUT_IO3 COMP_INPUT_PLUS_IO3 +#define COMP_NONINVERTINGINPUT_IO4 COMP_INPUT_PLUS_IO4 +#define COMP_NONINVERTINGINPUT_IO5 COMP_INPUT_PLUS_IO5 +#define COMP_NONINVERTINGINPUT_IO6 COMP_INPUT_PLUS_IO6 + +#define COMP_INVERTINGINPUT_1_4VREFINT COMP_INPUT_MINUS_1_4VREFINT +#define COMP_INVERTINGINPUT_1_2VREFINT COMP_INPUT_MINUS_1_2VREFINT +#define COMP_INVERTINGINPUT_3_4VREFINT COMP_INPUT_MINUS_3_4VREFINT +#define COMP_INVERTINGINPUT_VREFINT COMP_INPUT_MINUS_VREFINT +#define COMP_INVERTINGINPUT_DAC1_CH1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC1_CH2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_DAC1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO1 COMP_INPUT_MINUS_IO1 +#if defined(STM32L0) +/* Issue fixed on STM32L0 COMP driver: only 2 dedicated IO (IO1 and IO2), */ +/* IO2 was wrongly assigned to IO shared with DAC and IO3 was corresponding */ +/* to the second dedicated IO (only for COMP2). */ +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO2 +#else +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_IO2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO3 +#endif +#define COMP_INVERTINGINPUT_IO4 COMP_INPUT_MINUS_IO4 +#define COMP_INVERTINGINPUT_IO5 COMP_INPUT_MINUS_IO5 + +#define COMP_OUTPUTLEVEL_LOW COMP_OUTPUT_LEVEL_LOW +#define COMP_OUTPUTLEVEL_HIGH COMP_OUTPUT_LEVEL_HIGH + +/* Note: Literal "COMP_FLAG_LOCK" kept for legacy purpose. */ +/* To check COMP lock state, use macro "__HAL_COMP_IS_LOCKED()". */ +#if defined(COMP_CSR_LOCK) +#define COMP_FLAG_LOCK COMP_CSR_LOCK +#elif defined(COMP_CSR_COMP1LOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMP1LOCK +#elif defined(COMP_CSR_COMPxLOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMPxLOCK +#endif + +#if defined(STM32L4) +#define COMP_BLANKINGSRCE_TIM1OC5 COMP_BLANKINGSRC_TIM1_OC5_COMP1 +#define COMP_BLANKINGSRCE_TIM2OC3 COMP_BLANKINGSRC_TIM2_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC3 COMP_BLANKINGSRC_TIM3_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC4 COMP_BLANKINGSRC_TIM3_OC4_COMP2 +#define COMP_BLANKINGSRCE_TIM8OC5 COMP_BLANKINGSRC_TIM8_OC5_COMP2 +#define COMP_BLANKINGSRCE_TIM15OC1 COMP_BLANKINGSRC_TIM15_OC1_COMP2 +#define COMP_BLANKINGSRCE_NONE COMP_BLANKINGSRC_NONE +#endif + +#if defined(STM32L0) +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWSPEED COMP_POWERMODE_ULTRALOWPOWER +#else +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_HIGHSPEED +#define COMP_MODE_MEDIUMSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWPOWER COMP_POWERMODE_LOWPOWER +#define COMP_MODE_ULTRALOWPOWER COMP_POWERMODE_ULTRALOWPOWER +#endif + +#endif + +#if defined(STM32U5) +#define __HAL_COMP_COMP1_EXTI_CLEAR_RASING_FLAG __HAL_COMP_COMP1_EXTI_CLEAR_RISING_FLAG +#endif + +/** + * @} + */ + +/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose + * @{ + */ +#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig +#if defined(STM32U5) +#define MPU_DEVICE_nGnRnE MPU_DEVICE_NGNRNE +#define MPU_DEVICE_nGnRE MPU_DEVICE_NGNRE +#define MPU_DEVICE_nGRE MPU_DEVICE_NGRE +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup CRC_Aliases CRC API aliases + * @{ + */ +#if defined(STM32H5) || defined(STM32C0) +#else +#define HAL_CRC_Input_Data_Reverse HAL_CRCEx_Input_Data_Reverse /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for + inter STM32 series compatibility */ +#define HAL_CRC_Output_Data_Reverse HAL_CRCEx_Output_Data_Reverse /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for + inter STM32 series compatibility */ +#endif +/** + * @} + */ + +/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define CRC_OUTPUTDATA_INVERSION_DISABLED CRC_OUTPUTDATA_INVERSION_DISABLE +#define CRC_OUTPUTDATA_INVERSION_ENABLED CRC_OUTPUTDATA_INVERSION_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define DAC1_CHANNEL_1 DAC_CHANNEL_1 +#define DAC1_CHANNEL_2 DAC_CHANNEL_2 +#define DAC2_CHANNEL_1 DAC_CHANNEL_1 +#define DAC_WAVE_NONE 0x00000000U +#define DAC_WAVE_NOISE DAC_CR_WAVE1_0 +#define DAC_WAVE_TRIANGLE DAC_CR_WAVE1_1 +#define DAC_WAVEGENERATION_NONE DAC_WAVE_NONE +#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE +#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE + +#if defined(STM32G4) || defined(STM32H7) || defined (STM32U5) +#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL +#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL +#endif + +#if defined(STM32U5) +#define DAC_TRIGGER_STOP_LPTIM1_OUT DAC_TRIGGER_STOP_LPTIM1_CH1 +#define DAC_TRIGGER_STOP_LPTIM3_OUT DAC_TRIGGER_STOP_LPTIM3_CH1 +#define DAC_TRIGGER_LPTIM1_OUT DAC_TRIGGER_LPTIM1_CH1 +#define DAC_TRIGGER_LPTIM3_OUT DAC_TRIGGER_LPTIM3_CH1 +#endif + +#if defined(STM32H5) +#define DAC_TRIGGER_LPTIM1_OUT DAC_TRIGGER_LPTIM1_CH1 +#define DAC_TRIGGER_LPTIM2_OUT DAC_TRIGGER_LPTIM2_CH1 +#endif + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || \ + defined(STM32F4) || defined(STM32G4) +#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID +#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID +#endif + +/** + * @} + */ + +/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_REMAPDMA_ADC_DMA_CH2 DMA_REMAP_ADC_DMA_CH2 +#define HAL_REMAPDMA_USART1_TX_DMA_CH4 DMA_REMAP_USART1_TX_DMA_CH4 +#define HAL_REMAPDMA_USART1_RX_DMA_CH5 DMA_REMAP_USART1_RX_DMA_CH5 +#define HAL_REMAPDMA_TIM16_DMA_CH4 DMA_REMAP_TIM16_DMA_CH4 +#define HAL_REMAPDMA_TIM17_DMA_CH2 DMA_REMAP_TIM17_DMA_CH2 +#define HAL_REMAPDMA_USART3_DMA_CH32 DMA_REMAP_USART3_DMA_CH32 +#define HAL_REMAPDMA_TIM16_DMA_CH6 DMA_REMAP_TIM16_DMA_CH6 +#define HAL_REMAPDMA_TIM17_DMA_CH7 DMA_REMAP_TIM17_DMA_CH7 +#define HAL_REMAPDMA_SPI2_DMA_CH67 DMA_REMAP_SPI2_DMA_CH67 +#define HAL_REMAPDMA_USART2_DMA_CH67 DMA_REMAP_USART2_DMA_CH67 +#define HAL_REMAPDMA_I2C1_DMA_CH76 DMA_REMAP_I2C1_DMA_CH76 +#define HAL_REMAPDMA_TIM1_DMA_CH6 DMA_REMAP_TIM1_DMA_CH6 +#define HAL_REMAPDMA_TIM2_DMA_CH7 DMA_REMAP_TIM2_DMA_CH7 +#define HAL_REMAPDMA_TIM3_DMA_CH6 DMA_REMAP_TIM3_DMA_CH6 + +#define IS_HAL_REMAPDMA IS_DMA_REMAP +#define __HAL_REMAPDMA_CHANNEL_ENABLE __HAL_DMA_REMAP_CHANNEL_ENABLE +#define __HAL_REMAPDMA_CHANNEL_DISABLE __HAL_DMA_REMAP_CHANNEL_DISABLE + +#if defined(STM32L4) + +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI1 HAL_DMAMUX1_REQ_GEN_EXTI1 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI2 HAL_DMAMUX1_REQ_GEN_EXTI2 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI3 HAL_DMAMUX1_REQ_GEN_EXTI3 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI4 HAL_DMAMUX1_REQ_GEN_EXTI4 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI5 HAL_DMAMUX1_REQ_GEN_EXTI5 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI6 HAL_DMAMUX1_REQ_GEN_EXTI6 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI7 HAL_DMAMUX1_REQ_GEN_EXTI7 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI8 HAL_DMAMUX1_REQ_GEN_EXTI8 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI9 HAL_DMAMUX1_REQ_GEN_EXTI9 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI10 HAL_DMAMUX1_REQ_GEN_EXTI10 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI11 HAL_DMAMUX1_REQ_GEN_EXTI11 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI12 HAL_DMAMUX1_REQ_GEN_EXTI12 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI13 HAL_DMAMUX1_REQ_GEN_EXTI13 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI14 HAL_DMAMUX1_REQ_GEN_EXTI14 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI15 HAL_DMAMUX1_REQ_GEN_EXTI15 +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH3_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_DSI_TE HAL_DMAMUX1_REQ_GEN_DSI_TE +#define HAL_DMAMUX1_REQUEST_GEN_DSI_EOT HAL_DMAMUX1_REQ_GEN_DSI_EOT +#define HAL_DMAMUX1_REQUEST_GEN_DMA2D_EOT HAL_DMAMUX1_REQ_GEN_DMA2D_EOT +#define HAL_DMAMUX1_REQUEST_GEN_LTDC_IT HAL_DMAMUX1_REQ_GEN_LTDC_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || \ + defined(STM32L4S7xx) || defined(STM32L4S9xx) +#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI +#endif + +#endif /* STM32L4 */ + +#if defined(STM32G0) +#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2 +#define DMA_REQUEST_TIM16_TRIG_COM DMA_REQUEST_TIM16_COM +#define DMA_REQUEST_TIM17_TRIG_COM DMA_REQUEST_TIM17_COM + +#define LL_DMAMUX_REQ_TIM16_TRIG_COM LL_DMAMUX_REQ_TIM16_COM +#define LL_DMAMUX_REQ_TIM17_TRIG_COM LL_DMAMUX_REQ_TIM17_COM +#endif + +#if defined(STM32H7) + +#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC2 DMA_REQUEST_DAC1_CH2 + +#define BDMA_REQUEST_LP_UART1_RX BDMA_REQUEST_LPUART1_RX +#define BDMA_REQUEST_LP_UART1_TX BDMA_REQUEST_LPUART1_TX + +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_TIM12_TRGO HAL_DMAMUX1_REQ_GEN_TIM12_TRGO + +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH0_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH1_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH2_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH3_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH4_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH5_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH6_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM4_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM5_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_WKUP HAL_DMAMUX2_REQ_GEN_I2C4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_WKUP HAL_DMAMUX2_REQ_GEN_SPI6_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_COMP1_OUT HAL_DMAMUX2_REQ_GEN_COMP1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_COMP2_OUT HAL_DMAMUX2_REQ_GEN_COMP2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_RTC_WKUP HAL_DMAMUX2_REQ_GEN_RTC_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_EXTI0 HAL_DMAMUX2_REQ_GEN_EXTI0 +#define HAL_DMAMUX2_REQUEST_GEN_EXTI2 HAL_DMAMUX2_REQ_GEN_EXTI2 +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_IT_EVT HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_IT HAL_DMAMUX2_REQ_GEN_SPI6_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_IT HAL_DMAMUX2_REQ_GEN_ADC3_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_AWD1_OUT HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH0_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH1_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#define DFSDM_FILTER_EXT_TRIG_LPTIM1 DFSDM_FILTER_EXT_TRIG_LPTIM1_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT + +#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT +#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT + +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define GPDMA1_REQUEST_DCMI GPDMA1_REQUEST_DCMI_PSSI +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define TYPEPROGRAM_BYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_HALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_WORD FLASH_TYPEPROGRAM_WORD +#define TYPEPROGRAM_DOUBLEWORD FLASH_TYPEPROGRAM_DOUBLEWORD +#define TYPEERASE_SECTORS FLASH_TYPEERASE_SECTORS +#define TYPEERASE_PAGES FLASH_TYPEERASE_PAGES +#define TYPEERASE_PAGEERASE FLASH_TYPEERASE_PAGES +#define TYPEERASE_MASSERASE FLASH_TYPEERASE_MASSERASE +#define WRPSTATE_DISABLE OB_WRPSTATE_DISABLE +#define WRPSTATE_ENABLE OB_WRPSTATE_ENABLE +#define HAL_FLASH_TIMEOUT_VALUE FLASH_TIMEOUT_VALUE +#define OBEX_PCROP OPTIONBYTE_PCROP +#define OBEX_BOOTCONFIG OPTIONBYTE_BOOTCONFIG +#define PCROPSTATE_DISABLE OB_PCROP_STATE_DISABLE +#define PCROPSTATE_ENABLE OB_PCROP_STATE_ENABLE +#define TYPEERASEDATA_BYTE FLASH_TYPEERASEDATA_BYTE +#define TYPEERASEDATA_HALFWORD FLASH_TYPEERASEDATA_HALFWORD +#define TYPEERASEDATA_WORD FLASH_TYPEERASEDATA_WORD +#define TYPEPROGRAMDATA_BYTE FLASH_TYPEPROGRAMDATA_BYTE +#define TYPEPROGRAMDATA_HALFWORD FLASH_TYPEPROGRAMDATA_HALFWORD +#define TYPEPROGRAMDATA_WORD FLASH_TYPEPROGRAMDATA_WORD +#define TYPEPROGRAMDATA_FASTBYTE FLASH_TYPEPROGRAMDATA_FASTBYTE +#define TYPEPROGRAMDATA_FASTHALFWORD FLASH_TYPEPROGRAMDATA_FASTHALFWORD +#define TYPEPROGRAMDATA_FASTWORD FLASH_TYPEPROGRAMDATA_FASTWORD +#if !defined(STM32F2) && !defined(STM32F4) && !defined(STM32F7) && !defined(STM32H7) && !defined(STM32H5) +#define PAGESIZE FLASH_PAGE_SIZE +#endif /* STM32F2 && STM32F4 && STM32F7 && STM32H7 && STM32H5 */ +#define TYPEPROGRAM_FASTBYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_FASTHALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_FASTWORD FLASH_TYPEPROGRAM_WORD +#define VOLTAGE_RANGE_1 FLASH_VOLTAGE_RANGE_1 +#define VOLTAGE_RANGE_2 FLASH_VOLTAGE_RANGE_2 +#define VOLTAGE_RANGE_3 FLASH_VOLTAGE_RANGE_3 +#define VOLTAGE_RANGE_4 FLASH_VOLTAGE_RANGE_4 +#define TYPEPROGRAM_FAST FLASH_TYPEPROGRAM_FAST +#define TYPEPROGRAM_FAST_AND_LAST FLASH_TYPEPROGRAM_FAST_AND_LAST +#define WRPAREA_BANK1_AREAA OB_WRPAREA_BANK1_AREAA +#define WRPAREA_BANK1_AREAB OB_WRPAREA_BANK1_AREAB +#define WRPAREA_BANK2_AREAA OB_WRPAREA_BANK2_AREAA +#define WRPAREA_BANK2_AREAB OB_WRPAREA_BANK2_AREAB +#define IWDG_STDBY_FREEZE OB_IWDG_STDBY_FREEZE +#define IWDG_STDBY_ACTIVE OB_IWDG_STDBY_RUN +#define IWDG_STOP_FREEZE OB_IWDG_STOP_FREEZE +#define IWDG_STOP_ACTIVE OB_IWDG_STOP_RUN +#define FLASH_ERROR_NONE HAL_FLASH_ERROR_NONE +#define FLASH_ERROR_RD HAL_FLASH_ERROR_RD +#define FLASH_ERROR_PG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_PGP HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_WRP HAL_FLASH_ERROR_WRP +#define FLASH_ERROR_OPTV HAL_FLASH_ERROR_OPTV +#define FLASH_ERROR_OPTVUSR HAL_FLASH_ERROR_OPTVUSR +#define FLASH_ERROR_PROG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_OP HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_PGA HAL_FLASH_ERROR_PGA +#define FLASH_ERROR_SIZE HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_SIZ HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_PGS HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_MIS HAL_FLASH_ERROR_MIS +#define FLASH_ERROR_FAST HAL_FLASH_ERROR_FAST +#define FLASH_ERROR_FWWERR HAL_FLASH_ERROR_FWWERR +#define FLASH_ERROR_NOTZERO HAL_FLASH_ERROR_NOTZERO +#define FLASH_ERROR_OPERATION HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_ERS HAL_FLASH_ERROR_ERS +#define OB_WDG_SW OB_IWDG_SW +#define OB_WDG_HW OB_IWDG_HW +#define OB_SDADC12_VDD_MONITOR_SET OB_SDACD_VDD_MONITOR_SET +#define OB_SDADC12_VDD_MONITOR_RESET OB_SDACD_VDD_MONITOR_RESET +#define OB_RAM_PARITY_CHECK_SET OB_SRAM_PARITY_SET +#define OB_RAM_PARITY_CHECK_RESET OB_SRAM_PARITY_RESET +#define IS_OB_SDADC12_VDD_MONITOR IS_OB_SDACD_VDD_MONITOR +#define OB_RDP_LEVEL0 OB_RDP_LEVEL_0 +#define OB_RDP_LEVEL1 OB_RDP_LEVEL_1 +#define OB_RDP_LEVEL2 OB_RDP_LEVEL_2 +#if defined(STM32G0) || defined(STM32C0) +#define OB_BOOT_LOCK_DISABLE OB_BOOT_ENTRY_FORCED_NONE +#define OB_BOOT_LOCK_ENABLE OB_BOOT_ENTRY_FORCED_FLASH +#else +#define OB_BOOT_ENTRY_FORCED_NONE OB_BOOT_LOCK_DISABLE +#define OB_BOOT_ENTRY_FORCED_FLASH OB_BOOT_LOCK_ENABLE +#endif +#if defined(STM32H7) +#define FLASH_FLAG_SNECCE_BANK1RR FLASH_FLAG_SNECCERR_BANK1 +#define FLASH_FLAG_DBECCE_BANK1RR FLASH_FLAG_DBECCERR_BANK1 +#define FLASH_FLAG_STRBER_BANK1R FLASH_FLAG_STRBERR_BANK1 +#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2 +#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2 +#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2 +#define FLASH_FLAG_WDW FLASH_FLAG_WBNE +#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL +#endif /* STM32H7 */ +#if defined(STM32H7RS) +#define FLASH_OPTKEY1 FLASH_OPT_KEY1 +#define FLASH_OPTKEY2 FLASH_OPT_KEY2 +#endif /* STM32H7RS */ +#if defined(STM32U5) +#define OB_USER_nRST_STOP OB_USER_NRST_STOP +#define OB_USER_nRST_STDBY OB_USER_NRST_STDBY +#define OB_USER_nRST_SHDW OB_USER_NRST_SHDW +#define OB_USER_nSWBOOT0 OB_USER_NSWBOOT0 +#define OB_USER_nBOOT0 OB_USER_NBOOT0 +#define OB_nBOOT0_RESET OB_NBOOT0_RESET +#define OB_nBOOT0_SET OB_NBOOT0_SET +#define OB_USER_SRAM134_RST OB_USER_SRAM_RST +#define OB_SRAM134_RST_ERASE OB_SRAM_RST_ERASE +#define OB_SRAM134_RST_NOT_ERASE OB_SRAM_RST_NOT_ERASE +#endif /* STM32U5 */ +#if defined(STM32U0) +#define OB_USER_nRST_STOP OB_USER_NRST_STOP +#define OB_USER_nRST_STDBY OB_USER_NRST_STDBY +#define OB_USER_nRST_SHDW OB_USER_NRST_SHDW +#define OB_USER_nBOOT_SEL OB_USER_NBOOT_SEL +#define OB_USER_nBOOT0 OB_USER_NBOOT0 +#define OB_USER_nBOOT1 OB_USER_NBOOT1 +#define OB_nBOOT0_RESET OB_NBOOT0_RESET +#define OB_nBOOT0_SET OB_NBOOT0_SET +#endif /* STM32U0 */ + +/** + * @} + */ + +/** @defgroup HAL_JPEG_Aliased_Macros HAL JPEG Aliased Macros maintained for legacy purpose + * @{ + */ + +#if defined(STM32H7) +#define __HAL_RCC_JPEG_CLK_ENABLE __HAL_RCC_JPGDECEN_CLK_ENABLE +#define __HAL_RCC_JPEG_CLK_DISABLE __HAL_RCC_JPGDECEN_CLK_DISABLE +#define __HAL_RCC_JPEG_FORCE_RESET __HAL_RCC_JPGDECRST_FORCE_RESET +#define __HAL_RCC_JPEG_RELEASE_RESET __HAL_RCC_JPGDECRST_RELEASE_RESET +#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE +#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose + * @{ + */ + +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9 I2C_FASTMODEPLUS_PA9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10 I2C_FASTMODEPLUS_PA10 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6 I2C_FASTMODEPLUS_PB6 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7 I2C_FASTMODEPLUS_PB7 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8 I2C_FASTMODEPLUS_PB8 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9 I2C_FASTMODEPLUS_PB9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1 +#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2 +#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3 +#if defined(STM32G4) + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster +#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD +#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD +#endif /* STM32G4 */ + +#if defined(STM32U5) + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOAnalogBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOAnalogBooster +#define HAL_SYSCFG_EnableIOAnalogSwitchVoltageSelection HAL_SYSCFG_EnableIOAnalogVoltageSelection +#define HAL_SYSCFG_DisableIOAnalogSwitchVoltageSelection HAL_SYSCFG_DisableIOAnalogVoltageSelection + +#endif /* STM32U5 */ + +#if defined(STM32H5) +#define SYSCFG_IT_FPU_IOC SBS_IT_FPU_IOC +#define SYSCFG_IT_FPU_DZC SBS_IT_FPU_DZC +#define SYSCFG_IT_FPU_UFC SBS_IT_FPU_UFC +#define SYSCFG_IT_FPU_OFC SBS_IT_FPU_OFC +#define SYSCFG_IT_FPU_IDC SBS_IT_FPU_IDC +#define SYSCFG_IT_FPU_IXC SBS_IT_FPU_IXC + +#define SYSCFG_BREAK_FLASH_ECC SBS_BREAK_FLASH_ECC +#define SYSCFG_BREAK_PVD SBS_BREAK_PVD +#define SYSCFG_BREAK_SRAM_ECC SBS_BREAK_SRAM_ECC +#define SYSCFG_BREAK_LOCKUP SBS_BREAK_LOCKUP + +#define SYSCFG_VREFBUF_VOLTAGE_SCALE0 VREFBUF_VOLTAGE_SCALE0 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_VOLTAGE_SCALE1 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE2 VREFBUF_VOLTAGE_SCALE2 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE3 VREFBUF_VOLTAGE_SCALE3 + +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE VREFBUF_HIGH_IMPEDANCE_DISABLE +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_HIGH_IMPEDANCE_ENABLE + +#define SYSCFG_FASTMODEPLUS_PB6 SBS_FASTMODEPLUS_PB6 +#define SYSCFG_FASTMODEPLUS_PB7 SBS_FASTMODEPLUS_PB7 +#define SYSCFG_FASTMODEPLUS_PB8 SBS_FASTMODEPLUS_PB8 +#define SYSCFG_FASTMODEPLUS_PB9 SBS_FASTMODEPLUS_PB9 + +#define SYSCFG_ETH_MII SBS_ETH_MII +#define SYSCFG_ETH_RMII SBS_ETH_RMII +#define IS_SYSCFG_ETHERNET_CONFIG IS_SBS_ETHERNET_CONFIG + +#define SYSCFG_MEMORIES_ERASE_FLAG_IPMEE SBS_MEMORIES_ERASE_FLAG_IPMEE +#define SYSCFG_MEMORIES_ERASE_FLAG_MCLR SBS_MEMORIES_ERASE_FLAG_MCLR +#define IS_SYSCFG_MEMORIES_ERASE_FLAG IS_SBS_MEMORIES_ERASE_FLAG + +#define IS_SYSCFG_CODE_CONFIG IS_SBS_CODE_CONFIG + +#define SYSCFG_MPU_NSEC SBS_MPU_NSEC +#define SYSCFG_VTOR_NSEC SBS_VTOR_NSEC +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#define SYSCFG_SAU SBS_SAU +#define SYSCFG_MPU_SEC SBS_MPU_SEC +#define SYSCFG_VTOR_AIRCR_SEC SBS_VTOR_AIRCR_SEC +#define SYSCFG_LOCK_ALL SBS_LOCK_ALL +#else +#define SYSCFG_LOCK_ALL SBS_LOCK_ALL +#endif /* __ARM_FEATURE_CMSE */ + +#define SYSCFG_CLK SBS_CLK +#define SYSCFG_CLASSB SBS_CLASSB +#define SYSCFG_FPU SBS_FPU +#define SYSCFG_ALL SBS_ALL + +#define SYSCFG_SEC SBS_SEC +#define SYSCFG_NSEC SBS_NSEC + +#define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE __HAL_SBS_FPU_INTERRUPT_ENABLE +#define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE __HAL_SBS_FPU_INTERRUPT_DISABLE + +#define __HAL_SYSCFG_BREAK_ECC_LOCK __HAL_SBS_BREAK_ECC_LOCK +#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK __HAL_SBS_BREAK_LOCKUP_LOCK +#define __HAL_SYSCFG_BREAK_PVD_LOCK __HAL_SBS_BREAK_PVD_LOCK +#define __HAL_SYSCFG_BREAK_SRAM_ECC_LOCK __HAL_SBS_BREAK_SRAM_ECC_LOCK + +#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE __HAL_SBS_FASTMODEPLUS_ENABLE +#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE __HAL_SBS_FASTMODEPLUS_DISABLE + +#define __HAL_SYSCFG_GET_MEMORIES_ERASE_STATUS __HAL_SBS_GET_MEMORIES_ERASE_STATUS +#define __HAL_SYSCFG_CLEAR_MEMORIES_ERASE_STATUS __HAL_SBS_CLEAR_MEMORIES_ERASE_STATUS + +#define IS_SYSCFG_FPU_INTERRUPT IS_SBS_FPU_INTERRUPT +#define IS_SYSCFG_BREAK_CONFIG IS_SBS_BREAK_CONFIG +#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE IS_VREFBUF_VOLTAGE_SCALE +#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE IS_VREFBUF_HIGH_IMPEDANCE +#define IS_SYSCFG_VREFBUF_TRIMMING IS_VREFBUF_TRIMMING +#define IS_SYSCFG_FASTMODEPLUS IS_SBS_FASTMODEPLUS +#define IS_SYSCFG_ITEMS_ATTRIBUTES IS_SBS_ITEMS_ATTRIBUTES +#define IS_SYSCFG_ATTRIBUTES IS_SBS_ATTRIBUTES +#define IS_SYSCFG_LOCK_ITEMS IS_SBS_LOCK_ITEMS + +#define HAL_SYSCFG_VREFBUF_VoltageScalingConfig HAL_VREFBUF_VoltageScalingConfig +#define HAL_SYSCFG_VREFBUF_HighImpedanceConfig HAL_VREFBUF_HighImpedanceConfig +#define HAL_SYSCFG_VREFBUF_TrimmingConfig HAL_VREFBUF_TrimmingConfig +#define HAL_SYSCFG_EnableVREFBUF HAL_EnableVREFBUF +#define HAL_SYSCFG_DisableVREFBUF HAL_DisableVREFBUF + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SBS_EnableIOAnalogSwitchBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SBS_DisableIOAnalogSwitchBooster +#define HAL_SYSCFG_ETHInterfaceSelect HAL_SBS_ETHInterfaceSelect + +#define HAL_SYSCFG_Lock HAL_SBS_Lock +#define HAL_SYSCFG_GetLock HAL_SBS_GetLock + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#define HAL_SYSCFG_ConfigAttributes HAL_SBS_ConfigAttributes +#define HAL_SYSCFG_GetConfigAttributes HAL_SBS_GetConfigAttributes +#endif /* __ARM_FEATURE_CMSE */ + +#endif /* STM32H5 */ + + +/** + * @} + */ + + +/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose + * @{ + */ +#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) +#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE +#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE +#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8 +#define FMC_NAND_PCC_MEM_BUS_WIDTH_16 FMC_NAND_MEM_BUS_WIDTH_16 +#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) +#define FMC_NAND_WAIT_FEATURE_DISABLE FMC_NAND_PCC_WAIT_FEATURE_DISABLE +#define FMC_NAND_WAIT_FEATURE_ENABLE FMC_NAND_PCC_WAIT_FEATURE_ENABLE +#define FMC_NAND_MEM_BUS_WIDTH_8 FMC_NAND_PCC_MEM_BUS_WIDTH_8 +#define FMC_NAND_MEM_BUS_WIDTH_16 FMC_NAND_PCC_MEM_BUS_WIDTH_16 +#endif +/** + * @} + */ + +/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FSMC_NORSRAM_TYPEDEF FSMC_NORSRAM_TypeDef +#define FSMC_NORSRAM_EXTENDED_TYPEDEF FSMC_NORSRAM_EXTENDED_TypeDef +/** + * @} + */ + +/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose + * @{ + */ +#define GET_GPIO_SOURCE GPIO_GET_INDEX +#define GET_GPIO_INDEX GPIO_GET_INDEX + +#if defined(STM32F4) +#define GPIO_AF12_SDMMC GPIO_AF12_SDIO +#define GPIO_AF12_SDMMC1 GPIO_AF12_SDIO +#endif + +#if defined(STM32F7) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32L4) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32H7) +#define GPIO_AF7_SDIO1 GPIO_AF7_SDMMC1 +#define GPIO_AF8_SDIO1 GPIO_AF8_SDMMC1 +#define GPIO_AF12_SDIO1 GPIO_AF12_SDMMC1 +#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2 +#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2 +#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2 + +#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \ + defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx) +#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS +#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS +#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS +#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || \ + STM32H757xx */ +#endif /* STM32H7 */ + +#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1 +#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1 +#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1 + +#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || \ + defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB || STM32U5*/ + +#if defined(STM32L1) +#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L1 */ + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_HIGH +#endif /* STM32F0 || STM32F3 || STM32F1 */ + +#define GPIO_AF6_DFSDM GPIO_AF6_DFSDM1 + +#if defined(STM32U5) || defined(STM32H5) +#define GPIO_AF0_RTC_50Hz GPIO_AF0_RTC_50HZ +#endif /* STM32U5 || STM32H5 */ +#if defined(STM32U5) +#define GPIO_AF0_S2DSTOP GPIO_AF0_SRDSTOP +#define GPIO_AF11_LPGPIO GPIO_AF11_LPGPIO1 +#endif /* STM32U5 */ + +#if defined(STM32WBA) +#define GPIO_AF11_RF_ANTSW0 GPIO_AF11_RF +#define GPIO_AF11_RF_ANTSW1 GPIO_AF11_RF +#define GPIO_AF11_RF_ANTSW2 GPIO_AF11_RF +#define GPIO_AF11_RF_IO1 GPIO_AF11_RF +#define GPIO_AF11_RF_IO2 GPIO_AF11_RF +#define GPIO_AF11_RF_IO3 GPIO_AF11_RF +#define GPIO_AF11_RF_IO4 GPIO_AF11_RF +#define GPIO_AF11_RF_IO5 GPIO_AF11_RF +#define GPIO_AF11_RF_IO6 GPIO_AF11_RF +#define GPIO_AF11_RF_IO7 GPIO_AF11_RF +#define GPIO_AF11_RF_IO8 GPIO_AF11_RF +#define GPIO_AF11_RF_IO9 GPIO_AF11_RF +#endif /* STM32WBA */ +/** + * @} + */ + +/** @defgroup HAL_GTZC_Aliased_Defines HAL GTZC Aliased Defines maintained for legacy purpose + * @{ + */ +#if defined(STM32U5) +#define GTZC_PERIPH_DCMI GTZC_PERIPH_DCMI_PSSI +#define GTZC_PERIPH_LTDC GTZC_PERIPH_LTDCUSB +#endif /* STM32U5 */ +#if defined(STM32H5) +#define GTZC_PERIPH_DAC12 GTZC_PERIPH_DAC1 +#define GTZC_PERIPH_ADC12 GTZC_PERIPH_ADC +#define GTZC_PERIPH_USBFS GTZC_PERIPH_USB +#endif /* STM32H5 */ +#if defined(STM32H5) || defined(STM32U5) +#define GTZC_MCPBB_NB_VCTR_REG_MAX GTZC_MPCBB_NB_VCTR_REG_MAX +#define GTZC_MCPBB_NB_LCK_VCTR_REG_MAX GTZC_MPCBB_NB_LCK_VCTR_REG_MAX +#define GTZC_MCPBB_SUPERBLOCK_UNLOCKED GTZC_MPCBB_SUPERBLOCK_UNLOCKED +#define GTZC_MCPBB_SUPERBLOCK_LOCKED GTZC_MPCBB_SUPERBLOCK_LOCKED +#define GTZC_MCPBB_BLOCK_NSEC GTZC_MPCBB_BLOCK_NSEC +#define GTZC_MCPBB_BLOCK_SEC GTZC_MPCBB_BLOCK_SEC +#define GTZC_MCPBB_BLOCK_NPRIV GTZC_MPCBB_BLOCK_NPRIV +#define GTZC_MCPBB_BLOCK_PRIV GTZC_MPCBB_BLOCK_PRIV +#define GTZC_MCPBB_LOCK_OFF GTZC_MPCBB_LOCK_OFF +#define GTZC_MCPBB_LOCK_ON GTZC_MPCBB_LOCK_ON +#endif /* STM32H5 || STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define HRTIM_TIMDELAYEDPROTECTION_DISABLED HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7 + +#define __HAL_HRTIM_SetCounter __HAL_HRTIM_SETCOUNTER +#define __HAL_HRTIM_GetCounter __HAL_HRTIM_GETCOUNTER +#define __HAL_HRTIM_SetPeriod __HAL_HRTIM_SETPERIOD +#define __HAL_HRTIM_GetPeriod __HAL_HRTIM_GETPERIOD +#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER +#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER +#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE +#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE + +#if defined(STM32F3) || defined(STM32G4) || defined(STM32H7) +#define HRTIMInterruptResquests HRTIMInterruptRequests +#endif /* STM32F3 || STM32G4 || STM32H7 */ + +#if defined(STM32G4) +#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig +#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable +#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable +#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset +#define HRTIM_TIMEEVENT_A HRTIM_EVENTCOUNTER_A +#define HRTIM_TIMEEVENT_B HRTIM_EVENTCOUNTER_B +#define HRTIM_TIMEEVENTRESETMODE_UNCONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_UNCONDITIONAL +#define HRTIM_TIMEEVENTRESETMODE_CONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_CONDITIONAL +#endif /* STM32G4 */ + +#if defined(STM32H7) +#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 + +#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 +#endif /* STM32H7 */ + +#if defined(STM32F3) +/** @brief Constants defining available sources associated to external events. + */ +#define HRTIM_EVENTSRC_1 (0x00000000U) +#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0) +#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1) +#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0) + +/** @brief Constants defining the DLL calibration periods (in micro seconds) + */ +#define HRTIM_CALIBRATIONRATE_7300 0x00000000U +#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0) +#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1) +#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0) +#endif /* STM32F3 */ + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2C_DUALADDRESS_DISABLED I2C_DUALADDRESS_DISABLE +#define I2C_DUALADDRESS_ENABLED I2C_DUALADDRESS_ENABLE +#define I2C_GENERALCALL_DISABLED I2C_GENERALCALL_DISABLE +#define I2C_GENERALCALL_ENABLED I2C_GENERALCALL_ENABLE +#define I2C_NOSTRETCH_DISABLED I2C_NOSTRETCH_DISABLE +#define I2C_NOSTRETCH_ENABLED I2C_NOSTRETCH_ENABLE +#define I2C_ANALOGFILTER_ENABLED I2C_ANALOGFILTER_ENABLE +#define I2C_ANALOGFILTER_DISABLED I2C_ANALOGFILTER_DISABLE +#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || \ + defined(STM32L1) || defined(STM32F7) +#define HAL_I2C_STATE_MEM_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MEM_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_MASTER_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MASTER_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_SLAVE_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_SLAVE_BUSY_RX HAL_I2C_STATE_BUSY_RX +#endif +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose + * @{ + */ +#define IRDA_ONE_BIT_SAMPLE_DISABLED IRDA_ONE_BIT_SAMPLE_DISABLE +#define IRDA_ONE_BIT_SAMPLE_ENABLED IRDA_ONE_BIT_SAMPLE_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define KR_KEY_RELOAD IWDG_KEY_RELOAD +#define KR_KEY_ENABLE IWDG_KEY_ENABLE +#define KR_KEY_EWA IWDG_KEY_WRITE_ACCESS_ENABLE +#define KR_KEY_DWA IWDG_KEY_WRITE_ACCESS_DISABLE +/** + * @} + */ + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ + +#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION +#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS LPTIM_CLOCKSAMPLETIME_2TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS LPTIM_CLOCKSAMPLETIME_4TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS LPTIM_CLOCKSAMPLETIME_8TRANSITIONS + +#define LPTIM_CLOCKPOLARITY_RISINGEDGE LPTIM_CLOCKPOLARITY_RISING +#define LPTIM_CLOCKPOLARITY_FALLINGEDGE LPTIM_CLOCKPOLARITY_FALLING +#define LPTIM_CLOCKPOLARITY_BOTHEDGES LPTIM_CLOCKPOLARITY_RISING_FALLING + +#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION +#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS LPTIM_TRIGSAMPLETIME_8TRANSITIONS + +/* The following 3 definition have also been present in a temporary version of lptim.h */ +/* They need to be renamed also to the right name, just in case */ +#define LPTIM_TRIGSAMPLETIME_2TRANSITION LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSITION LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSITION LPTIM_TRIGSAMPLETIME_8TRANSITIONS + + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_LPTIM_ReadCompare HAL_LPTIM_ReadCapturedValue +/** + * @} + */ + +#if defined(STM32U5) +#define LPTIM_ISR_CC1 LPTIM_ISR_CC1IF +#define LPTIM_ISR_CC2 LPTIM_ISR_CC2IF +#define LPTIM_CHANNEL_ALL 0x00000000U +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_NAND_Read_Page HAL_NAND_Read_Page_8b +#define HAL_NAND_Write_Page HAL_NAND_Write_Page_8b +#define HAL_NAND_Read_SpareArea HAL_NAND_Read_SpareArea_8b +#define HAL_NAND_Write_SpareArea HAL_NAND_Write_SpareArea_8b + +#define NAND_AddressTypedef NAND_AddressTypeDef + +#define __ARRAY_ADDRESS ARRAY_ADDRESS +#define __ADDR_1st_CYCLE ADDR_1ST_CYCLE +#define __ADDR_2nd_CYCLE ADDR_2ND_CYCLE +#define __ADDR_3rd_CYCLE ADDR_3RD_CYCLE +#define __ADDR_4th_CYCLE ADDR_4TH_CYCLE +/** + * @} + */ + +/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose + * @{ + */ +#define NOR_StatusTypedef HAL_NOR_StatusTypeDef +#define NOR_SUCCESS HAL_NOR_STATUS_SUCCESS +#define NOR_ONGOING HAL_NOR_STATUS_ONGOING +#define NOR_ERROR HAL_NOR_STATUS_ERROR +#define NOR_TIMEOUT HAL_NOR_STATUS_TIMEOUT + +#define __NOR_WRITE NOR_WRITE +#define __NOR_ADDR_SHIFT NOR_ADDR_SHIFT +/** + * @} + */ + +/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose + * @{ + */ + +#define OPAMP_NONINVERTINGINPUT_VP0 OPAMP_NONINVERTINGINPUT_IO0 +#define OPAMP_NONINVERTINGINPUT_VP1 OPAMP_NONINVERTINGINPUT_IO1 +#define OPAMP_NONINVERTINGINPUT_VP2 OPAMP_NONINVERTINGINPUT_IO2 +#define OPAMP_NONINVERTINGINPUT_VP3 OPAMP_NONINVERTINGINPUT_IO3 + +#define OPAMP_SEC_NONINVERTINGINPUT_VP0 OPAMP_SEC_NONINVERTINGINPUT_IO0 +#define OPAMP_SEC_NONINVERTINGINPUT_VP1 OPAMP_SEC_NONINVERTINGINPUT_IO1 +#define OPAMP_SEC_NONINVERTINGINPUT_VP2 OPAMP_SEC_NONINVERTINGINPUT_IO2 +#define OPAMP_SEC_NONINVERTINGINPUT_VP3 OPAMP_SEC_NONINVERTINGINPUT_IO3 + +#define OPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define OPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define IOPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define IOPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define OPAMP_SEC_INVERTINGINPUT_VM0 OPAMP_SEC_INVERTINGINPUT_IO0 +#define OPAMP_SEC_INVERTINGINPUT_VM1 OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_INVERTINGINPUT_VINM OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_PGACONNECT_NO OPAMP_PGA_CONNECT_INVERTINGINPUT_NO +#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 +#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1 + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4) || defined(STM32U5) +#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID +#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID +#endif + +#if defined(STM32L4) || defined(STM32L5) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALPOWER +#elif defined(STM32G4) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALSPEED +#endif + +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2S_STANDARD_PHILLIPS I2S_STANDARD_PHILIPS + +#if defined(STM32H7) +#define I2S_IT_TXE I2S_IT_TXP +#define I2S_IT_RXNE I2S_IT_RXP + +#define I2S_FLAG_TXE I2S_FLAG_TXP +#define I2S_FLAG_RXNE I2S_FLAG_RXP +#endif + +#if defined(STM32F7) +#define I2S_CLOCK_SYSCLK I2S_CLOCK_PLL +#endif +/** + * @} + */ + +/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose + * @{ + */ + +/* Compact Flash-ATA registers description */ +#define CF_DATA ATA_DATA +#define CF_SECTOR_COUNT ATA_SECTOR_COUNT +#define CF_SECTOR_NUMBER ATA_SECTOR_NUMBER +#define CF_CYLINDER_LOW ATA_CYLINDER_LOW +#define CF_CYLINDER_HIGH ATA_CYLINDER_HIGH +#define CF_CARD_HEAD ATA_CARD_HEAD +#define CF_STATUS_CMD ATA_STATUS_CMD +#define CF_STATUS_CMD_ALTERNATE ATA_STATUS_CMD_ALTERNATE +#define CF_COMMON_DATA_AREA ATA_COMMON_DATA_AREA + +/* Compact Flash-ATA commands */ +#define CF_READ_SECTOR_CMD ATA_READ_SECTOR_CMD +#define CF_WRITE_SECTOR_CMD ATA_WRITE_SECTOR_CMD +#define CF_ERASE_SECTOR_CMD ATA_ERASE_SECTOR_CMD +#define CF_IDENTIFY_CMD ATA_IDENTIFY_CMD + +#define PCCARD_StatusTypedef HAL_PCCARD_StatusTypeDef +#define PCCARD_SUCCESS HAL_PCCARD_STATUS_SUCCESS +#define PCCARD_ONGOING HAL_PCCARD_STATUS_ONGOING +#define PCCARD_ERROR HAL_PCCARD_STATUS_ERROR +#define PCCARD_TIMEOUT HAL_PCCARD_STATUS_TIMEOUT +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FORMAT_BIN RTC_FORMAT_BIN +#define FORMAT_BCD RTC_FORMAT_BCD + +#define RTC_ALARMSUBSECONDMASK_None RTC_ALARMSUBSECONDMASK_NONE +#define RTC_TAMPERERASEBACKUP_DISABLED RTC_TAMPER_ERASE_BACKUP_DISABLE +#define RTC_TAMPERMASK_FLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_TAMPERMASK_FLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE + +#define RTC_MASKTAMPERFLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_MASKTAMPERFLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE +#define RTC_TAMPERERASEBACKUP_ENABLED RTC_TAMPER_ERASE_BACKUP_ENABLE +#define RTC_TAMPER1_2_INTERRUPT RTC_ALL_TAMPER_INTERRUPT +#define RTC_TAMPER1_2_3_INTERRUPT RTC_ALL_TAMPER_INTERRUPT + +#define RTC_TIMESTAMPPIN_PC13 RTC_TIMESTAMPPIN_DEFAULT +#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PC1 RTC_TIMESTAMPPIN_POS2 + +#define RTC_OUTPUT_REMAP_PC13 RTC_OUTPUT_REMAP_NONE +#define RTC_OUTPUT_REMAP_PB14 RTC_OUTPUT_REMAP_POS1 +#define RTC_OUTPUT_REMAP_PB2 RTC_OUTPUT_REMAP_POS1 + +#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT +#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1 +#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1 + +#if defined(STM32H5) || defined(STM32H7RS) || defined(STM32N6) +#define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_BKP_SRAM TAMP_DEVICESECRETS_ERASE_BKPSRAM +#endif /* STM32H5 || STM32H7RS || STM32N6 */ + +#if defined(STM32WBA) +#define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_SRAM2 TAMP_DEVICESECRETS_ERASE_SRAM2 +#define TAMP_SECRETDEVICE_ERASE_RHUK TAMP_DEVICESECRETS_ERASE_RHUK +#define TAMP_SECRETDEVICE_ERASE_ICACHE TAMP_DEVICESECRETS_ERASE_ICACHE +#define TAMP_SECRETDEVICE_ERASE_SAES_AES_HASH TAMP_DEVICESECRETS_ERASE_SAES_AES_HASH +#define TAMP_SECRETDEVICE_ERASE_PKA_SRAM TAMP_DEVICESECRETS_ERASE_PKA_SRAM +#define TAMP_SECRETDEVICE_ERASE_ALL TAMP_DEVICESECRETS_ERASE_ALL +#endif /* STM32WBA */ + +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) || defined(STM32N6) +#define TAMP_SECRETDEVICE_ERASE_DISABLE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_ENABLE TAMP_SECRETDEVICE_ERASE_ALL +#endif /* STM32H5 || STM32WBA || STM32H7RS || STM32N6 */ + +#if defined(STM32F7) || defined(STM32WB) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_ENABLE_BITS_MASK +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_IT_ENABLE_BITS_MASK +#endif /* STM32F7 || STM32WB */ + +#if defined(STM32H7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT +#endif /* STM32H7 */ + +#if defined(STM32F7) || defined(STM32H7) || defined(STM32L0) || defined(STM32WB) +#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1 +#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2 +#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3 +#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMP +#endif /* STM32F7 || STM32H7 || STM32L0 || STM32WB */ + +/** + * @} + */ + + +/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMARTCARD_NACK_ENABLED SMARTCARD_NACK_ENABLE +#define SMARTCARD_NACK_DISABLED SMARTCARD_NACK_DISABLE + +#define SMARTCARD_ONEBIT_SAMPLING_DISABLED SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLED SMARTCARD_ONE_BIT_SAMPLE_ENABLE +#define SMARTCARD_ONEBIT_SAMPLING_DISABLE SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLE SMARTCARD_ONE_BIT_SAMPLE_ENABLE + +#define SMARTCARD_TIMEOUT_DISABLED SMARTCARD_TIMEOUT_DISABLE +#define SMARTCARD_TIMEOUT_ENABLED SMARTCARD_TIMEOUT_ENABLE + +#define SMARTCARD_LASTBIT_DISABLED SMARTCARD_LASTBIT_DISABLE +#define SMARTCARD_LASTBIT_ENABLED SMARTCARD_LASTBIT_ENABLE +/** + * @} + */ + + +/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMBUS_DUALADDRESS_DISABLED SMBUS_DUALADDRESS_DISABLE +#define SMBUS_DUALADDRESS_ENABLED SMBUS_DUALADDRESS_ENABLE +#define SMBUS_GENERALCALL_DISABLED SMBUS_GENERALCALL_DISABLE +#define SMBUS_GENERALCALL_ENABLED SMBUS_GENERALCALL_ENABLE +#define SMBUS_NOSTRETCH_DISABLED SMBUS_NOSTRETCH_DISABLE +#define SMBUS_NOSTRETCH_ENABLED SMBUS_NOSTRETCH_ENABLE +#define SMBUS_ANALOGFILTER_ENABLED SMBUS_ANALOGFILTER_ENABLE +#define SMBUS_ANALOGFILTER_DISABLED SMBUS_ANALOGFILTER_DISABLE +#define SMBUS_PEC_DISABLED SMBUS_PEC_DISABLE +#define SMBUS_PEC_ENABLED SMBUS_PEC_ENABLE +#define HAL_SMBUS_STATE_SLAVE_LISTEN HAL_SMBUS_STATE_LISTEN +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose + * @{ + */ +#define SPI_TIMODE_DISABLED SPI_TIMODE_DISABLE +#define SPI_TIMODE_ENABLED SPI_TIMODE_ENABLE + +#define SPI_CRCCALCULATION_DISABLED SPI_CRCCALCULATION_DISABLE +#define SPI_CRCCALCULATION_ENABLED SPI_CRCCALCULATION_ENABLE + +#define SPI_NSS_PULSE_DISABLED SPI_NSS_PULSE_DISABLE +#define SPI_NSS_PULSE_ENABLED SPI_NSS_PULSE_ENABLE + +#if defined(STM32H7) + +#define SPI_FLAG_TXE SPI_FLAG_TXP +#define SPI_FLAG_RXNE SPI_FLAG_RXP + +#define SPI_IT_TXE SPI_IT_TXP +#define SPI_IT_RXNE SPI_IT_RXP + +#define SPI_FRLVL_EMPTY SPI_RX_FIFO_0PACKET +#define SPI_FRLVL_QUARTER_FULL SPI_RX_FIFO_1PACKET +#define SPI_FRLVL_HALF_FULL SPI_RX_FIFO_2PACKET +#define SPI_FRLVL_FULL SPI_RX_FIFO_3PACKET + +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define CCER_CCxE_MASK TIM_CCER_CCxE_MASK +#define CCER_CCxNE_MASK TIM_CCER_CCxNE_MASK + +#define TIM_DMABase_CR1 TIM_DMABASE_CR1 +#define TIM_DMABase_CR2 TIM_DMABASE_CR2 +#define TIM_DMABase_SMCR TIM_DMABASE_SMCR +#define TIM_DMABase_DIER TIM_DMABASE_DIER +#define TIM_DMABase_SR TIM_DMABASE_SR +#define TIM_DMABase_EGR TIM_DMABASE_EGR +#define TIM_DMABase_CCMR1 TIM_DMABASE_CCMR1 +#define TIM_DMABase_CCMR2 TIM_DMABASE_CCMR2 +#define TIM_DMABase_CCER TIM_DMABASE_CCER +#define TIM_DMABase_CNT TIM_DMABASE_CNT +#define TIM_DMABase_PSC TIM_DMABASE_PSC +#define TIM_DMABase_ARR TIM_DMABASE_ARR +#define TIM_DMABase_RCR TIM_DMABASE_RCR +#define TIM_DMABase_CCR1 TIM_DMABASE_CCR1 +#define TIM_DMABase_CCR2 TIM_DMABASE_CCR2 +#define TIM_DMABase_CCR3 TIM_DMABASE_CCR3 +#define TIM_DMABase_CCR4 TIM_DMABASE_CCR4 +#define TIM_DMABase_BDTR TIM_DMABASE_BDTR +#define TIM_DMABase_DCR TIM_DMABASE_DCR +#define TIM_DMABase_DMAR TIM_DMABASE_DMAR +#define TIM_DMABase_OR1 TIM_DMABASE_OR1 +#define TIM_DMABase_CCMR3 TIM_DMABASE_CCMR3 +#define TIM_DMABase_CCR5 TIM_DMABASE_CCR5 +#define TIM_DMABase_CCR6 TIM_DMABASE_CCR6 +#define TIM_DMABase_OR2 TIM_DMABASE_OR2 +#define TIM_DMABase_OR3 TIM_DMABASE_OR3 +#define TIM_DMABase_OR TIM_DMABASE_OR + +#define TIM_EventSource_Update TIM_EVENTSOURCE_UPDATE +#define TIM_EventSource_CC1 TIM_EVENTSOURCE_CC1 +#define TIM_EventSource_CC2 TIM_EVENTSOURCE_CC2 +#define TIM_EventSource_CC3 TIM_EVENTSOURCE_CC3 +#define TIM_EventSource_CC4 TIM_EVENTSOURCE_CC4 +#define TIM_EventSource_COM TIM_EVENTSOURCE_COM +#define TIM_EventSource_Trigger TIM_EVENTSOURCE_TRIGGER +#define TIM_EventSource_Break TIM_EVENTSOURCE_BREAK +#define TIM_EventSource_Break2 TIM_EVENTSOURCE_BREAK2 + +#define TIM_DMABurstLength_1Transfer TIM_DMABURSTLENGTH_1TRANSFER +#define TIM_DMABurstLength_2Transfers TIM_DMABURSTLENGTH_2TRANSFERS +#define TIM_DMABurstLength_3Transfers TIM_DMABURSTLENGTH_3TRANSFERS +#define TIM_DMABurstLength_4Transfers TIM_DMABURSTLENGTH_4TRANSFERS +#define TIM_DMABurstLength_5Transfers TIM_DMABURSTLENGTH_5TRANSFERS +#define TIM_DMABurstLength_6Transfers TIM_DMABURSTLENGTH_6TRANSFERS +#define TIM_DMABurstLength_7Transfers TIM_DMABURSTLENGTH_7TRANSFERS +#define TIM_DMABurstLength_8Transfers TIM_DMABURSTLENGTH_8TRANSFERS +#define TIM_DMABurstLength_9Transfers TIM_DMABURSTLENGTH_9TRANSFERS +#define TIM_DMABurstLength_10Transfers TIM_DMABURSTLENGTH_10TRANSFERS +#define TIM_DMABurstLength_11Transfers TIM_DMABURSTLENGTH_11TRANSFERS +#define TIM_DMABurstLength_12Transfers TIM_DMABURSTLENGTH_12TRANSFERS +#define TIM_DMABurstLength_13Transfers TIM_DMABURSTLENGTH_13TRANSFERS +#define TIM_DMABurstLength_14Transfers TIM_DMABURSTLENGTH_14TRANSFERS +#define TIM_DMABurstLength_15Transfers TIM_DMABURSTLENGTH_15TRANSFERS +#define TIM_DMABurstLength_16Transfers TIM_DMABURSTLENGTH_16TRANSFERS +#define TIM_DMABurstLength_17Transfers TIM_DMABURSTLENGTH_17TRANSFERS +#define TIM_DMABurstLength_18Transfers TIM_DMABURSTLENGTH_18TRANSFERS + +#if defined(STM32L0) +#define TIM22_TI1_GPIO1 TIM22_TI1_GPIO +#define TIM22_TI1_GPIO2 TIM22_TI1_GPIO +#endif + +#if defined(STM32F3) +#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE +#endif + +#if defined(STM32H7) +#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1 +#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2 +#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1 +#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2 +#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1 +#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2 +#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1 +#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1 +#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2 +#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1 +#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2 +#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2 +#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1 +#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2 +#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2 +#endif + +#if defined(STM32U5) || defined(STM32MP2) +#define OCREF_CLEAR_SELECT_Pos OCREF_CLEAR_SELECT_POS +#define OCREF_CLEAR_SELECT_Msk OCREF_CLEAR_SELECT_MSK +#endif +/** + * @} + */ + +/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose + * @{ + */ +#define TSC_SYNC_POL_FALL TSC_SYNC_POLARITY_FALLING +#define TSC_SYNC_POL_RISE_HIGH TSC_SYNC_POLARITY_RISING +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose + * @{ + */ +#define UART_ONEBIT_SAMPLING_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONEBIT_SAMPLING_ENABLED UART_ONE_BIT_SAMPLE_ENABLE +#define UART_ONE_BIT_SAMPLE_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONE_BIT_SAMPLE_ENABLED UART_ONE_BIT_SAMPLE_ENABLE + +#define __HAL_UART_ONEBIT_ENABLE __HAL_UART_ONE_BIT_SAMPLE_ENABLE +#define __HAL_UART_ONEBIT_DISABLE __HAL_UART_ONE_BIT_SAMPLE_DISABLE + +#define __DIV_SAMPLING16 UART_DIV_SAMPLING16 +#define __DIVMANT_SAMPLING16 UART_DIVMANT_SAMPLING16 +#define __DIVFRAQ_SAMPLING16 UART_DIVFRAQ_SAMPLING16 +#define __UART_BRR_SAMPLING16 UART_BRR_SAMPLING16 + +#define __DIV_SAMPLING8 UART_DIV_SAMPLING8 +#define __DIVMANT_SAMPLING8 UART_DIVMANT_SAMPLING8 +#define __DIVFRAQ_SAMPLING8 UART_DIVFRAQ_SAMPLING8 +#define __UART_BRR_SAMPLING8 UART_BRR_SAMPLING8 + +#define __DIV_LPUART UART_DIV_LPUART + +#define UART_WAKEUPMETHODE_IDLELINE UART_WAKEUPMETHOD_IDLELINE +#define UART_WAKEUPMETHODE_ADDRESSMARK UART_WAKEUPMETHOD_ADDRESSMARK + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose + * @{ + */ + +#define USART_CLOCK_DISABLED USART_CLOCK_DISABLE +#define USART_CLOCK_ENABLED USART_CLOCK_ENABLE + +#define USARTNACK_ENABLED USART_NACK_ENABLE +#define USARTNACK_DISABLED USART_NACK_DISABLE +/** + * @} + */ + +/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define CFR_BASE WWDG_CFR_BASE + +/** + * @} + */ + +/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose + * @{ + */ +#define CAN_FilterFIFO0 CAN_FILTER_FIFO0 +#define CAN_FilterFIFO1 CAN_FILTER_FIFO1 +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME +#define INAK_TIMEOUT CAN_TIMEOUT_VALUE +#define SLAK_TIMEOUT CAN_TIMEOUT_VALUE +#define CAN_TXSTATUS_FAILED ((uint8_t)0x00U) +#define CAN_TXSTATUS_OK ((uint8_t)0x01U) +#define CAN_TXSTATUS_PENDING ((uint8_t)0x02U) + +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define VLAN_TAG ETH_VLAN_TAG +#define MIN_ETH_PAYLOAD ETH_MIN_ETH_PAYLOAD +#define MAX_ETH_PAYLOAD ETH_MAX_ETH_PAYLOAD +#define JUMBO_FRAME_PAYLOAD ETH_JUMBO_FRAME_PAYLOAD +#define MACMIIAR_CR_MASK ETH_MACMIIAR_CR_MASK +#define MACCR_CLEAR_MASK ETH_MACCR_CLEAR_MASK +#define MACFCR_CLEAR_MASK ETH_MACFCR_CLEAR_MASK +#define DMAOMR_CLEAR_MASK ETH_DMAOMR_CLEAR_MASK + +#define ETH_MMCCR 0x00000100U +#define ETH_MMCRIR 0x00000104U +#define ETH_MMCTIR 0x00000108U +#define ETH_MMCRIMR 0x0000010CU +#define ETH_MMCTIMR 0x00000110U +#define ETH_MMCTGFSCCR 0x0000014CU +#define ETH_MMCTGFMSCCR 0x00000150U +#define ETH_MMCTGFCR 0x00000168U +#define ETH_MMCRFCECR 0x00000194U +#define ETH_MMCRFAECR 0x00000198U +#define ETH_MMCRGUFCR 0x000001C4U + +#define ETH_MAC_TXFIFO_FULL 0x02000000U /* Tx FIFO full */ +#define ETH_MAC_TXFIFONOT_EMPTY 0x01000000U /* Tx FIFO not empty */ +#define ETH_MAC_TXFIFO_WRITE_ACTIVE 0x00400000U /* Tx FIFO write active */ +#define ETH_MAC_TXFIFO_IDLE 0x00000000U /* Tx FIFO read status: Idle */ +#define ETH_MAC_TXFIFO_READ 0x00100000U /* Tx FIFO read status: Read (transferring data to + the MAC transmitter) */ +#define ETH_MAC_TXFIFO_WAITING 0x00200000U /* Tx FIFO read status: Waiting for TxStatus from + MAC transmitter */ +#define ETH_MAC_TXFIFO_WRITING 0x00300000U /* Tx FIFO read status: Writing the received TxStatus + or flushing the TxFIFO */ +#define ETH_MAC_TRANSMISSION_PAUSE 0x00080000U /* MAC transmitter in pause */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE 0x00000000U /* MAC transmit frame controller: Idle */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING 0x00020000U /* MAC transmit frame controller: Waiting for Status + of previous frame or IFG/backoff period to be over */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF 0x00040000U /* MAC transmit frame controller: Generating and + transmitting a Pause control frame (in full duplex mode) */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING 0x00060000U /* MAC transmit frame controller: Transferring input + frame for transmission */ +#define ETH_MAC_MII_TRANSMIT_ACTIVE 0x00010000U /* MAC MII transmit engine active */ +#define ETH_MAC_RXFIFO_EMPTY 0x00000000U /* Rx FIFO fill level: empty */ +#define ETH_MAC_RXFIFO_BELOW_THRESHOLD 0x00000100U /* Rx FIFO fill level: fill-level below flow-control + de-activate threshold */ +#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD 0x00000200U /* Rx FIFO fill level: fill-level above flow-control + activate threshold */ +#define ETH_MAC_RXFIFO_FULL 0x00000300U /* Rx FIFO fill level: full */ +#if defined(STM32F1) +#else +#define ETH_MAC_READCONTROLLER_IDLE 0x00000000U /* Rx FIFO read controller IDLE state */ +#define ETH_MAC_READCONTROLLER_READING_DATA 0x00000020U /* Rx FIFO read controller Reading frame data */ +#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U /* Rx FIFO read controller Reading frame status + (or time-stamp) */ +#endif +#define ETH_MAC_READCONTROLLER_FLUSHING 0x00000060U /* Rx FIFO read controller Flushing the frame data and + status */ +#define ETH_MAC_RXFIFO_WRITE_ACTIVE 0x00000010U /* Rx FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_NOTACTIVE 0x00000000U /* MAC small FIFO read / write controllers not active */ +#define ETH_MAC_SMALL_FIFO_READ_ACTIVE 0x00000002U /* MAC small FIFO read controller active */ +#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE 0x00000004U /* MAC small FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_RW_ACTIVE 0x00000006U /* MAC small FIFO read / write controllers active */ +#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE 0x00000001U /* MAC MII receive protocol engine active */ + +#define ETH_TxPacketConfig ETH_TxPacketConfigTypeDef /* Transmit Packet Configuration structure definition */ + +/** + * @} + */ + +/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_DCMI_ERROR_OVF HAL_DCMI_ERROR_OVR +#define DCMI_IT_OVF DCMI_IT_OVR +#define DCMI_FLAG_OVFRI DCMI_FLAG_OVRRI +#define DCMI_FLAG_OVFMI DCMI_FLAG_OVRMI + +#define HAL_DCMI_ConfigCROP HAL_DCMI_ConfigCrop +#define HAL_DCMI_EnableCROP HAL_DCMI_EnableCrop +#define HAL_DCMI_DisableCROP HAL_DCMI_DisableCrop + +/** + * @} + */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) +/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose + * @{ + */ +#define DMA2D_ARGB8888 DMA2D_OUTPUT_ARGB8888 +#define DMA2D_RGB888 DMA2D_OUTPUT_RGB888 +#define DMA2D_RGB565 DMA2D_OUTPUT_RGB565 +#define DMA2D_ARGB1555 DMA2D_OUTPUT_ARGB1555 +#define DMA2D_ARGB4444 DMA2D_OUTPUT_ARGB4444 + +#define CM_ARGB8888 DMA2D_INPUT_ARGB8888 +#define CM_RGB888 DMA2D_INPUT_RGB888 +#define CM_RGB565 DMA2D_INPUT_RGB565 +#define CM_ARGB1555 DMA2D_INPUT_ARGB1555 +#define CM_ARGB4444 DMA2D_INPUT_ARGB4444 +#define CM_L8 DMA2D_INPUT_L8 +#define CM_AL44 DMA2D_INPUT_AL44 +#define CM_AL88 DMA2D_INPUT_AL88 +#define CM_L4 DMA2D_INPUT_L4 +#define CM_A8 DMA2D_INPUT_A8 +#define CM_A4 DMA2D_INPUT_A4 +/** + * @} + */ +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) || defined(STM32U5) +/** @defgroup DMA2D_Aliases DMA2D API Aliases + * @{ + */ +#define HAL_DMA2D_DisableCLUT HAL_DMA2D_CLUTLoading_Abort /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort + for compatibility with legacy code */ +/** + * @} + */ + +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 || STM32U5 */ + +/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_CRYP_ComputationCpltCallback HAL_CRYPEx_ComputationCpltCallback +/** + * @} + */ + +/** @defgroup HAL_DCACHE_Aliased_Functions HAL DCACHE Aliased Functions maintained for legacy purpose + * @{ + */ + +#if defined(STM32U5) +#define HAL_DCACHE_CleanInvalidateByAddr HAL_DCACHE_CleanInvalidByAddr +#define HAL_DCACHE_CleanInvalidateByAddr_IT HAL_DCACHE_CleanInvalidByAddr_IT +#endif /* STM32U5 */ + +/** + * @} + */ + +#if !defined(STM32F2) +/** @defgroup HASH_alias HASH API alias + * @{ + */ +#define HAL_HASHEx_IRQHandler HAL_HASH_IRQHandler /*!< Redirection for compatibility with legacy code */ +/** + * + * @} + */ +#endif /* STM32F2 */ +/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_HASH_STATETypeDef HAL_HASH_StateTypeDef +#define HAL_HASHPhaseTypeDef HAL_HASH_PhaseTypeDef +#define HAL_HMAC_MD5_Finish HAL_HASH_MD5_Finish +#define HAL_HMAC_SHA1_Finish HAL_HASH_SHA1_Finish +#define HAL_HMAC_SHA224_Finish HAL_HASH_SHA224_Finish +#define HAL_HMAC_SHA256_Finish HAL_HASH_SHA256_Finish + +/*HASH Algorithm Selection*/ + +#define HASH_AlgoSelection_SHA1 HASH_ALGOSELECTION_SHA1 +#define HASH_AlgoSelection_SHA224 HASH_ALGOSELECTION_SHA224 +#define HASH_AlgoSelection_SHA256 HASH_ALGOSELECTION_SHA256 +#define HASH_AlgoSelection_MD5 HASH_ALGOSELECTION_MD5 + +#define HASH_AlgoMode_HASH HASH_ALGOMODE_HASH +#define HASH_AlgoMode_HMAC HASH_ALGOMODE_HMAC + +#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY +#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY + +#if defined(STM32L4) || defined(STM32L5) || defined(STM32F2) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) + +#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt +#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End +#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT +#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT + +#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt +#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End +#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT +#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT + +#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt +#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End +#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT +#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT + +#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt +#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End +#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT +#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT + +#endif /* STM32L4 || STM32L5 || STM32F2 || STM32F4 || STM32F7 || STM32H7 */ +/** + * @} + */ + +/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode +#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode +#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode +#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode +#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode +#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode +#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd\ + )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : \ + HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph)) +#define HAL_VREFINT_OutputSelect HAL_SYSCFG_VREFINT_OutputSelect +#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT()) +#if defined(STM32L0) +#else +#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT()) +#endif +#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT()) +#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd\ + )==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : \ + HAL_ADCEx_DisableVREFINTTempSensor()) +#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || \ + defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ) +#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode +#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode +#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode +#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode +#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */ + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define FLASH_HalfPageProgram HAL_FLASHEx_HalfPageProgram +#define FLASH_EnableRunPowerDown HAL_FLASHEx_EnableRunPowerDown +#define FLASH_DisableRunPowerDown HAL_FLASHEx_DisableRunPowerDown +#define HAL_DATA_EEPROMEx_Unlock HAL_FLASHEx_DATAEEPROM_Unlock +#define HAL_DATA_EEPROMEx_Lock HAL_FLASHEx_DATAEEPROM_Lock +#define HAL_DATA_EEPROMEx_Erase HAL_FLASHEx_DATAEEPROM_Erase +#define HAL_DATA_EEPROMEx_Program HAL_FLASHEx_DATAEEPROM_Program + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_I2CEx_AnalogFilter_Config HAL_I2CEx_ConfigAnalogFilter +#define HAL_I2CEx_DigitalFilter_Config HAL_I2CEx_ConfigDigitalFilter +#define HAL_FMPI2CEx_AnalogFilter_Config HAL_FMPI2CEx_ConfigAnalogFilter +#define HAL_FMPI2CEx_DigitalFilter_Config HAL_FMPI2CEx_ConfigDigitalFilter + +#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd) == ENABLE)? \ + HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): \ + HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus)) + +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || \ + defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || \ + defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT +#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT +#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT +#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || + STM32L4 || STM32L5 || STM32G4 || STM32L1 */ +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || \ + defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA +#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA +#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA +#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */ + +#if defined(STM32F4) +#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT +#define HAL_FMPI2C_Master_Sequential_Receive_IT HAL_FMPI2C_Master_Seq_Receive_IT +#define HAL_FMPI2C_Slave_Sequential_Transmit_IT HAL_FMPI2C_Slave_Seq_Transmit_IT +#define HAL_FMPI2C_Slave_Sequential_Receive_IT HAL_FMPI2C_Slave_Seq_Receive_IT +#define HAL_FMPI2C_Master_Sequential_Transmit_DMA HAL_FMPI2C_Master_Seq_Transmit_DMA +#define HAL_FMPI2C_Master_Sequential_Receive_DMA HAL_FMPI2C_Master_Seq_Receive_DMA +#define HAL_FMPI2C_Slave_Sequential_Transmit_DMA HAL_FMPI2C_Slave_Seq_Transmit_DMA +#define HAL_FMPI2C_Slave_Sequential_Receive_DMA HAL_FMPI2C_Slave_Seq_Receive_DMA +#endif /* STM32F4 */ +/** + * @} + */ + +/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose + * @{ + */ + +#if defined(STM32G0) +#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD +#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD +#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD +#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler +#endif +#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD +#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg +#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown +#define HAL_PWR_DisableVddio2Monitor HAL_PWREx_DisableVddio2Monitor +#define HAL_PWR_EnableBkUpReg HAL_PWREx_EnableBkUpReg +#define HAL_PWR_EnableFlashPowerDown HAL_PWREx_EnableFlashPowerDown +#define HAL_PWR_EnableVddio2Monitor HAL_PWREx_EnableVddio2Monitor +#define HAL_PWR_PVD_PVM_IRQHandler HAL_PWREx_PVD_PVM_IRQHandler +#define HAL_PWR_PVDLevelConfig HAL_PWR_ConfigPVD +#define HAL_PWR_Vddio2Monitor_IRQHandler HAL_PWREx_Vddio2Monitor_IRQHandler +#define HAL_PWR_Vddio2MonitorCallback HAL_PWREx_Vddio2MonitorCallback +#define HAL_PWREx_ActivateOverDrive HAL_PWREx_EnableOverDrive +#define HAL_PWREx_DeactivateOverDrive HAL_PWREx_DisableOverDrive +#define HAL_PWREx_DisableSDADCAnalog HAL_PWREx_DisableSDADC +#define HAL_PWREx_EnableSDADCAnalog HAL_PWREx_EnableSDADC +#define HAL_PWREx_PVMConfig HAL_PWREx_ConfigPVM + +#define PWR_MODE_NORMAL PWR_PVD_MODE_NORMAL +#define PWR_MODE_IT_RISING PWR_PVD_MODE_IT_RISING +#define PWR_MODE_IT_FALLING PWR_PVD_MODE_IT_FALLING +#define PWR_MODE_IT_RISING_FALLING PWR_PVD_MODE_IT_RISING_FALLING +#define PWR_MODE_EVENT_RISING PWR_PVD_MODE_EVENT_RISING +#define PWR_MODE_EVENT_FALLING PWR_PVD_MODE_EVENT_FALLING +#define PWR_MODE_EVENT_RISING_FALLING PWR_PVD_MODE_EVENT_RISING_FALLING + +#define CR_OFFSET_BB PWR_CR_OFFSET_BB +#define CSR_OFFSET_BB PWR_CSR_OFFSET_BB +#define PMODE_BIT_NUMBER VOS_BIT_NUMBER +#define CR_PMODE_BB CR_VOS_BB + +#define DBP_BitNumber DBP_BIT_NUMBER +#define PVDE_BitNumber PVDE_BIT_NUMBER +#define PMODE_BitNumber PMODE_BIT_NUMBER +#define EWUP_BitNumber EWUP_BIT_NUMBER +#define FPDS_BitNumber FPDS_BIT_NUMBER +#define ODEN_BitNumber ODEN_BIT_NUMBER +#define ODSWEN_BitNumber ODSWEN_BIT_NUMBER +#define MRLVDS_BitNumber MRLVDS_BIT_NUMBER +#define LPLVDS_BitNumber LPLVDS_BIT_NUMBER +#define BRE_BitNumber BRE_BIT_NUMBER + +#define PWR_MODE_EVT PWR_PVD_MODE_NORMAL + +#if defined (STM32U5) +#define PWR_SRAM1_PAGE1_STOP_RETENTION PWR_SRAM1_PAGE1_STOP +#define PWR_SRAM1_PAGE2_STOP_RETENTION PWR_SRAM1_PAGE2_STOP +#define PWR_SRAM1_PAGE3_STOP_RETENTION PWR_SRAM1_PAGE3_STOP +#define PWR_SRAM1_PAGE4_STOP_RETENTION PWR_SRAM1_PAGE4_STOP +#define PWR_SRAM1_PAGE5_STOP_RETENTION PWR_SRAM1_PAGE5_STOP +#define PWR_SRAM1_PAGE6_STOP_RETENTION PWR_SRAM1_PAGE6_STOP +#define PWR_SRAM1_PAGE7_STOP_RETENTION PWR_SRAM1_PAGE7_STOP +#define PWR_SRAM1_PAGE8_STOP_RETENTION PWR_SRAM1_PAGE8_STOP +#define PWR_SRAM1_PAGE9_STOP_RETENTION PWR_SRAM1_PAGE9_STOP +#define PWR_SRAM1_PAGE10_STOP_RETENTION PWR_SRAM1_PAGE10_STOP +#define PWR_SRAM1_PAGE11_STOP_RETENTION PWR_SRAM1_PAGE11_STOP +#define PWR_SRAM1_PAGE12_STOP_RETENTION PWR_SRAM1_PAGE12_STOP +#define PWR_SRAM1_FULL_STOP_RETENTION PWR_SRAM1_FULL_STOP + +#define PWR_SRAM2_PAGE1_STOP_RETENTION PWR_SRAM2_PAGE1_STOP +#define PWR_SRAM2_PAGE2_STOP_RETENTION PWR_SRAM2_PAGE2_STOP +#define PWR_SRAM2_FULL_STOP_RETENTION PWR_SRAM2_FULL_STOP + +#define PWR_SRAM3_PAGE1_STOP_RETENTION PWR_SRAM3_PAGE1_STOP +#define PWR_SRAM3_PAGE2_STOP_RETENTION PWR_SRAM3_PAGE2_STOP +#define PWR_SRAM3_PAGE3_STOP_RETENTION PWR_SRAM3_PAGE3_STOP +#define PWR_SRAM3_PAGE4_STOP_RETENTION PWR_SRAM3_PAGE4_STOP +#define PWR_SRAM3_PAGE5_STOP_RETENTION PWR_SRAM3_PAGE5_STOP +#define PWR_SRAM3_PAGE6_STOP_RETENTION PWR_SRAM3_PAGE6_STOP +#define PWR_SRAM3_PAGE7_STOP_RETENTION PWR_SRAM3_PAGE7_STOP +#define PWR_SRAM3_PAGE8_STOP_RETENTION PWR_SRAM3_PAGE8_STOP +#define PWR_SRAM3_PAGE9_STOP_RETENTION PWR_SRAM3_PAGE9_STOP +#define PWR_SRAM3_PAGE10_STOP_RETENTION PWR_SRAM3_PAGE10_STOP +#define PWR_SRAM3_PAGE11_STOP_RETENTION PWR_SRAM3_PAGE11_STOP +#define PWR_SRAM3_PAGE12_STOP_RETENTION PWR_SRAM3_PAGE12_STOP +#define PWR_SRAM3_PAGE13_STOP_RETENTION PWR_SRAM3_PAGE13_STOP +#define PWR_SRAM3_FULL_STOP_RETENTION PWR_SRAM3_FULL_STOP + +#define PWR_SRAM4_FULL_STOP_RETENTION PWR_SRAM4_FULL_STOP + +#define PWR_SRAM5_PAGE1_STOP_RETENTION PWR_SRAM5_PAGE1_STOP +#define PWR_SRAM5_PAGE2_STOP_RETENTION PWR_SRAM5_PAGE2_STOP +#define PWR_SRAM5_PAGE3_STOP_RETENTION PWR_SRAM5_PAGE3_STOP +#define PWR_SRAM5_PAGE4_STOP_RETENTION PWR_SRAM5_PAGE4_STOP +#define PWR_SRAM5_PAGE5_STOP_RETENTION PWR_SRAM5_PAGE5_STOP +#define PWR_SRAM5_PAGE6_STOP_RETENTION PWR_SRAM5_PAGE6_STOP +#define PWR_SRAM5_PAGE7_STOP_RETENTION PWR_SRAM5_PAGE7_STOP +#define PWR_SRAM5_PAGE8_STOP_RETENTION PWR_SRAM5_PAGE8_STOP +#define PWR_SRAM5_PAGE9_STOP_RETENTION PWR_SRAM5_PAGE9_STOP +#define PWR_SRAM5_PAGE10_STOP_RETENTION PWR_SRAM5_PAGE10_STOP +#define PWR_SRAM5_PAGE11_STOP_RETENTION PWR_SRAM5_PAGE11_STOP +#define PWR_SRAM5_PAGE12_STOP_RETENTION PWR_SRAM5_PAGE12_STOP +#define PWR_SRAM5_PAGE13_STOP_RETENTION PWR_SRAM5_PAGE13_STOP +#define PWR_SRAM5_FULL_STOP_RETENTION PWR_SRAM5_FULL_STOP + +#define PWR_SRAM6_PAGE1_STOP_RETENTION PWR_SRAM6_PAGE1_STOP +#define PWR_SRAM6_PAGE2_STOP_RETENTION PWR_SRAM6_PAGE2_STOP +#define PWR_SRAM6_PAGE3_STOP_RETENTION PWR_SRAM6_PAGE3_STOP +#define PWR_SRAM6_PAGE4_STOP_RETENTION PWR_SRAM6_PAGE4_STOP +#define PWR_SRAM6_PAGE5_STOP_RETENTION PWR_SRAM6_PAGE5_STOP +#define PWR_SRAM6_PAGE6_STOP_RETENTION PWR_SRAM6_PAGE6_STOP +#define PWR_SRAM6_PAGE7_STOP_RETENTION PWR_SRAM6_PAGE7_STOP +#define PWR_SRAM6_PAGE8_STOP_RETENTION PWR_SRAM6_PAGE8_STOP +#define PWR_SRAM6_FULL_STOP_RETENTION PWR_SRAM6_FULL_STOP + + +#define PWR_ICACHE_FULL_STOP_RETENTION PWR_ICACHE_FULL_STOP +#define PWR_DCACHE1_FULL_STOP_RETENTION PWR_DCACHE1_FULL_STOP +#define PWR_DCACHE2_FULL_STOP_RETENTION PWR_DCACHE2_FULL_STOP +#define PWR_DMA2DRAM_FULL_STOP_RETENTION PWR_DMA2DRAM_FULL_STOP +#define PWR_PERIPHRAM_FULL_STOP_RETENTION PWR_PERIPHRAM_FULL_STOP +#define PWR_PKA32RAM_FULL_STOP_RETENTION PWR_PKA32RAM_FULL_STOP +#define PWR_GRAPHICPRAM_FULL_STOP_RETENTION PWR_GRAPHICPRAM_FULL_STOP +#define PWR_DSIRAM_FULL_STOP_RETENTION PWR_DSIRAM_FULL_STOP +#define PWR_JPEGRAM_FULL_STOP_RETENTION PWR_JPEGRAM_FULL_STOP + + +#define PWR_SRAM2_PAGE1_STANDBY_RETENTION PWR_SRAM2_PAGE1_STANDBY +#define PWR_SRAM2_PAGE2_STANDBY_RETENTION PWR_SRAM2_PAGE2_STANDBY +#define PWR_SRAM2_FULL_STANDBY_RETENTION PWR_SRAM2_FULL_STANDBY + +#define PWR_SRAM1_FULL_RUN_RETENTION PWR_SRAM1_FULL_RUN +#define PWR_SRAM2_FULL_RUN_RETENTION PWR_SRAM2_FULL_RUN +#define PWR_SRAM3_FULL_RUN_RETENTION PWR_SRAM3_FULL_RUN +#define PWR_SRAM4_FULL_RUN_RETENTION PWR_SRAM4_FULL_RUN +#define PWR_SRAM5_FULL_RUN_RETENTION PWR_SRAM5_FULL_RUN +#define PWR_SRAM6_FULL_RUN_RETENTION PWR_SRAM6_FULL_RUN + +#define PWR_ALL_RAM_RUN_RETENTION_MASK PWR_ALL_RAM_RUN_MASK +#endif + +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Functions HAL RTC Aliased Functions maintained for legacy purpose + * @{ + */ +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) || defined(STM32N6) +#define HAL_RTCEx_SetBoothardwareKey HAL_RTCEx_LockBootHardwareKey +#define HAL_RTCEx_BKUPBlock_Enable HAL_RTCEx_BKUPBlock +#define HAL_RTCEx_BKUPBlock_Disable HAL_RTCEx_BKUPUnblock +#define HAL_RTCEx_Erase_SecretDev_Conf HAL_RTCEx_ConfigEraseDeviceSecrets +#endif /* STM32H5 || STM32WBA || STM32H7RS || STM32N6 */ + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SMBUS_Slave_Listen_IT HAL_SMBUS_EnableListen_IT +#define HAL_SMBUS_SlaveAddrCallback HAL_SMBUS_AddrCallback +#define HAL_SMBUS_SlaveListenCpltCallback HAL_SMBUS_ListenCpltCallback +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SPI_FlushRxFifo HAL_SPIEx_FlushRxFifo +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_TIM_DMADelayPulseCplt TIM_DMADelayPulseCplt +#define HAL_TIM_DMAError TIM_DMAError +#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt +#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt +#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || \ + defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) +#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro +#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT +#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback +#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent +#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT +#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA +#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */ +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback +#define HAL_LTDC_Relaod HAL_LTDC_Reload +#define HAL_LTDC_StructInitFromVideoConfig HAL_LTDCEx_StructInitFromVideoConfig +#define HAL_LTDC_StructInitFromAdaptedCommandConfig HAL_LTDCEx_StructInitFromAdaptedCommandConfig +/** + * @} + */ + + +/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported macros ------------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose + * @{ + */ +#define AES_IT_CC CRYP_IT_CC +#define AES_IT_ERR CRYP_IT_ERR +#define AES_FLAG_CCF CRYP_FLAG_CCF +/** + * @} + */ + +/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_GET_BOOT_MODE __HAL_SYSCFG_GET_BOOT_MODE +#define __HAL_REMAPMEMORY_FLASH __HAL_SYSCFG_REMAPMEMORY_FLASH +#define __HAL_REMAPMEMORY_SYSTEMFLASH __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH +#define __HAL_REMAPMEMORY_SRAM __HAL_SYSCFG_REMAPMEMORY_SRAM +#define __HAL_REMAPMEMORY_FMC __HAL_SYSCFG_REMAPMEMORY_FMC +#define __HAL_REMAPMEMORY_FMC_SDRAM __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM +#define __HAL_REMAPMEMORY_FSMC __HAL_SYSCFG_REMAPMEMORY_FSMC +#define __HAL_REMAPMEMORY_QUADSPI __HAL_SYSCFG_REMAPMEMORY_QUADSPI +#define __HAL_FMC_BANK __HAL_SYSCFG_FMC_BANK +#define __HAL_GET_FLAG __HAL_SYSCFG_GET_FLAG +#define __HAL_CLEAR_FLAG __HAL_SYSCFG_CLEAR_FLAG +#define __HAL_VREFINT_OUT_ENABLE __HAL_SYSCFG_VREFINT_OUT_ENABLE +#define __HAL_VREFINT_OUT_DISABLE __HAL_SYSCFG_VREFINT_OUT_DISABLE +#define __HAL_SYSCFG_SRAM2_WRP_ENABLE __HAL_SYSCFG_SRAM2_WRP_0_31_ENABLE + +#define SYSCFG_FLAG_VREF_READY SYSCFG_FLAG_VREFINT_READY +#define SYSCFG_FLAG_RC48 RCC_FLAG_HSI48 +#define IS_SYSCFG_FASTMODEPLUS_CONFIG IS_I2C_FASTMODEPLUS +#define UFB_MODE_BitNumber UFB_MODE_BIT_NUMBER +#define CMP_PD_BitNumber CMP_PD_BIT_NUMBER + +/** + * @} + */ + + +/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __ADC_ENABLE __HAL_ADC_ENABLE +#define __ADC_DISABLE __HAL_ADC_DISABLE +#define __HAL_ADC_ENABLING_CONDITIONS ADC_ENABLING_CONDITIONS +#define __HAL_ADC_DISABLING_CONDITIONS ADC_DISABLING_CONDITIONS +#define __HAL_ADC_IS_ENABLED ADC_IS_ENABLE +#define __ADC_IS_ENABLED ADC_IS_ENABLE +#define __HAL_ADC_IS_SOFTWARE_START_REGULAR ADC_IS_SOFTWARE_START_REGULAR +#define __HAL_ADC_IS_SOFTWARE_START_INJECTED ADC_IS_SOFTWARE_START_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR ADC_IS_CONVERSION_ONGOING_REGULAR +#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED ADC_IS_CONVERSION_ONGOING_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING ADC_IS_CONVERSION_ONGOING +#define __HAL_ADC_CLEAR_ERRORCODE ADC_CLEAR_ERRORCODE + +#define __HAL_ADC_GET_RESOLUTION ADC_GET_RESOLUTION +#define __HAL_ADC_JSQR_RK ADC_JSQR_RK +#define __HAL_ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_SHIFT +#define __HAL_ADC_CFGR_AWD23CR ADC_CFGR_AWD23CR +#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION ADC_CFGR_INJECT_AUTO_CONVERSION +#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE ADC_CFGR_INJECT_CONTEXT_QUEUE +#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS ADC_CFGR_INJECT_DISCCONTINUOUS +#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS ADC_CFGR_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM ADC_CFGR_DISCONTINUOUS_NUM +#define __HAL_ADC_CFGR_AUTOWAIT ADC_CFGR_AUTOWAIT +#define __HAL_ADC_CFGR_CONTINUOUS ADC_CFGR_CONTINUOUS +#define __HAL_ADC_CFGR_OVERRUN ADC_CFGR_OVERRUN +#define __HAL_ADC_CFGR_DMACONTREQ ADC_CFGR_DMACONTREQ +#define __HAL_ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_SET +#define __HAL_ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_SET +#define __HAL_ADC_OFR_CHANNEL ADC_OFR_CHANNEL +#define __HAL_ADC_DIFSEL_CHANNEL ADC_DIFSEL_CHANNEL +#define __HAL_ADC_CALFACT_DIFF_SET ADC_CALFACT_DIFF_SET +#define __HAL_ADC_CALFACT_DIFF_GET ADC_CALFACT_DIFF_GET +#define __HAL_ADC_TRX_HIGHTHRESHOLD ADC_TRX_HIGHTHRESHOLD + +#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION ADC_OFFSET_SHIFT_RESOLUTION +#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION ADC_AWD1THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION ADC_AWD23THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_COMMON_REGISTER ADC_COMMON_REGISTER +#define __HAL_ADC_COMMON_CCR_MULTI ADC_COMMON_CCR_MULTI +#define __HAL_ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER ADC_NONMULTIMODE_OR_MULTIMODEMASTER +#define __HAL_ADC_COMMON_ADC_OTHER ADC_COMMON_ADC_OTHER +#define __HAL_ADC_MULTI_SLAVE ADC_MULTI_SLAVE + +#define __HAL_ADC_SQR1_L ADC_SQR1_L_SHIFT +#define __HAL_ADC_JSQR_JL ADC_JSQR_JL_SHIFT +#define __HAL_ADC_JSQR_RK_JL ADC_JSQR_RK_JL +#define __HAL_ADC_CR1_DISCONTINUOUS_NUM ADC_CR1_DISCONTINUOUS_NUM +#define __HAL_ADC_CR1_SCAN ADC_CR1_SCAN_SET +#define __HAL_ADC_CONVCYCLES_MAX_RANGE ADC_CONVCYCLES_MAX_RANGE +#define __HAL_ADC_CLOCK_PRESCALER_RANGE ADC_CLOCK_PRESCALER_RANGE +#define __HAL_ADC_GET_CLOCK_PRESCALER ADC_GET_CLOCK_PRESCALER + +#define __HAL_ADC_SQR1 ADC_SQR1 +#define __HAL_ADC_SMPR1 ADC_SMPR1 +#define __HAL_ADC_SMPR2 ADC_SMPR2 +#define __HAL_ADC_SQR3_RK ADC_SQR3_RK +#define __HAL_ADC_SQR2_RK ADC_SQR2_RK +#define __HAL_ADC_SQR1_RK ADC_SQR1_RK +#define __HAL_ADC_CR2_CONTINUOUS ADC_CR2_CONTINUOUS +#define __HAL_ADC_CR1_DISCONTINUOUS ADC_CR1_DISCONTINUOUS +#define __HAL_ADC_CR1_SCANCONV ADC_CR1_SCANCONV +#define __HAL_ADC_CR2_EOCSelection ADC_CR2_EOCSelection +#define __HAL_ADC_CR2_DMAContReq ADC_CR2_DMAContReq +#define __HAL_ADC_JSQR ADC_JSQR + +#define __HAL_ADC_CHSELR_CHANNEL ADC_CHSELR_CHANNEL +#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS ADC_CFGR1_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR1_AUTOOFF ADC_CFGR1_AUTOOFF +#define __HAL_ADC_CFGR1_AUTOWAIT ADC_CFGR1_AUTOWAIT +#define __HAL_ADC_CFGR1_CONTINUOUS ADC_CFGR1_CONTINUOUS +#define __HAL_ADC_CFGR1_OVERRUN ADC_CFGR1_OVERRUN +#define __HAL_ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR +#define __HAL_ADC_CFGR1_DMACONTREQ ADC_CFGR1_DMACONTREQ + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_DHR12R1_ALIGNEMENT DAC_DHR12R1_ALIGNMENT +#define __HAL_DHR12R2_ALIGNEMENT DAC_DHR12R2_ALIGNMENT +#define __HAL_DHR12RD_ALIGNEMENT DAC_DHR12RD_ALIGNMENT +#define IS_DAC_GENERATE_WAVE IS_DAC_WAVE + +/** + * @} + */ + +/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1 +#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1 +#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2 +#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2 +#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3 +#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3 +#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4 +#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4 +#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5 +#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5 +#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6 +#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6 +#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7 +#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7 +#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8 +#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8 + +#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9 +#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9 +#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10 +#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10 +#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11 +#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11 +#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12 +#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12 +#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13 +#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13 +#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14 +#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14 +#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2 +#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2 + + +#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15 +#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15 +#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16 +#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16 +#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17 +#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17 +#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC +#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC +#if defined(STM32H7) +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG1 +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UnFreeze_WWDG1 +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG1 +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UnFreeze_IWDG1 +#else +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG +#endif /* STM32H7 */ +#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT +#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT +#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT +#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT +#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT +#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT +#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1 +#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1 +#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1 +#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1 +#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2 +#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2 + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32F3) +#define COMP_START __HAL_COMP_ENABLE +#define COMP_STOP __HAL_COMP_DISABLE +#define COMP_LOCK __HAL_COMP_LOCK + +#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || \ + defined(STM32F334x8) || defined(STM32F328xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F302xE) || defined(STM32F302xC) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP7_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP7_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F373xC) ||defined(STM32F378xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +#endif +#else +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +#endif + +#define __HAL_COMP_GET_EXTI_LINE COMP_GET_EXTI_LINE + +#if defined(STM32L0) || defined(STM32L4) +/* Note: On these STM32 families, the only argument of this macro */ +/* is COMP_FLAG_LOCK. */ +/* This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle */ +/* argument. */ +#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_COMP_IS_LOCKED(__HANDLE__)) +#endif +/** + * @} + */ + +#if defined(STM32L0) || defined(STM32L4) +/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_COMP_Start_IT HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is + done into HAL_COMP_Init() */ +#define HAL_COMP_Stop_IT HAL_COMP_Stop /* Function considered as legacy as EXTI event or IT configuration is + done into HAL_COMP_Init() */ +/** + * @} + */ +#endif + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \ + ((WAVE) == DAC_WAVE_NOISE)|| \ + ((WAVE) == DAC_WAVE_TRIANGLE)) + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_WRPAREA IS_OB_WRPAREA +#define IS_TYPEPROGRAM IS_FLASH_TYPEPROGRAM +#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM +#define IS_TYPEERASE IS_FLASH_TYPEERASE +#define IS_NBSECTORS IS_FLASH_NBSECTORS +#define IS_OB_WDG_SOURCE IS_OB_IWDG_SOURCE + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_I2C_RESET_CR2 I2C_RESET_CR2 +#define __HAL_I2C_GENERATE_START I2C_GENERATE_START +#if defined(STM32F1) +#define __HAL_I2C_FREQ_RANGE I2C_FREQRANGE +#else +#define __HAL_I2C_FREQ_RANGE I2C_FREQ_RANGE +#endif /* STM32F1 */ +#define __HAL_I2C_RISE_TIME I2C_RISE_TIME +#define __HAL_I2C_SPEED_STANDARD I2C_SPEED_STANDARD +#define __HAL_I2C_SPEED_FAST I2C_SPEED_FAST +#define __HAL_I2C_SPEED I2C_SPEED +#define __HAL_I2C_7BIT_ADD_WRITE I2C_7BIT_ADD_WRITE +#define __HAL_I2C_7BIT_ADD_READ I2C_7BIT_ADD_READ +#define __HAL_I2C_10BIT_ADDRESS I2C_10BIT_ADDRESS +#define __HAL_I2C_10BIT_HEADER_WRITE I2C_10BIT_HEADER_WRITE +#define __HAL_I2C_10BIT_HEADER_READ I2C_10BIT_HEADER_READ +#define __HAL_I2C_MEM_ADD_MSB I2C_MEM_ADD_MSB +#define __HAL_I2C_MEM_ADD_LSB I2C_MEM_ADD_LSB +#define __HAL_I2C_FREQRANGE I2C_FREQRANGE +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_I2S_INSTANCE IS_I2S_ALL_INSTANCE +#define IS_I2S_INSTANCE_EXT IS_I2S_ALL_INSTANCE_EXT + +#if defined(STM32H7) +#define __HAL_I2S_CLEAR_FREFLAG __HAL_I2S_CLEAR_TIFREFLAG +#endif + +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __IRDA_DISABLE __HAL_IRDA_DISABLE +#define __IRDA_ENABLE __HAL_IRDA_ENABLE + +#define __HAL_IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __HAL_IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION +#define __IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION + +#define IS_IRDA_ONEBIT_SAMPLE IS_IRDA_ONE_BIT_SAMPLE + + +/** + * @} + */ + + +/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_IWDG_ENABLE_WRITE_ACCESS IWDG_ENABLE_WRITE_ACCESS +#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS +/** + * @} + */ + + +/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_LPTIM_ENABLE_INTERRUPT __HAL_LPTIM_ENABLE_IT +#define __HAL_LPTIM_DISABLE_INTERRUPT __HAL_LPTIM_DISABLE_IT +#define __HAL_LPTIM_GET_ITSTATUS __HAL_LPTIM_GET_IT_SOURCE + +/** + * @} + */ + + +/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose + * @{ + */ +#define __OPAMP_CSR_OPAXPD OPAMP_CSR_OPAXPD +#define __OPAMP_CSR_S3SELX OPAMP_CSR_S3SELX +#define __OPAMP_CSR_S4SELX OPAMP_CSR_S4SELX +#define __OPAMP_CSR_S5SELX OPAMP_CSR_S5SELX +#define __OPAMP_CSR_S6SELX OPAMP_CSR_S6SELX +#define __OPAMP_CSR_OPAXCAL_L OPAMP_CSR_OPAXCAL_L +#define __OPAMP_CSR_OPAXCAL_H OPAMP_CSR_OPAXCAL_H +#define __OPAMP_CSR_OPAXLPM OPAMP_CSR_OPAXLPM +#define __OPAMP_CSR_ALL_SWITCHES OPAMP_CSR_ALL_SWITCHES +#define __OPAMP_CSR_ANAWSELX OPAMP_CSR_ANAWSELX +#define __OPAMP_CSR_OPAXCALOUT OPAMP_CSR_OPAXCALOUT +#define __OPAMP_OFFSET_TRIM_BITSPOSITION OPAMP_OFFSET_TRIM_BITSPOSITION +#define __OPAMP_OFFSET_TRIM_SET OPAMP_OFFSET_TRIM_SET + +/** + * @} + */ + + +/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_PVD_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PVD_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PVM_EVENT_DISABLE __HAL_PWR_PVM_EVENT_DISABLE +#define __HAL_PVM_EVENT_ENABLE __HAL_PWR_PVM_EVENT_ENABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE +#define __HAL_PWR_INTERNALWAKEUP_DISABLE HAL_PWREx_DisableInternalWakeUpLine +#define __HAL_PWR_INTERNALWAKEUP_ENABLE HAL_PWREx_EnableInternalWakeUpLine +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE HAL_PWREx_DisablePullUpPullDownConfig +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE HAL_PWREx_EnablePullUpPullDownConfig +#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER() do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0) +#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVM_DISABLE() do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2(); \ + HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); \ + } while(0) +#define __HAL_PWR_PVM_ENABLE() do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2(); \ + HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); \ + } while(0) +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE HAL_PWREx_DisableSRAM2ContentRetention +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE HAL_PWREx_EnableSRAM2ContentRetention +#define __HAL_PWR_VDDIO2_DISABLE HAL_PWREx_DisableVddIO2 +#define __HAL_PWR_VDDIO2_ENABLE HAL_PWREx_EnableVddIO2 +#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_VDDUSB_DISABLE HAL_PWREx_DisableVddUSB +#define __HAL_PWR_VDDUSB_ENABLE HAL_PWREx_EnableVddUSB + +#if defined (STM32F4) +#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_ENABLE_IT() +#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_DISABLE_IT() +#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GET_FLAG() +#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_CLEAR_FLAG() +#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GENERATE_SWIT() +#else +#define __HAL_PVD_EXTI_CLEAR_FLAG __HAL_PWR_PVD_EXTI_CLEAR_FLAG +#define __HAL_PVD_EXTI_DISABLE_IT __HAL_PWR_PVD_EXTI_DISABLE_IT +#define __HAL_PVD_EXTI_ENABLE_IT __HAL_PWR_PVD_EXTI_ENABLE_IT +#define __HAL_PVD_EXTI_GENERATE_SWIT __HAL_PWR_PVD_EXTI_GENERATE_SWIT +#define __HAL_PVD_EXTI_GET_FLAG __HAL_PWR_PVD_EXTI_GET_FLAG +#endif /* STM32F4 */ +/** + * @} + */ + + +/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose + * @{ + */ + +#define RCC_StopWakeUpClock_MSI RCC_STOP_WAKEUPCLOCK_MSI +#define RCC_StopWakeUpClock_HSI RCC_STOP_WAKEUPCLOCK_HSI + +#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback +#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? \ + HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT()) + +#define __ADC_CLK_DISABLE __HAL_RCC_ADC_CLK_DISABLE +#define __ADC_CLK_ENABLE __HAL_RCC_ADC_CLK_ENABLE +#define __ADC_CLK_SLEEP_DISABLE __HAL_RCC_ADC_CLK_SLEEP_DISABLE +#define __ADC_CLK_SLEEP_ENABLE __HAL_RCC_ADC_CLK_SLEEP_ENABLE +#define __ADC_FORCE_RESET __HAL_RCC_ADC_FORCE_RESET +#define __ADC_RELEASE_RESET __HAL_RCC_ADC_RELEASE_RESET +#define __ADC1_CLK_DISABLE __HAL_RCC_ADC1_CLK_DISABLE +#define __ADC1_CLK_ENABLE __HAL_RCC_ADC1_CLK_ENABLE +#define __ADC1_FORCE_RESET __HAL_RCC_ADC1_FORCE_RESET +#define __ADC1_RELEASE_RESET __HAL_RCC_ADC1_RELEASE_RESET +#define __ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC1_CLK_SLEEP_ENABLE +#define __ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC1_CLK_SLEEP_DISABLE +#define __ADC2_CLK_DISABLE __HAL_RCC_ADC2_CLK_DISABLE +#define __ADC2_CLK_ENABLE __HAL_RCC_ADC2_CLK_ENABLE +#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET +#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET +#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE +#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE +#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET +#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET +#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#define __CRYP_CLK_SLEEP_ENABLE __HAL_RCC_CRYP_CLK_SLEEP_ENABLE +#define __CRYP_CLK_SLEEP_DISABLE __HAL_RCC_CRYP_CLK_SLEEP_DISABLE +#define __CRYP_CLK_ENABLE __HAL_RCC_CRYP_CLK_ENABLE +#define __CRYP_CLK_DISABLE __HAL_RCC_CRYP_CLK_DISABLE +#define __CRYP_FORCE_RESET __HAL_RCC_CRYP_FORCE_RESET +#define __CRYP_RELEASE_RESET __HAL_RCC_CRYP_RELEASE_RESET +#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE +#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE +#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET +#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET +#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET +#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET +#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET +#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET +#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET +#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET +#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET +#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET +#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET +#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET +#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET +#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET +#if defined(STM32C0) +#define __HAL_RCC_APB1_FORCE_RESET __HAL_RCC_APB1_GRP1_FORCE_RESET +#define __HAL_RCC_APB1_RELEASE_RESET __HAL_RCC_APB1_GRP1_RELEASE_RESET +#define __HAL_RCC_APB2_FORCE_RESET __HAL_RCC_APB1_GRP2_FORCE_RESET +#define __HAL_RCC_APB2_RELEASE_RESET __HAL_RCC_APB1_GRP2_RELEASE_RESET +#endif /* STM32C0 */ +#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE +#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE +#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET +#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET +#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE +#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE +#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE +#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE +#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET +#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET +#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE +#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE +#define __COMP_CLK_DISABLE __HAL_RCC_COMP_CLK_DISABLE +#define __COMP_CLK_ENABLE __HAL_RCC_COMP_CLK_ENABLE +#define __COMP_FORCE_RESET __HAL_RCC_COMP_FORCE_RESET +#define __COMP_RELEASE_RESET __HAL_RCC_COMP_RELEASE_RESET +#define __COMP_CLK_SLEEP_ENABLE __HAL_RCC_COMP_CLK_SLEEP_ENABLE +#define __COMP_CLK_SLEEP_DISABLE __HAL_RCC_COMP_CLK_SLEEP_DISABLE +#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET +#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET +#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE +#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE +#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE +#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE +#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET +#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET +#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE +#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE +#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET +#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET +#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE +#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE +#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE +#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE +#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET +#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET +#define __DBGMCU_CLK_ENABLE __HAL_RCC_DBGMCU_CLK_ENABLE +#define __DBGMCU_CLK_DISABLE __HAL_RCC_DBGMCU_CLK_DISABLE +#define __DBGMCU_FORCE_RESET __HAL_RCC_DBGMCU_FORCE_RESET +#define __DBGMCU_RELEASE_RESET __HAL_RCC_DBGMCU_RELEASE_RESET +#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE +#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE +#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE +#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE +#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET +#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET +#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE +#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE +#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE +#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE +#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET +#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET +#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE +#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE +#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE +#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE +#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET +#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET +#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE +#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE +#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET +#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET +#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE +#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE +#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE +#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE +#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE +#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE +#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE +#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE +#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE +#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE +#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET +#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET +#define __FLITF_CLK_DISABLE __HAL_RCC_FLITF_CLK_DISABLE +#define __FLITF_CLK_ENABLE __HAL_RCC_FLITF_CLK_ENABLE +#define __FLITF_FORCE_RESET __HAL_RCC_FLITF_FORCE_RESET +#define __FLITF_RELEASE_RESET __HAL_RCC_FLITF_RELEASE_RESET +#define __FLITF_CLK_SLEEP_ENABLE __HAL_RCC_FLITF_CLK_SLEEP_ENABLE +#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE +#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE +#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE +#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE +#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE +#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET +#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET +#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE +#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE +#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE +#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE +#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE +#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE +#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET +#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET +#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE +#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE +#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE +#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE +#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET +#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET +#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE +#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE +#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE +#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE +#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET +#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET +#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE +#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE +#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE +#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE +#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET +#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET +#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE +#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE +#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE +#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE +#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET +#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET +#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE +#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE +#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE +#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE +#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET +#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET +#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE +#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE +#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE +#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE +#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET +#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET +#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE +#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE +#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE +#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE +#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET +#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET +#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE +#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE +#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE +#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE +#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET +#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET +#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE +#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE +#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE +#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE +#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET +#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET +#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE +#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE +#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE +#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE +#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET +#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET +#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE +#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE +#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE +#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE +#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET +#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET +#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE +#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE +#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE +#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE +#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET +#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET +#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE +#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE +#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE +#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE +#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET +#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET +#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE +#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE +#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE +#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE +#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET +#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET +#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE +#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE +#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE +#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE +#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET +#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET +#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE +#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE +#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE +#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE +#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET +#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET +#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE +#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE +#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE +#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE +#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET +#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET +#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE +#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE +#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE +#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE +#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET +#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET + +#if defined(STM32WB) +#define __HAL_RCC_QSPI_CLK_DISABLE __HAL_RCC_QUADSPI_CLK_DISABLE +#define __HAL_RCC_QSPI_CLK_ENABLE __HAL_RCC_QUADSPI_CLK_ENABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QUADSPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QUADSPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_QSPI_FORCE_RESET __HAL_RCC_QUADSPI_FORCE_RESET +#define __HAL_RCC_QSPI_RELEASE_RESET __HAL_RCC_QUADSPI_RELEASE_RESET +#define __HAL_RCC_QSPI_IS_CLK_ENABLED __HAL_RCC_QUADSPI_IS_CLK_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_DISABLED __HAL_RCC_QUADSPI_IS_CLK_DISABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_DISABLED +#define QSPI_IRQHandler QUADSPI_IRQHandler +#endif /* __HAL_RCC_QUADSPI_CLK_ENABLE */ + +#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE +#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE +#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE +#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE +#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET +#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET +#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE +#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE +#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE +#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE +#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET +#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET +#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE +#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE +#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE +#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE +#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET +#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET +#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE +#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE +#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE +#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE +#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET +#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET +#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE +#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE +#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE +#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE +#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET +#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET +#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE +#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE +#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE +#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE +#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET +#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET +#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE +#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE +#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE +#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE +#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET +#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET +#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE +#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE +#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE +#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE +#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE +#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE +#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE +#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE +#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE +#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE +#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET +#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET +#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE +#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE +#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE +#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE +#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET +#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET +#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE +#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE +#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE +#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE +#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET +#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET +#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE +#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE +#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET +#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET +#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE +#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE +#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET +#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET +#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE +#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE +#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET +#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET +#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE +#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE +#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET +#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET +#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE +#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE +#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET +#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET +#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE +#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE +#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE +#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE +#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET +#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET +#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE +#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE +#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE +#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE +#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET +#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET +#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE +#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE +#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE +#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE +#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET +#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET +#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE +#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE +#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE +#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE +#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET +#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET +#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE +#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE +#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE +#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE +#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET +#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET +#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE +#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE +#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE +#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE +#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET +#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET +#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE +#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE +#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE +#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE +#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET +#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET +#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE +#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE +#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE +#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE +#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET +#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET +#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE +#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE +#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE +#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE +#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET +#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET +#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE +#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE +#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE +#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE +#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET +#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET +#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE +#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE +#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET +#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET +#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE +#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE +#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE +#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE +#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET +#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET +#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE +#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE +#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE +#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE +#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET +#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET +#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE +#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE +#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE +#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE +#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET +#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET +#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE +#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE +#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE +#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE +#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET +#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET +#define __USART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __USART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __USART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __USART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __USART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __USART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __USART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __USART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __USART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __USART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __USART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __USART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __USART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __USART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __USART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __USART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __USART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __USART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __USART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __USB_CLK_DISABLE __HAL_RCC_USB_CLK_DISABLE +#define __USB_CLK_ENABLE __HAL_RCC_USB_CLK_ENABLE +#define __USB_FORCE_RESET __HAL_RCC_USB_FORCE_RESET +#define __USB_CLK_SLEEP_ENABLE __HAL_RCC_USB_CLK_SLEEP_ENABLE +#define __USB_CLK_SLEEP_DISABLE __HAL_RCC_USB_CLK_SLEEP_DISABLE +#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE +#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE +#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET + +#if defined(STM32H7) +#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE +#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE + +#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/ +#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/ + + +#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED +#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED +#define RCC_SPI4CLKSOURCE_D2PCLK1 RCC_SPI4CLKSOURCE_D2PCLK2 +#define RCC_SPI5CLKSOURCE_D2PCLK1 RCC_SPI5CLKSOURCE_D2PCLK2 +#define RCC_SPI45CLKSOURCE_D2PCLK1 RCC_SPI45CLKSOURCE_D2PCLK2 +#define RCC_SPI45CLKSOURCE_CDPCLK1 RCC_SPI45CLKSOURCE_CDPCLK2 +#define RCC_SPI45CLKSOURCE_PCLK1 RCC_SPI45CLKSOURCE_PCLK2 +#endif + +#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE +#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE +#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE +#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE +#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET +#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET + +#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE +#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE +#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET +#define __TIM21_RELEASE_RESET __HAL_RCC_TIM21_RELEASE_RESET +#define __TIM21_CLK_SLEEP_ENABLE __HAL_RCC_TIM21_CLK_SLEEP_ENABLE +#define __TIM21_CLK_SLEEP_DISABLE __HAL_RCC_TIM21_CLK_SLEEP_DISABLE +#define __TIM22_CLK_ENABLE __HAL_RCC_TIM22_CLK_ENABLE +#define __TIM22_CLK_DISABLE __HAL_RCC_TIM22_CLK_DISABLE +#define __TIM22_FORCE_RESET __HAL_RCC_TIM22_FORCE_RESET +#define __TIM22_RELEASE_RESET __HAL_RCC_TIM22_RELEASE_RESET +#define __TIM22_CLK_SLEEP_ENABLE __HAL_RCC_TIM22_CLK_SLEEP_ENABLE +#define __TIM22_CLK_SLEEP_DISABLE __HAL_RCC_TIM22_CLK_SLEEP_DISABLE +#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE +#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE +#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE +#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE +#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET +#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET +#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE +#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE + +#define __USB_OTG_FS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __USB_OTG_FS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET +#define __USB_OTG_FS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE +#define __USB_OTG_FS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE +#define __USB_OTG_HS_CLK_DISABLE __HAL_RCC_USB_OTG_HS_CLK_DISABLE +#define __USB_OTG_HS_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE +#define __TIM9_CLK_SLEEP_ENABLE __HAL_RCC_TIM9_CLK_SLEEP_ENABLE +#define __TIM9_CLK_SLEEP_DISABLE __HAL_RCC_TIM9_CLK_SLEEP_DISABLE +#define __TIM10_CLK_SLEEP_ENABLE __HAL_RCC_TIM10_CLK_SLEEP_ENABLE +#define __TIM10_CLK_SLEEP_DISABLE __HAL_RCC_TIM10_CLK_SLEEP_DISABLE +#define __TIM11_CLK_SLEEP_ENABLE __HAL_RCC_TIM11_CLK_SLEEP_ENABLE +#define __TIM11_CLK_SLEEP_DISABLE __HAL_RCC_TIM11_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE +#define __ETHMACPTP_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_ENABLE __HAL_RCC_ETHMACPTP_CLK_ENABLE +#define __ETHMACPTP_CLK_DISABLE __HAL_RCC_ETHMACPTP_CLK_DISABLE +#define __HASH_CLK_ENABLE __HAL_RCC_HASH_CLK_ENABLE +#define __HASH_FORCE_RESET __HAL_RCC_HASH_FORCE_RESET +#define __HASH_RELEASE_RESET __HAL_RCC_HASH_RELEASE_RESET +#define __HASH_CLK_SLEEP_ENABLE __HAL_RCC_HASH_CLK_SLEEP_ENABLE +#define __HASH_CLK_SLEEP_DISABLE __HAL_RCC_HASH_CLK_SLEEP_DISABLE +#define __HASH_CLK_DISABLE __HAL_RCC_HASH_CLK_DISABLE +#define __SPI5_CLK_ENABLE __HAL_RCC_SPI5_CLK_ENABLE +#define __SPI5_CLK_DISABLE __HAL_RCC_SPI5_CLK_DISABLE +#define __SPI5_FORCE_RESET __HAL_RCC_SPI5_FORCE_RESET +#define __SPI5_RELEASE_RESET __HAL_RCC_SPI5_RELEASE_RESET +#define __SPI5_CLK_SLEEP_ENABLE __HAL_RCC_SPI5_CLK_SLEEP_ENABLE +#define __SPI5_CLK_SLEEP_DISABLE __HAL_RCC_SPI5_CLK_SLEEP_DISABLE +#define __SPI6_CLK_ENABLE __HAL_RCC_SPI6_CLK_ENABLE +#define __SPI6_CLK_DISABLE __HAL_RCC_SPI6_CLK_DISABLE +#define __SPI6_FORCE_RESET __HAL_RCC_SPI6_FORCE_RESET +#define __SPI6_RELEASE_RESET __HAL_RCC_SPI6_RELEASE_RESET +#define __SPI6_CLK_SLEEP_ENABLE __HAL_RCC_SPI6_CLK_SLEEP_ENABLE +#define __SPI6_CLK_SLEEP_DISABLE __HAL_RCC_SPI6_CLK_SLEEP_DISABLE +#define __LTDC_CLK_ENABLE __HAL_RCC_LTDC_CLK_ENABLE +#define __LTDC_CLK_DISABLE __HAL_RCC_LTDC_CLK_DISABLE +#define __LTDC_FORCE_RESET __HAL_RCC_LTDC_FORCE_RESET +#define __LTDC_RELEASE_RESET __HAL_RCC_LTDC_RELEASE_RESET +#define __LTDC_CLK_SLEEP_ENABLE __HAL_RCC_LTDC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_ENABLE __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_DISABLE __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE +#define __ETHMACTX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE +#define __ETHMACTX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE +#define __ETHMACRX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE +#define __ETHMACRX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE +#define __TIM12_CLK_SLEEP_ENABLE __HAL_RCC_TIM12_CLK_SLEEP_ENABLE +#define __TIM12_CLK_SLEEP_DISABLE __HAL_RCC_TIM12_CLK_SLEEP_DISABLE +#define __TIM13_CLK_SLEEP_ENABLE __HAL_RCC_TIM13_CLK_SLEEP_ENABLE +#define __TIM13_CLK_SLEEP_DISABLE __HAL_RCC_TIM13_CLK_SLEEP_DISABLE +#define __TIM14_CLK_SLEEP_ENABLE __HAL_RCC_TIM14_CLK_SLEEP_ENABLE +#define __TIM14_CLK_SLEEP_DISABLE __HAL_RCC_TIM14_CLK_SLEEP_DISABLE +#define __BKPSRAM_CLK_ENABLE __HAL_RCC_BKPSRAM_CLK_ENABLE +#define __BKPSRAM_CLK_DISABLE __HAL_RCC_BKPSRAM_CLK_DISABLE +#define __BKPSRAM_CLK_SLEEP_ENABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE +#define __BKPSRAM_CLK_SLEEP_DISABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE +#define __CCMDATARAMEN_CLK_ENABLE __HAL_RCC_CCMDATARAMEN_CLK_ENABLE +#define __CCMDATARAMEN_CLK_DISABLE __HAL_RCC_CCMDATARAMEN_CLK_DISABLE +#define __USART6_CLK_ENABLE __HAL_RCC_USART6_CLK_ENABLE +#define __USART6_CLK_DISABLE __HAL_RCC_USART6_CLK_DISABLE +#define __USART6_FORCE_RESET __HAL_RCC_USART6_FORCE_RESET +#define __USART6_RELEASE_RESET __HAL_RCC_USART6_RELEASE_RESET +#define __USART6_CLK_SLEEP_ENABLE __HAL_RCC_USART6_CLK_SLEEP_ENABLE +#define __USART6_CLK_SLEEP_DISABLE __HAL_RCC_USART6_CLK_SLEEP_DISABLE +#define __SPI4_CLK_ENABLE __HAL_RCC_SPI4_CLK_ENABLE +#define __SPI4_CLK_DISABLE __HAL_RCC_SPI4_CLK_DISABLE +#define __SPI4_FORCE_RESET __HAL_RCC_SPI4_FORCE_RESET +#define __SPI4_RELEASE_RESET __HAL_RCC_SPI4_RELEASE_RESET +#define __SPI4_CLK_SLEEP_ENABLE __HAL_RCC_SPI4_CLK_SLEEP_ENABLE +#define __SPI4_CLK_SLEEP_DISABLE __HAL_RCC_SPI4_CLK_SLEEP_DISABLE +#define __GPIOI_CLK_ENABLE __HAL_RCC_GPIOI_CLK_ENABLE +#define __GPIOI_CLK_DISABLE __HAL_RCC_GPIOI_CLK_DISABLE +#define __GPIOI_FORCE_RESET __HAL_RCC_GPIOI_FORCE_RESET +#define __GPIOI_RELEASE_RESET __HAL_RCC_GPIOI_RELEASE_RESET +#define __GPIOI_CLK_SLEEP_ENABLE __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE +#define __GPIOI_CLK_SLEEP_DISABLE __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE +#define __GPIOJ_CLK_ENABLE __HAL_RCC_GPIOJ_CLK_ENABLE +#define __GPIOJ_CLK_DISABLE __HAL_RCC_GPIOJ_CLK_DISABLE +#define __GPIOJ_FORCE_RESET __HAL_RCC_GPIOJ_FORCE_RESET +#define __GPIOJ_RELEASE_RESET __HAL_RCC_GPIOJ_RELEASE_RESET +#define __GPIOJ_CLK_SLEEP_ENABLE __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE +#define __GPIOJ_CLK_SLEEP_DISABLE __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE +#define __GPIOK_CLK_ENABLE __HAL_RCC_GPIOK_CLK_ENABLE +#define __GPIOK_CLK_DISABLE __HAL_RCC_GPIOK_CLK_DISABLE +#define __GPIOK_RELEASE_RESET __HAL_RCC_GPIOK_RELEASE_RESET +#define __GPIOK_CLK_SLEEP_ENABLE __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE +#define __GPIOK_CLK_SLEEP_DISABLE __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE +#define __ETH_CLK_ENABLE __HAL_RCC_ETH_CLK_ENABLE +#define __ETH_CLK_DISABLE __HAL_RCC_ETH_CLK_DISABLE +#define __DCMI_CLK_ENABLE __HAL_RCC_DCMI_CLK_ENABLE +#define __DCMI_CLK_DISABLE __HAL_RCC_DCMI_CLK_DISABLE +#define __DCMI_FORCE_RESET __HAL_RCC_DCMI_FORCE_RESET +#define __DCMI_RELEASE_RESET __HAL_RCC_DCMI_RELEASE_RESET +#define __DCMI_CLK_SLEEP_ENABLE __HAL_RCC_DCMI_CLK_SLEEP_ENABLE +#define __DCMI_CLK_SLEEP_DISABLE __HAL_RCC_DCMI_CLK_SLEEP_DISABLE +#define __UART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __UART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __UART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __UART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __UART7_CLK_SLEEP_ENABLE __HAL_RCC_UART7_CLK_SLEEP_ENABLE +#define __UART7_CLK_SLEEP_DISABLE __HAL_RCC_UART7_CLK_SLEEP_DISABLE +#define __UART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __UART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __UART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __UART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __UART8_CLK_SLEEP_ENABLE __HAL_RCC_UART8_CLK_SLEEP_ENABLE +#define __UART8_CLK_SLEEP_DISABLE __HAL_RCC_UART8_CLK_SLEEP_DISABLE +#define __OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED +#define __HAL_RCC_OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __HAL_RCC_OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED +#define __SRAM3_CLK_SLEEP_ENABLE __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_ENABLE __HAL_RCC_CAN2_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_DISABLE __HAL_RCC_CAN2_CLK_SLEEP_DISABLE +#define __DAC_CLK_SLEEP_ENABLE __HAL_RCC_DAC_CLK_SLEEP_ENABLE +#define __DAC_CLK_SLEEP_DISABLE __HAL_RCC_DAC_CLK_SLEEP_DISABLE +#define __ADC2_CLK_SLEEP_ENABLE __HAL_RCC_ADC2_CLK_SLEEP_ENABLE +#define __ADC2_CLK_SLEEP_DISABLE __HAL_RCC_ADC2_CLK_SLEEP_DISABLE +#define __ADC3_CLK_SLEEP_ENABLE __HAL_RCC_ADC3_CLK_SLEEP_ENABLE +#define __ADC3_CLK_SLEEP_DISABLE __HAL_RCC_ADC3_CLK_SLEEP_DISABLE +#define __FSMC_FORCE_RESET __HAL_RCC_FSMC_FORCE_RESET +#define __FSMC_RELEASE_RESET __HAL_RCC_FSMC_RELEASE_RESET +#define __FSMC_CLK_SLEEP_ENABLE __HAL_RCC_FSMC_CLK_SLEEP_ENABLE +#define __FSMC_CLK_SLEEP_DISABLE __HAL_RCC_FSMC_CLK_SLEEP_DISABLE +#define __SDIO_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __SDIO_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_ENABLE __HAL_RCC_DMA2D_CLK_ENABLE +#define __DMA2D_CLK_DISABLE __HAL_RCC_DMA2D_CLK_DISABLE +#define __DMA2D_FORCE_RESET __HAL_RCC_DMA2D_FORCE_RESET +#define __DMA2D_RELEASE_RESET __HAL_RCC_DMA2D_RELEASE_RESET +#define __DMA2D_CLK_SLEEP_ENABLE __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_SLEEP_DISABLE __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE + +/* alias define maintained for legacy */ +#define __HAL_RCC_OTGFS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __HAL_RCC_OTGFS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET + +#define __ADC12_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __ADC12_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __ADC34_CLK_ENABLE __HAL_RCC_ADC34_CLK_ENABLE +#define __ADC34_CLK_DISABLE __HAL_RCC_ADC34_CLK_DISABLE +#define __DAC2_CLK_ENABLE __HAL_RCC_DAC2_CLK_ENABLE +#define __DAC2_CLK_DISABLE __HAL_RCC_DAC2_CLK_DISABLE +#define __TIM18_CLK_ENABLE __HAL_RCC_TIM18_CLK_ENABLE +#define __TIM18_CLK_DISABLE __HAL_RCC_TIM18_CLK_DISABLE +#define __TIM19_CLK_ENABLE __HAL_RCC_TIM19_CLK_ENABLE +#define __TIM19_CLK_DISABLE __HAL_RCC_TIM19_CLK_DISABLE +#define __TIM20_CLK_ENABLE __HAL_RCC_TIM20_CLK_ENABLE +#define __TIM20_CLK_DISABLE __HAL_RCC_TIM20_CLK_DISABLE +#define __HRTIM1_CLK_ENABLE __HAL_RCC_HRTIM1_CLK_ENABLE +#define __HRTIM1_CLK_DISABLE __HAL_RCC_HRTIM1_CLK_DISABLE +#define __SDADC1_CLK_ENABLE __HAL_RCC_SDADC1_CLK_ENABLE +#define __SDADC2_CLK_ENABLE __HAL_RCC_SDADC2_CLK_ENABLE +#define __SDADC3_CLK_ENABLE __HAL_RCC_SDADC3_CLK_ENABLE +#define __SDADC1_CLK_DISABLE __HAL_RCC_SDADC1_CLK_DISABLE +#define __SDADC2_CLK_DISABLE __HAL_RCC_SDADC2_CLK_DISABLE +#define __SDADC3_CLK_DISABLE __HAL_RCC_SDADC3_CLK_DISABLE + +#define __ADC12_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __ADC12_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __ADC34_FORCE_RESET __HAL_RCC_ADC34_FORCE_RESET +#define __ADC34_RELEASE_RESET __HAL_RCC_ADC34_RELEASE_RESET +#define __DAC2_FORCE_RESET __HAL_RCC_DAC2_FORCE_RESET +#define __DAC2_RELEASE_RESET __HAL_RCC_DAC2_RELEASE_RESET +#define __TIM18_FORCE_RESET __HAL_RCC_TIM18_FORCE_RESET +#define __TIM18_RELEASE_RESET __HAL_RCC_TIM18_RELEASE_RESET +#define __TIM19_FORCE_RESET __HAL_RCC_TIM19_FORCE_RESET +#define __TIM19_RELEASE_RESET __HAL_RCC_TIM19_RELEASE_RESET +#define __TIM20_FORCE_RESET __HAL_RCC_TIM20_FORCE_RESET +#define __TIM20_RELEASE_RESET __HAL_RCC_TIM20_RELEASE_RESET +#define __HRTIM1_FORCE_RESET __HAL_RCC_HRTIM1_FORCE_RESET +#define __HRTIM1_RELEASE_RESET __HAL_RCC_HRTIM1_RELEASE_RESET +#define __SDADC1_FORCE_RESET __HAL_RCC_SDADC1_FORCE_RESET +#define __SDADC2_FORCE_RESET __HAL_RCC_SDADC2_FORCE_RESET +#define __SDADC3_FORCE_RESET __HAL_RCC_SDADC3_FORCE_RESET +#define __SDADC1_RELEASE_RESET __HAL_RCC_SDADC1_RELEASE_RESET +#define __SDADC2_RELEASE_RESET __HAL_RCC_SDADC2_RELEASE_RESET +#define __SDADC3_RELEASE_RESET __HAL_RCC_SDADC3_RELEASE_RESET + +#define __ADC1_IS_CLK_ENABLED __HAL_RCC_ADC1_IS_CLK_ENABLED +#define __ADC1_IS_CLK_DISABLED __HAL_RCC_ADC1_IS_CLK_DISABLED +#define __ADC12_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __ADC12_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __ADC34_IS_CLK_ENABLED __HAL_RCC_ADC34_IS_CLK_ENABLED +#define __ADC34_IS_CLK_DISABLED __HAL_RCC_ADC34_IS_CLK_DISABLED +#define __CEC_IS_CLK_ENABLED __HAL_RCC_CEC_IS_CLK_ENABLED +#define __CEC_IS_CLK_DISABLED __HAL_RCC_CEC_IS_CLK_DISABLED +#define __CRC_IS_CLK_ENABLED __HAL_RCC_CRC_IS_CLK_ENABLED +#define __CRC_IS_CLK_DISABLED __HAL_RCC_CRC_IS_CLK_DISABLED +#define __DAC1_IS_CLK_ENABLED __HAL_RCC_DAC1_IS_CLK_ENABLED +#define __DAC1_IS_CLK_DISABLED __HAL_RCC_DAC1_IS_CLK_DISABLED +#define __DAC2_IS_CLK_ENABLED __HAL_RCC_DAC2_IS_CLK_ENABLED +#define __DAC2_IS_CLK_DISABLED __HAL_RCC_DAC2_IS_CLK_DISABLED +#define __DMA1_IS_CLK_ENABLED __HAL_RCC_DMA1_IS_CLK_ENABLED +#define __DMA1_IS_CLK_DISABLED __HAL_RCC_DMA1_IS_CLK_DISABLED +#define __DMA2_IS_CLK_ENABLED __HAL_RCC_DMA2_IS_CLK_ENABLED +#define __DMA2_IS_CLK_DISABLED __HAL_RCC_DMA2_IS_CLK_DISABLED +#define __FLITF_IS_CLK_ENABLED __HAL_RCC_FLITF_IS_CLK_ENABLED +#define __FLITF_IS_CLK_DISABLED __HAL_RCC_FLITF_IS_CLK_DISABLED +#define __FMC_IS_CLK_ENABLED __HAL_RCC_FMC_IS_CLK_ENABLED +#define __FMC_IS_CLK_DISABLED __HAL_RCC_FMC_IS_CLK_DISABLED +#define __GPIOA_IS_CLK_ENABLED __HAL_RCC_GPIOA_IS_CLK_ENABLED +#define __GPIOA_IS_CLK_DISABLED __HAL_RCC_GPIOA_IS_CLK_DISABLED +#define __GPIOB_IS_CLK_ENABLED __HAL_RCC_GPIOB_IS_CLK_ENABLED +#define __GPIOB_IS_CLK_DISABLED __HAL_RCC_GPIOB_IS_CLK_DISABLED +#define __GPIOC_IS_CLK_ENABLED __HAL_RCC_GPIOC_IS_CLK_ENABLED +#define __GPIOC_IS_CLK_DISABLED __HAL_RCC_GPIOC_IS_CLK_DISABLED +#define __GPIOD_IS_CLK_ENABLED __HAL_RCC_GPIOD_IS_CLK_ENABLED +#define __GPIOD_IS_CLK_DISABLED __HAL_RCC_GPIOD_IS_CLK_DISABLED +#define __GPIOE_IS_CLK_ENABLED __HAL_RCC_GPIOE_IS_CLK_ENABLED +#define __GPIOE_IS_CLK_DISABLED __HAL_RCC_GPIOE_IS_CLK_DISABLED +#define __GPIOF_IS_CLK_ENABLED __HAL_RCC_GPIOF_IS_CLK_ENABLED +#define __GPIOF_IS_CLK_DISABLED __HAL_RCC_GPIOF_IS_CLK_DISABLED +#define __GPIOG_IS_CLK_ENABLED __HAL_RCC_GPIOG_IS_CLK_ENABLED +#define __GPIOG_IS_CLK_DISABLED __HAL_RCC_GPIOG_IS_CLK_DISABLED +#define __GPIOH_IS_CLK_ENABLED __HAL_RCC_GPIOH_IS_CLK_ENABLED +#define __GPIOH_IS_CLK_DISABLED __HAL_RCC_GPIOH_IS_CLK_DISABLED +#define __HRTIM1_IS_CLK_ENABLED __HAL_RCC_HRTIM1_IS_CLK_ENABLED +#define __HRTIM1_IS_CLK_DISABLED __HAL_RCC_HRTIM1_IS_CLK_DISABLED +#define __I2C1_IS_CLK_ENABLED __HAL_RCC_I2C1_IS_CLK_ENABLED +#define __I2C1_IS_CLK_DISABLED __HAL_RCC_I2C1_IS_CLK_DISABLED +#define __I2C2_IS_CLK_ENABLED __HAL_RCC_I2C2_IS_CLK_ENABLED +#define __I2C2_IS_CLK_DISABLED __HAL_RCC_I2C2_IS_CLK_DISABLED +#define __I2C3_IS_CLK_ENABLED __HAL_RCC_I2C3_IS_CLK_ENABLED +#define __I2C3_IS_CLK_DISABLED __HAL_RCC_I2C3_IS_CLK_DISABLED +#define __PWR_IS_CLK_ENABLED __HAL_RCC_PWR_IS_CLK_ENABLED +#define __PWR_IS_CLK_DISABLED __HAL_RCC_PWR_IS_CLK_DISABLED +#define __SYSCFG_IS_CLK_ENABLED __HAL_RCC_SYSCFG_IS_CLK_ENABLED +#define __SYSCFG_IS_CLK_DISABLED __HAL_RCC_SYSCFG_IS_CLK_DISABLED +#define __SPI1_IS_CLK_ENABLED __HAL_RCC_SPI1_IS_CLK_ENABLED +#define __SPI1_IS_CLK_DISABLED __HAL_RCC_SPI1_IS_CLK_DISABLED +#define __SPI2_IS_CLK_ENABLED __HAL_RCC_SPI2_IS_CLK_ENABLED +#define __SPI2_IS_CLK_DISABLED __HAL_RCC_SPI2_IS_CLK_DISABLED +#define __SPI3_IS_CLK_ENABLED __HAL_RCC_SPI3_IS_CLK_ENABLED +#define __SPI3_IS_CLK_DISABLED __HAL_RCC_SPI3_IS_CLK_DISABLED +#define __SPI4_IS_CLK_ENABLED __HAL_RCC_SPI4_IS_CLK_ENABLED +#define __SPI4_IS_CLK_DISABLED __HAL_RCC_SPI4_IS_CLK_DISABLED +#define __SDADC1_IS_CLK_ENABLED __HAL_RCC_SDADC1_IS_CLK_ENABLED +#define __SDADC1_IS_CLK_DISABLED __HAL_RCC_SDADC1_IS_CLK_DISABLED +#define __SDADC2_IS_CLK_ENABLED __HAL_RCC_SDADC2_IS_CLK_ENABLED +#define __SDADC2_IS_CLK_DISABLED __HAL_RCC_SDADC2_IS_CLK_DISABLED +#define __SDADC3_IS_CLK_ENABLED __HAL_RCC_SDADC3_IS_CLK_ENABLED +#define __SDADC3_IS_CLK_DISABLED __HAL_RCC_SDADC3_IS_CLK_DISABLED +#define __SRAM_IS_CLK_ENABLED __HAL_RCC_SRAM_IS_CLK_ENABLED +#define __SRAM_IS_CLK_DISABLED __HAL_RCC_SRAM_IS_CLK_DISABLED +#define __TIM1_IS_CLK_ENABLED __HAL_RCC_TIM1_IS_CLK_ENABLED +#define __TIM1_IS_CLK_DISABLED __HAL_RCC_TIM1_IS_CLK_DISABLED +#define __TIM2_IS_CLK_ENABLED __HAL_RCC_TIM2_IS_CLK_ENABLED +#define __TIM2_IS_CLK_DISABLED __HAL_RCC_TIM2_IS_CLK_DISABLED +#define __TIM3_IS_CLK_ENABLED __HAL_RCC_TIM3_IS_CLK_ENABLED +#define __TIM3_IS_CLK_DISABLED __HAL_RCC_TIM3_IS_CLK_DISABLED +#define __TIM4_IS_CLK_ENABLED __HAL_RCC_TIM4_IS_CLK_ENABLED +#define __TIM4_IS_CLK_DISABLED __HAL_RCC_TIM4_IS_CLK_DISABLED +#define __TIM5_IS_CLK_ENABLED __HAL_RCC_TIM5_IS_CLK_ENABLED +#define __TIM5_IS_CLK_DISABLED __HAL_RCC_TIM5_IS_CLK_DISABLED +#define __TIM6_IS_CLK_ENABLED __HAL_RCC_TIM6_IS_CLK_ENABLED +#define __TIM6_IS_CLK_DISABLED __HAL_RCC_TIM6_IS_CLK_DISABLED +#define __TIM7_IS_CLK_ENABLED __HAL_RCC_TIM7_IS_CLK_ENABLED +#define __TIM7_IS_CLK_DISABLED __HAL_RCC_TIM7_IS_CLK_DISABLED +#define __TIM8_IS_CLK_ENABLED __HAL_RCC_TIM8_IS_CLK_ENABLED +#define __TIM8_IS_CLK_DISABLED __HAL_RCC_TIM8_IS_CLK_DISABLED +#define __TIM12_IS_CLK_ENABLED __HAL_RCC_TIM12_IS_CLK_ENABLED +#define __TIM12_IS_CLK_DISABLED __HAL_RCC_TIM12_IS_CLK_DISABLED +#define __TIM13_IS_CLK_ENABLED __HAL_RCC_TIM13_IS_CLK_ENABLED +#define __TIM13_IS_CLK_DISABLED __HAL_RCC_TIM13_IS_CLK_DISABLED +#define __TIM14_IS_CLK_ENABLED __HAL_RCC_TIM14_IS_CLK_ENABLED +#define __TIM14_IS_CLK_DISABLED __HAL_RCC_TIM14_IS_CLK_DISABLED +#define __TIM15_IS_CLK_ENABLED __HAL_RCC_TIM15_IS_CLK_ENABLED +#define __TIM15_IS_CLK_DISABLED __HAL_RCC_TIM15_IS_CLK_DISABLED +#define __TIM16_IS_CLK_ENABLED __HAL_RCC_TIM16_IS_CLK_ENABLED +#define __TIM16_IS_CLK_DISABLED __HAL_RCC_TIM16_IS_CLK_DISABLED +#define __TIM17_IS_CLK_ENABLED __HAL_RCC_TIM17_IS_CLK_ENABLED +#define __TIM17_IS_CLK_DISABLED __HAL_RCC_TIM17_IS_CLK_DISABLED +#define __TIM18_IS_CLK_ENABLED __HAL_RCC_TIM18_IS_CLK_ENABLED +#define __TIM18_IS_CLK_DISABLED __HAL_RCC_TIM18_IS_CLK_DISABLED +#define __TIM19_IS_CLK_ENABLED __HAL_RCC_TIM19_IS_CLK_ENABLED +#define __TIM19_IS_CLK_DISABLED __HAL_RCC_TIM19_IS_CLK_DISABLED +#define __TIM20_IS_CLK_ENABLED __HAL_RCC_TIM20_IS_CLK_ENABLED +#define __TIM20_IS_CLK_DISABLED __HAL_RCC_TIM20_IS_CLK_DISABLED +#define __TSC_IS_CLK_ENABLED __HAL_RCC_TSC_IS_CLK_ENABLED +#define __TSC_IS_CLK_DISABLED __HAL_RCC_TSC_IS_CLK_DISABLED +#define __UART4_IS_CLK_ENABLED __HAL_RCC_UART4_IS_CLK_ENABLED +#define __UART4_IS_CLK_DISABLED __HAL_RCC_UART4_IS_CLK_DISABLED +#define __UART5_IS_CLK_ENABLED __HAL_RCC_UART5_IS_CLK_ENABLED +#define __UART5_IS_CLK_DISABLED __HAL_RCC_UART5_IS_CLK_DISABLED +#define __USART1_IS_CLK_ENABLED __HAL_RCC_USART1_IS_CLK_ENABLED +#define __USART1_IS_CLK_DISABLED __HAL_RCC_USART1_IS_CLK_DISABLED +#define __USART2_IS_CLK_ENABLED __HAL_RCC_USART2_IS_CLK_ENABLED +#define __USART2_IS_CLK_DISABLED __HAL_RCC_USART2_IS_CLK_DISABLED +#define __USART3_IS_CLK_ENABLED __HAL_RCC_USART3_IS_CLK_ENABLED +#define __USART3_IS_CLK_DISABLED __HAL_RCC_USART3_IS_CLK_DISABLED +#define __USB_IS_CLK_ENABLED __HAL_RCC_USB_IS_CLK_ENABLED +#define __USB_IS_CLK_DISABLED __HAL_RCC_USB_IS_CLK_DISABLED +#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED +#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED + +#if defined(STM32L1) +#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#endif /* STM32L1 */ + +#if defined(STM32F4) +#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDMMC1_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __HAL_RCC_SDMMC1_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED __HAL_RCC_SDIO_IS_CLK_ENABLED +#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED __HAL_RCC_SDIO_IS_CLK_DISABLED +#define Sdmmc1ClockSelection SdioClockSelection +#define RCC_PERIPHCLK_SDMMC1 RCC_PERIPHCLK_SDIO +#define RCC_SDMMC1CLKSOURCE_CLK48 RCC_SDIOCLKSOURCE_CK48 +#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_SDIOCLKSOURCE_SYSCLK +#define __HAL_RCC_SDMMC1_CONFIG __HAL_RCC_SDIO_CONFIG +#define __HAL_RCC_GET_SDMMC1_SOURCE __HAL_RCC_GET_SDIO_SOURCE +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define __HAL_RCC_SDIO_FORCE_RESET __HAL_RCC_SDMMC1_FORCE_RESET +#define __HAL_RCC_SDIO_RELEASE_RESET __HAL_RCC_SDMMC1_RELEASE_RESET +#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDIO_CLK_ENABLE __HAL_RCC_SDMMC1_CLK_ENABLE +#define __HAL_RCC_SDIO_CLK_DISABLE __HAL_RCC_SDMMC1_CLK_DISABLE +#define __HAL_RCC_SDIO_IS_CLK_ENABLED __HAL_RCC_SDMMC1_IS_CLK_ENABLED +#define __HAL_RCC_SDIO_IS_CLK_DISABLED __HAL_RCC_SDMMC1_IS_CLK_DISABLED +#define SdioClockSelection Sdmmc1ClockSelection +#define RCC_PERIPHCLK_SDIO RCC_PERIPHCLK_SDMMC1 +#define __HAL_RCC_SDIO_CONFIG __HAL_RCC_SDMMC1_CONFIG +#define __HAL_RCC_GET_SDIO_SOURCE __HAL_RCC_GET_SDMMC1_SOURCE +#endif + +#if defined(STM32F7) +#define RCC_SDIOCLKSOURCE_CLK48 RCC_SDMMC1CLKSOURCE_CLK48 +#define RCC_SDIOCLKSOURCE_SYSCLK RCC_SDMMC1CLKSOURCE_SYSCLK +#endif + +#if defined(STM32H7) +#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() __HAL_RCC_USB1_OTG_HS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() __HAL_RCC_USB1_OTG_HS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() + +#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() __HAL_RCC_USB2_OTG_FS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() __HAL_RCC_USB2_OTG_FS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() +#endif + +#define __HAL_RCC_I2SCLK __HAL_RCC_I2S_CONFIG +#define __HAL_RCC_I2SCLK_CONFIG __HAL_RCC_I2S_CONFIG + +#define __RCC_PLLSRC RCC_GET_PLL_OSCSOURCE + +#define IS_RCC_MSIRANGE IS_RCC_MSI_CLOCK_RANGE +#define IS_RCC_RTCCLK_SOURCE IS_RCC_RTCCLKSOURCE +#define IS_RCC_SYSCLK_DIV IS_RCC_HCLK +#define IS_RCC_HCLK_DIV IS_RCC_PCLK +#define IS_RCC_PERIPHCLK IS_RCC_PERIPHCLOCK + +#define RCC_IT_HSI14 RCC_IT_HSI14RDY + +#define RCC_IT_CSSLSE RCC_IT_LSECSS +#define RCC_IT_CSSHSE RCC_IT_CSS + +#define RCC_PLLMUL_3 RCC_PLL_MUL3 +#define RCC_PLLMUL_4 RCC_PLL_MUL4 +#define RCC_PLLMUL_6 RCC_PLL_MUL6 +#define RCC_PLLMUL_8 RCC_PLL_MUL8 +#define RCC_PLLMUL_12 RCC_PLL_MUL12 +#define RCC_PLLMUL_16 RCC_PLL_MUL16 +#define RCC_PLLMUL_24 RCC_PLL_MUL24 +#define RCC_PLLMUL_32 RCC_PLL_MUL32 +#define RCC_PLLMUL_48 RCC_PLL_MUL48 + +#define RCC_PLLDIV_2 RCC_PLL_DIV2 +#define RCC_PLLDIV_3 RCC_PLL_DIV3 +#define RCC_PLLDIV_4 RCC_PLL_DIV4 + +#define IS_RCC_MCOSOURCE IS_RCC_MCO1SOURCE +#define __HAL_RCC_MCO_CONFIG __HAL_RCC_MCO1_CONFIG +#define RCC_MCO_NODIV RCC_MCODIV_1 +#define RCC_MCO_DIV1 RCC_MCODIV_1 +#define RCC_MCO_DIV2 RCC_MCODIV_2 +#define RCC_MCO_DIV4 RCC_MCODIV_4 +#define RCC_MCO_DIV8 RCC_MCODIV_8 +#define RCC_MCO_DIV16 RCC_MCODIV_16 +#define RCC_MCO_DIV32 RCC_MCODIV_32 +#define RCC_MCO_DIV64 RCC_MCODIV_64 +#define RCC_MCO_DIV128 RCC_MCODIV_128 +#define RCC_MCOSOURCE_NONE RCC_MCO1SOURCE_NOCLOCK +#define RCC_MCOSOURCE_LSI RCC_MCO1SOURCE_LSI +#define RCC_MCOSOURCE_LSE RCC_MCO1SOURCE_LSE +#define RCC_MCOSOURCE_SYSCLK RCC_MCO1SOURCE_SYSCLK +#define RCC_MCOSOURCE_HSI RCC_MCO1SOURCE_HSI +#define RCC_MCOSOURCE_HSI14 RCC_MCO1SOURCE_HSI14 +#define RCC_MCOSOURCE_HSI48 RCC_MCO1SOURCE_HSI48 +#define RCC_MCOSOURCE_HSE RCC_MCO1SOURCE_HSE +#define RCC_MCOSOURCE_PLLCLK_DIV1 RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_NODIV RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_DIV2 RCC_MCO1SOURCE_PLLCLK_DIV2 + +#if defined(STM32U0) +#define RCC_SYSCLKSOURCE_STATUS_PLLR RCC_SYSCLKSOURCE_STATUS_PLLCLK +#endif + +#if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || \ + defined(STM32WL) || defined(STM32C0) || defined(STM32N6) || defined(STM32H7RS) || \ + defined(STM32U0) +#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE +#else +#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK +#endif + +#define RCC_USBCLK_PLLSAI1 RCC_USBCLKSOURCE_PLLSAI1 +#define RCC_USBCLK_PLL RCC_USBCLKSOURCE_PLL +#define RCC_USBCLK_MSI RCC_USBCLKSOURCE_MSI +#define RCC_USBCLKSOURCE_PLLCLK RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1 RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1_5 RCC_USBCLKSOURCE_PLL_DIV1_5 +#define RCC_USBPLLCLK_DIV2 RCC_USBCLKSOURCE_PLL_DIV2 +#define RCC_USBPLLCLK_DIV3 RCC_USBCLKSOURCE_PLL_DIV3 + +#define HSION_BitNumber RCC_HSION_BIT_NUMBER +#define HSION_BITNUMBER RCC_HSION_BIT_NUMBER +#define HSEON_BitNumber RCC_HSEON_BIT_NUMBER +#define HSEON_BITNUMBER RCC_HSEON_BIT_NUMBER +#define MSION_BITNUMBER RCC_MSION_BIT_NUMBER +#define CSSON_BitNumber RCC_CSSON_BIT_NUMBER +#define CSSON_BITNUMBER RCC_CSSON_BIT_NUMBER +#define PLLON_BitNumber RCC_PLLON_BIT_NUMBER +#define PLLON_BITNUMBER RCC_PLLON_BIT_NUMBER +#define PLLI2SON_BitNumber RCC_PLLI2SON_BIT_NUMBER +#define I2SSRC_BitNumber RCC_I2SSRC_BIT_NUMBER +#define RTCEN_BitNumber RCC_RTCEN_BIT_NUMBER +#define RTCEN_BITNUMBER RCC_RTCEN_BIT_NUMBER +#define BDRST_BitNumber RCC_BDRST_BIT_NUMBER +#define BDRST_BITNUMBER RCC_BDRST_BIT_NUMBER +#define RTCRST_BITNUMBER RCC_RTCRST_BIT_NUMBER +#define LSION_BitNumber RCC_LSION_BIT_NUMBER +#define LSION_BITNUMBER RCC_LSION_BIT_NUMBER +#define LSEON_BitNumber RCC_LSEON_BIT_NUMBER +#define LSEON_BITNUMBER RCC_LSEON_BIT_NUMBER +#define LSEBYP_BITNUMBER RCC_LSEBYP_BIT_NUMBER +#define PLLSAION_BitNumber RCC_PLLSAION_BIT_NUMBER +#define TIMPRE_BitNumber RCC_TIMPRE_BIT_NUMBER +#define RMVF_BitNumber RCC_RMVF_BIT_NUMBER +#define RMVF_BITNUMBER RCC_RMVF_BIT_NUMBER +#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER +#define CR_BYTE2_ADDRESS RCC_CR_BYTE2_ADDRESS +#define CIR_BYTE1_ADDRESS RCC_CIR_BYTE1_ADDRESS +#define CIR_BYTE2_ADDRESS RCC_CIR_BYTE2_ADDRESS +#define BDCR_BYTE0_ADDRESS RCC_BDCR_BYTE0_ADDRESS +#define DBP_TIMEOUT_VALUE RCC_DBP_TIMEOUT_VALUE +#define LSE_TIMEOUT_VALUE RCC_LSE_TIMEOUT_VALUE + +#define CR_HSION_BB RCC_CR_HSION_BB +#define CR_CSSON_BB RCC_CR_CSSON_BB +#define CR_PLLON_BB RCC_CR_PLLON_BB +#define CR_PLLI2SON_BB RCC_CR_PLLI2SON_BB +#define CR_MSION_BB RCC_CR_MSION_BB +#define CSR_LSION_BB RCC_CSR_LSION_BB +#define CSR_LSEON_BB RCC_CSR_LSEON_BB +#define CSR_LSEBYP_BB RCC_CSR_LSEBYP_BB +#define CSR_RTCEN_BB RCC_CSR_RTCEN_BB +#define CSR_RTCRST_BB RCC_CSR_RTCRST_BB +#define CFGR_I2SSRC_BB RCC_CFGR_I2SSRC_BB +#define BDCR_RTCEN_BB RCC_BDCR_RTCEN_BB +#define BDCR_BDRST_BB RCC_BDCR_BDRST_BB +#define CR_HSEON_BB RCC_CR_HSEON_BB +#define CSR_RMVF_BB RCC_CSR_RMVF_BB +#define CR_PLLSAION_BB RCC_CR_PLLSAION_BB +#define DCKCFGR_TIMPRE_BB RCC_DCKCFGR_TIMPRE_BB + +#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE +#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE +#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE +#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE +#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE __HAL_RCC_CRS_RELOADVALUE_CALCULATE + +#define __HAL_RCC_GET_IT_SOURCE __HAL_RCC_GET_IT + +#define RCC_CRS_SYNCWARM RCC_CRS_SYNCWARN +#define RCC_CRS_TRIMOV RCC_CRS_TRIMOVF + +#define RCC_PERIPHCLK_CK48 RCC_PERIPHCLK_CLK48 +#define RCC_CK48CLKSOURCE_PLLQ RCC_CLK48CLKSOURCE_PLLQ +#define RCC_CK48CLKSOURCE_PLLSAIP RCC_CLK48CLKSOURCE_PLLSAIP +#define RCC_CK48CLKSOURCE_PLLI2SQ RCC_CLK48CLKSOURCE_PLLI2SQ +#define IS_RCC_CK48CLKSOURCE IS_RCC_CLK48CLKSOURCE +#define RCC_SDIOCLKSOURCE_CK48 RCC_SDIOCLKSOURCE_CLK48 + +#define __HAL_RCC_DFSDM_CLK_ENABLE __HAL_RCC_DFSDM1_CLK_ENABLE +#define __HAL_RCC_DFSDM_CLK_DISABLE __HAL_RCC_DFSDM1_CLK_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_ENABLED __HAL_RCC_DFSDM1_IS_CLK_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_DISABLED __HAL_RCC_DFSDM1_IS_CLK_DISABLED +#define __HAL_RCC_DFSDM_FORCE_RESET __HAL_RCC_DFSDM1_FORCE_RESET +#define __HAL_RCC_DFSDM_RELEASE_RESET __HAL_RCC_DFSDM1_RELEASE_RESET +#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE +#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED +#define DfsdmClockSelection Dfsdm1ClockSelection +#define RCC_PERIPHCLK_DFSDM RCC_PERIPHCLK_DFSDM1 +#define RCC_DFSDMCLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDMCLKSOURCE_SYSCLK RCC_DFSDM1CLKSOURCE_SYSCLK +#define __HAL_RCC_DFSDM_CONFIG __HAL_RCC_DFSDM1_CONFIG +#define __HAL_RCC_GET_DFSDM_SOURCE __HAL_RCC_GET_DFSDM1_SOURCE +#define RCC_DFSDM1CLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_SWPMI1CLKSOURCE_PCLK RCC_SWPMI1CLKSOURCE_PCLK1 +#if !defined(STM32U0) +#define RCC_LPTIM1CLKSOURCE_PCLK RCC_LPTIM1CLKSOURCE_PCLK1 +#define RCC_LPTIM2CLKSOURCE_PCLK RCC_LPTIM2CLKSOURCE_PCLK1 +#endif + +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM1AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM1AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM2AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM2AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM1CLKSOURCE_APB2 RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDM2CLKSOURCE_APB2 RCC_DFSDM2CLKSOURCE_PCLK2 +#define RCC_FMPI2C1CLKSOURCE_APB RCC_FMPI2C1CLKSOURCE_PCLK1 +#if defined(STM32U5) +#define MSIKPLLModeSEL RCC_MSIKPLL_MODE_SEL +#define MSISPLLModeSEL RCC_MSISPLL_MODE_SEL +#define __HAL_RCC_AHB21_CLK_DISABLE __HAL_RCC_AHB2_1_CLK_DISABLE +#define __HAL_RCC_AHB22_CLK_DISABLE __HAL_RCC_AHB2_2_CLK_DISABLE +#define __HAL_RCC_AHB1_CLK_Disable_Clear __HAL_RCC_AHB1_CLK_ENABLE +#define __HAL_RCC_AHB21_CLK_Disable_Clear __HAL_RCC_AHB2_1_CLK_ENABLE +#define __HAL_RCC_AHB22_CLK_Disable_Clear __HAL_RCC_AHB2_2_CLK_ENABLE +#define __HAL_RCC_AHB3_CLK_Disable_Clear __HAL_RCC_AHB3_CLK_ENABLE +#define __HAL_RCC_APB1_CLK_Disable_Clear __HAL_RCC_APB1_CLK_ENABLE +#define __HAL_RCC_APB2_CLK_Disable_Clear __HAL_RCC_APB2_CLK_ENABLE +#define __HAL_RCC_APB3_CLK_Disable_Clear __HAL_RCC_APB3_CLK_ENABLE +#define IS_RCC_MSIPLLModeSelection IS_RCC_MSIPLLMODE_SELECT +#define RCC_PERIPHCLK_CLK48 RCC_PERIPHCLK_ICLK +#define RCC_CLK48CLKSOURCE_HSI48 RCC_ICLK_CLKSOURCE_HSI48 +#define RCC_CLK48CLKSOURCE_PLL2 RCC_ICLK_CLKSOURCE_PLL2 +#define RCC_CLK48CLKSOURCE_PLL1 RCC_ICLK_CLKSOURCE_PLL1 +#define RCC_CLK48CLKSOURCE_MSIK RCC_ICLK_CLKSOURCE_MSIK +#define __HAL_RCC_ADC1_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __HAL_RCC_ADC1_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __HAL_RCC_ADC1_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __HAL_RCC_ADC1_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __HAL_RCC_ADC1_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __HAL_RCC_ADC1_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC12_CLK_SLEEP_ENABLE +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC12_CLK_SLEEP_DISABLE +#define __HAL_RCC_GET_CLK48_SOURCE __HAL_RCC_GET_ICLK_SOURCE +#define __HAL_RCC_PLLFRACN_ENABLE __HAL_RCC_PLL_FRACN_ENABLE +#define __HAL_RCC_PLLFRACN_DISABLE __HAL_RCC_PLL_FRACN_DISABLE +#define __HAL_RCC_PLLFRACN_CONFIG __HAL_RCC_PLL_FRACN_CONFIG +#define IS_RCC_PLLFRACN_VALUE IS_RCC_PLL_FRACN_VALUE +#endif /* STM32U5 */ + +#if defined(STM32H5) +#define __HAL_RCC_PLLFRACN_ENABLE __HAL_RCC_PLL_FRACN_ENABLE +#define __HAL_RCC_PLLFRACN_DISABLE __HAL_RCC_PLL_FRACN_DISABLE +#define __HAL_RCC_PLLFRACN_CONFIG __HAL_RCC_PLL_FRACN_CONFIG +#define IS_RCC_PLLFRACN_VALUE IS_RCC_PLL_FRACN_VALUE + +#define RCC_PLLSOURCE_NONE RCC_PLL1_SOURCE_NONE +#define RCC_PLLSOURCE_HSI RCC_PLL1_SOURCE_HSI +#define RCC_PLLSOURCE_CSI RCC_PLL1_SOURCE_CSI +#define RCC_PLLSOURCE_HSE RCC_PLL1_SOURCE_HSE +#define RCC_PLLVCIRANGE_0 RCC_PLL1_VCIRANGE_0 +#define RCC_PLLVCIRANGE_1 RCC_PLL1_VCIRANGE_1 +#define RCC_PLLVCIRANGE_2 RCC_PLL1_VCIRANGE_2 +#define RCC_PLLVCIRANGE_3 RCC_PLL1_VCIRANGE_3 +#define RCC_PLL1VCOWIDE RCC_PLL1_VCORANGE_WIDE +#define RCC_PLL1VCOMEDIUM RCC_PLL1_VCORANGE_MEDIUM + +#define IS_RCC_PLLSOURCE IS_RCC_PLL1_SOURCE +#define IS_RCC_PLLRGE_VALUE IS_RCC_PLL1_VCIRGE_VALUE +#define IS_RCC_PLLVCORGE_VALUE IS_RCC_PLL1_VCORGE_VALUE +#define IS_RCC_PLLCLOCKOUT_VALUE IS_RCC_PLL1_CLOCKOUT_VALUE +#define IS_RCC_PLL_FRACN_VALUE IS_RCC_PLL1_FRACN_VALUE +#define IS_RCC_PLLM_VALUE IS_RCC_PLL1_DIVM_VALUE +#define IS_RCC_PLLN_VALUE IS_RCC_PLL1_MULN_VALUE +#define IS_RCC_PLLP_VALUE IS_RCC_PLL1_DIVP_VALUE +#define IS_RCC_PLLQ_VALUE IS_RCC_PLL1_DIVQ_VALUE +#define IS_RCC_PLLR_VALUE IS_RCC_PLL1_DIVR_VALUE + +#define __HAL_RCC_PLL_ENABLE __HAL_RCC_PLL1_ENABLE +#define __HAL_RCC_PLL_DISABLE __HAL_RCC_PLL1_DISABLE +#define __HAL_RCC_PLL_FRACN_ENABLE __HAL_RCC_PLL1_FRACN_ENABLE +#define __HAL_RCC_PLL_FRACN_DISABLE __HAL_RCC_PLL1_FRACN_DISABLE +#define __HAL_RCC_PLL_CONFIG __HAL_RCC_PLL1_CONFIG +#define __HAL_RCC_PLL_PLLSOURCE_CONFIG __HAL_RCC_PLL1_PLLSOURCE_CONFIG +#define __HAL_RCC_PLL_DIVM_CONFIG __HAL_RCC_PLL1_DIVM_CONFIG +#define __HAL_RCC_PLL_FRACN_CONFIG __HAL_RCC_PLL1_FRACN_CONFIG +#define __HAL_RCC_PLL_VCIRANGE __HAL_RCC_PLL1_VCIRANGE +#define __HAL_RCC_PLL_VCORANGE __HAL_RCC_PLL1_VCORANGE +#define __HAL_RCC_GET_PLL_OSCSOURCE __HAL_RCC_GET_PLL1_OSCSOURCE +#define __HAL_RCC_PLLCLKOUT_ENABLE __HAL_RCC_PLL1_CLKOUT_ENABLE +#define __HAL_RCC_PLLCLKOUT_DISABLE __HAL_RCC_PLL1_CLKOUT_DISABLE +#define __HAL_RCC_GET_PLLCLKOUT_CONFIG __HAL_RCC_GET_PLL1_CLKOUT_CONFIG + +#define __HAL_RCC_PLL2FRACN_ENABLE __HAL_RCC_PLL2_FRACN_ENABLE +#define __HAL_RCC_PLL2FRACN_DISABLE __HAL_RCC_PLL2_FRACN_DISABLE +#define __HAL_RCC_PLL2CLKOUT_ENABLE __HAL_RCC_PLL2_CLKOUT_ENABLE +#define __HAL_RCC_PLL2CLKOUT_DISABLE __HAL_RCC_PLL2_CLKOUT_DISABLE +#define __HAL_RCC_PLL2FRACN_CONFIG __HAL_RCC_PLL2_FRACN_CONFIG +#define __HAL_RCC_GET_PLL2CLKOUT_CONFIG __HAL_RCC_GET_PLL2_CLKOUT_CONFIG + +#define __HAL_RCC_PLL3FRACN_ENABLE __HAL_RCC_PLL3_FRACN_ENABLE +#define __HAL_RCC_PLL3FRACN_DISABLE __HAL_RCC_PLL3_FRACN_DISABLE +#define __HAL_RCC_PLL3CLKOUT_ENABLE __HAL_RCC_PLL3_CLKOUT_ENABLE +#define __HAL_RCC_PLL3CLKOUT_DISABLE __HAL_RCC_PLL3_CLKOUT_DISABLE +#define __HAL_RCC_PLL3FRACN_CONFIG __HAL_RCC_PLL3_FRACN_CONFIG +#define __HAL_RCC_GET_PLL3CLKOUT_CONFIG __HAL_RCC_GET_PLL3_CLKOUT_CONFIG + +#define RCC_PLL2VCIRANGE_0 RCC_PLL2_VCIRANGE_0 +#define RCC_PLL2VCIRANGE_1 RCC_PLL2_VCIRANGE_1 +#define RCC_PLL2VCIRANGE_2 RCC_PLL2_VCIRANGE_2 +#define RCC_PLL2VCIRANGE_3 RCC_PLL2_VCIRANGE_3 + +#define RCC_PLL2VCOWIDE RCC_PLL2_VCORANGE_WIDE +#define RCC_PLL2VCOMEDIUM RCC_PLL2_VCORANGE_MEDIUM + +#define RCC_PLL2SOURCE_NONE RCC_PLL2_SOURCE_NONE +#define RCC_PLL2SOURCE_HSI RCC_PLL2_SOURCE_HSI +#define RCC_PLL2SOURCE_CSI RCC_PLL2_SOURCE_CSI +#define RCC_PLL2SOURCE_HSE RCC_PLL2_SOURCE_HSE + +#define RCC_PLL3VCIRANGE_0 RCC_PLL3_VCIRANGE_0 +#define RCC_PLL3VCIRANGE_1 RCC_PLL3_VCIRANGE_1 +#define RCC_PLL3VCIRANGE_2 RCC_PLL3_VCIRANGE_2 +#define RCC_PLL3VCIRANGE_3 RCC_PLL3_VCIRANGE_3 + +#define RCC_PLL3VCOWIDE RCC_PLL3_VCORANGE_WIDE +#define RCC_PLL3VCOMEDIUM RCC_PLL3_VCORANGE_MEDIUM + +#define RCC_PLL3SOURCE_NONE RCC_PLL3_SOURCE_NONE +#define RCC_PLL3SOURCE_HSI RCC_PLL3_SOURCE_HSI +#define RCC_PLL3SOURCE_CSI RCC_PLL3_SOURCE_CSI +#define RCC_PLL3SOURCE_HSE RCC_PLL3_SOURCE_HSE + + +#endif /* STM32H5 */ + +/** + * @} + */ + +/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose + * @{ + */ +#define HAL_RNG_ReadyCallback(__HANDLE__) HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit) + +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || \ + defined (STM32L4P5xx)|| defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \ + defined (STM32WBA) || defined (STM32H5) || \ + defined (STM32C0) || defined (STM32N6) || defined (STM32H7RS) || defined (STM32U0) || defined (STM32U3) +#else +#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG +#endif +#define __HAL_RTC_DISABLE_IT __HAL_RTC_EXTI_DISABLE_IT +#define __HAL_RTC_ENABLE_IT __HAL_RTC_EXTI_ENABLE_IT + +#if defined (STM32F1) +#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() + +#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_ENABLE_IT() + +#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_DISABLE_IT() + +#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GET_FLAG() + +#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() +#else +#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG())) +#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT())) +#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT())) +#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG())) +#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT())) +#endif /* STM32F1 */ + +#if defined (STM32F0) || defined (STM32F2) || defined (STM32F3) || defined (STM32F4) || defined (STM32F7) || \ + defined (STM32H7) || \ + defined (STM32L0) || defined (STM32L1) || \ + defined (STM32WB) +#define __HAL_RTC_TAMPER_GET_IT __HAL_RTC_TAMPER_GET_FLAG +#endif + +#define IS_ALARM IS_RTC_ALARM +#define IS_ALARM_MASK IS_RTC_ALARM_MASK +#define IS_TAMPER IS_RTC_TAMPER +#define IS_TAMPER_ERASE_MODE IS_RTC_TAMPER_ERASE_MODE +#define IS_TAMPER_FILTER IS_RTC_TAMPER_FILTER +#define IS_TAMPER_INTERRUPT IS_RTC_TAMPER_INTERRUPT +#define IS_TAMPER_MASKFLAG_STATE IS_RTC_TAMPER_MASKFLAG_STATE +#define IS_TAMPER_PRECHARGE_DURATION IS_RTC_TAMPER_PRECHARGE_DURATION +#define IS_TAMPER_PULLUP_STATE IS_RTC_TAMPER_PULLUP_STATE +#define IS_TAMPER_SAMPLING_FREQ IS_RTC_TAMPER_SAMPLING_FREQ +#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION +#define IS_TAMPER_TRIGGER IS_RTC_TAMPER_TRIGGER +#define IS_WAKEUP_CLOCK IS_RTC_WAKEUP_CLOCK +#define IS_WAKEUP_COUNTER IS_RTC_WAKEUP_COUNTER + +#define __RTC_WRITEPROTECTION_ENABLE __HAL_RTC_WRITEPROTECTION_ENABLE +#define __RTC_WRITEPROTECTION_DISABLE __HAL_RTC_WRITEPROTECTION_DISABLE + +#if defined (STM32H5) +#define __HAL_RCC_RTCAPB_CLK_ENABLE __HAL_RCC_RTC_CLK_ENABLE +#define __HAL_RCC_RTCAPB_CLK_DISABLE __HAL_RCC_RTC_CLK_DISABLE +#endif /* STM32H5 */ + +/** + * @} + */ + +/** @defgroup HAL_SD_Aliased_Macros HAL SD/MMC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define SD_OCR_CID_CSD_OVERWRIETE SD_OCR_CID_CSD_OVERWRITE +#define SD_CMD_SD_APP_STAUS SD_CMD_SD_APP_STATUS + +#if !defined(STM32F1) && !defined(STM32F2) && !defined(STM32F4) && !defined(STM32L1) +#define eMMC_HIGH_VOLTAGE_RANGE EMMC_HIGH_VOLTAGE_RANGE +#define eMMC_DUAL_VOLTAGE_RANGE EMMC_DUAL_VOLTAGE_RANGE +#define eMMC_LOW_VOLTAGE_RANGE EMMC_LOW_VOLTAGE_RANGE + +#define SDMMC_NSpeed_CLK_DIV SDMMC_NSPEED_CLK_DIV +#define SDMMC_HSpeed_CLK_DIV SDMMC_HSPEED_CLK_DIV +#endif + +#if defined(STM32F4) || defined(STM32F2) +#define SD_SDMMC_DISABLED SD_SDIO_DISABLED +#define SD_SDMMC_FUNCTION_BUSY SD_SDIO_FUNCTION_BUSY +#define SD_SDMMC_FUNCTION_FAILED SD_SDIO_FUNCTION_FAILED +#define SD_SDMMC_UNKNOWN_FUNCTION SD_SDIO_UNKNOWN_FUNCTION +#define SD_CMD_SDMMC_SEN_OP_COND SD_CMD_SDIO_SEN_OP_COND +#define SD_CMD_SDMMC_RW_DIRECT SD_CMD_SDIO_RW_DIRECT +#define SD_CMD_SDMMC_RW_EXTENDED SD_CMD_SDIO_RW_EXTENDED +#define __HAL_SD_SDMMC_ENABLE __HAL_SD_SDIO_ENABLE +#define __HAL_SD_SDMMC_DISABLE __HAL_SD_SDIO_DISABLE +#define __HAL_SD_SDMMC_DMA_ENABLE __HAL_SD_SDIO_DMA_ENABLE +#define __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL +#define __HAL_SD_SDMMC_ENABLE_IT __HAL_SD_SDIO_ENABLE_IT +#define __HAL_SD_SDMMC_DISABLE_IT __HAL_SD_SDIO_DISABLE_IT +#define __HAL_SD_SDMMC_GET_FLAG __HAL_SD_SDIO_GET_FLAG +#define __HAL_SD_SDMMC_CLEAR_FLAG __HAL_SD_SDIO_CLEAR_FLAG +#define __HAL_SD_SDMMC_GET_IT __HAL_SD_SDIO_GET_IT +#define __HAL_SD_SDMMC_CLEAR_IT __HAL_SD_SDIO_CLEAR_IT +#define SDMMC_STATIC_FLAGS SDIO_STATIC_FLAGS +#define SDMMC_CMD0TIMEOUT SDIO_CMD0TIMEOUT +#define SD_SDMMC_SEND_IF_COND SD_SDIO_SEND_IF_COND +/* alias CMSIS */ +#define SDMMC1_IRQn SDIO_IRQn +#define SDMMC1_IRQHandler SDIO_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define SD_SDIO_DISABLED SD_SDMMC_DISABLED +#define SD_SDIO_FUNCTION_BUSY SD_SDMMC_FUNCTION_BUSY +#define SD_SDIO_FUNCTION_FAILED SD_SDMMC_FUNCTION_FAILED +#define SD_SDIO_UNKNOWN_FUNCTION SD_SDMMC_UNKNOWN_FUNCTION +#define SD_CMD_SDIO_SEN_OP_COND SD_CMD_SDMMC_SEN_OP_COND +#define SD_CMD_SDIO_RW_DIRECT SD_CMD_SDMMC_RW_DIRECT +#define SD_CMD_SDIO_RW_EXTENDED SD_CMD_SDMMC_RW_EXTENDED +#define __HAL_SD_SDIO_ENABLE __HAL_SD_SDMMC_ENABLE +#define __HAL_SD_SDIO_DISABLE __HAL_SD_SDMMC_DISABLE +#define __HAL_SD_SDIO_DMA_ENABLE __HAL_SD_SDMMC_DMA_ENABLE +#define __HAL_SD_SDIO_DMA_DISABL __HAL_SD_SDMMC_DMA_DISABLE +#define __HAL_SD_SDIO_ENABLE_IT __HAL_SD_SDMMC_ENABLE_IT +#define __HAL_SD_SDIO_DISABLE_IT __HAL_SD_SDMMC_DISABLE_IT +#define __HAL_SD_SDIO_GET_FLAG __HAL_SD_SDMMC_GET_FLAG +#define __HAL_SD_SDIO_CLEAR_FLAG __HAL_SD_SDMMC_CLEAR_FLAG +#define __HAL_SD_SDIO_GET_IT __HAL_SD_SDMMC_GET_IT +#define __HAL_SD_SDIO_CLEAR_IT __HAL_SD_SDMMC_CLEAR_IT +#define SDIO_STATIC_FLAGS SDMMC_STATIC_FLAGS +#define SDIO_CMD0TIMEOUT SDMMC_CMD0TIMEOUT +#define SD_SDIO_SEND_IF_COND SD_SDMMC_SEND_IF_COND +/* alias CMSIS for compatibilities */ +#define SDIO_IRQn SDMMC1_IRQn +#define SDIO_IRQHandler SDMMC1_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7) +#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef +#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef +#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef +#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef +#endif + +#if defined(STM32H7) || defined(STM32L5) +#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback HAL_MMCEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer0CpltCallback HAL_SDEx_Read_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer1CpltCallback HAL_SDEx_Read_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer0CpltCallback HAL_SDEx_Write_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer1CpltCallback HAL_SDEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SD_DriveTransciver_1_8V_Callback HAL_SD_DriveTransceiver_1_8V_Callback +#endif +/** + * @} + */ + +/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __SMARTCARD_ENABLE_IT __HAL_SMARTCARD_ENABLE_IT +#define __SMARTCARD_DISABLE_IT __HAL_SMARTCARD_DISABLE_IT +#define __SMARTCARD_ENABLE __HAL_SMARTCARD_ENABLE +#define __SMARTCARD_DISABLE __HAL_SMARTCARD_DISABLE +#define __SMARTCARD_DMA_REQUEST_ENABLE __HAL_SMARTCARD_DMA_REQUEST_ENABLE +#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE + +#define __HAL_SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE +#define __SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE + +#define IS_SMARTCARD_ONEBIT_SAMPLING IS_SMARTCARD_ONE_BIT_SAMPLE + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_SMBUS_RESET_CR1 SMBUS_RESET_CR1 +#define __HAL_SMBUS_RESET_CR2 SMBUS_RESET_CR2 +#define __HAL_SMBUS_GENERATE_START SMBUS_GENERATE_START +#define __HAL_SMBUS_GET_ADDR_MATCH SMBUS_GET_ADDR_MATCH +#define __HAL_SMBUS_GET_DIR SMBUS_GET_DIR +#define __HAL_SMBUS_GET_STOP_MODE SMBUS_GET_STOP_MODE +#define __HAL_SMBUS_GET_PEC_MODE SMBUS_GET_PEC_MODE +#define __HAL_SMBUS_GET_ALERT_ENABLED SMBUS_GET_ALERT_ENABLED +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_SPI_1LINE_TX SPI_1LINE_TX +#define __HAL_SPI_1LINE_RX SPI_1LINE_RX +#define __HAL_SPI_RESET_CRC SPI_RESET_CRC + +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __HAL_UART_MASK_COMPUTATION UART_MASK_COMPUTATION +#define __UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __UART_MASK_COMPUTATION UART_MASK_COMPUTATION + +#define IS_UART_WAKEUPMETHODE IS_UART_WAKEUPMETHOD + +#define IS_UART_ONEBIT_SAMPLE IS_UART_ONE_BIT_SAMPLE +#define IS_UART_ONEBIT_SAMPLING IS_UART_ONE_BIT_SAMPLE + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __USART_ENABLE_IT __HAL_USART_ENABLE_IT +#define __USART_DISABLE_IT __HAL_USART_DISABLE_IT +#define __USART_ENABLE __HAL_USART_ENABLE +#define __USART_DISABLE __HAL_USART_DISABLE + +#define __HAL_USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE +#define __USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F7) +#define USART_OVERSAMPLING_16 0x00000000U +#define USART_OVERSAMPLING_8 USART_CR1_OVER8 + +#define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \ + ((__SAMPLING__) == USART_OVERSAMPLING_8)) +#endif /* STM32F0 || STM32F3 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose + * @{ + */ +#define USB_EXTI_LINE_WAKEUP USB_WAKEUP_EXTI_LINE + +#define USB_FS_EXTI_TRIGGER_RISING_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE +#define USB_FS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE +#define USB_FS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_FS_EXTI_LINE_WAKEUP USB_OTG_FS_WAKEUP_EXTI_LINE + +#define USB_HS_EXTI_TRIGGER_RISING_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE +#define USB_HS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE +#define USB_HS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_HS_EXTI_LINE_WAKEUP USB_OTG_HS_WAKEUP_EXTI_LINE + +#define __HAL_USB_EXTI_ENABLE_IT __HAL_USB_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_EXTI_DISABLE_IT __HAL_USB_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_EXTI_GET_FLAG __HAL_USB_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_EXTI_CLEAR_FLAG __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE + +#define __HAL_USB_FS_EXTI_ENABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_FS_EXTI_DISABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_FS_EXTI_GET_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_FS_EXTI_CLEAR_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_FS_EXTI_GENERATE_SWIT __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT + +#define __HAL_USB_HS_EXTI_ENABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_HS_EXTI_DISABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_HS_EXTI_GET_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_HS_EXTI_CLEAR_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_HS_EXTI_GENERATE_SWIT __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT + +#define HAL_PCD_ActiveRemoteWakeup HAL_PCD_ActivateRemoteWakeup +#define HAL_PCD_DeActiveRemoteWakeup HAL_PCD_DeActivateRemoteWakeup + +#define HAL_PCD_SetTxFiFo HAL_PCDEx_SetTxFiFo +#define HAL_PCD_SetRxFiFo HAL_PCDEx_SetRxFiFo +#if defined(STM32U5) +#define USB_OTG_GOTGCTL_BSESVLD USB_OTG_GOTGCTL_BSVLD +#define USB_OTG_GAHBCFG_GINT USB_OTG_GAHBCFG_GINTMSK +#define USB_OTG_GUSBCFG_PHYLPCS USB_OTG_GUSBCFG_PHYLPC +#define USB_OTG_GRSTCTL_HSRST USB_OTG_GRSTCTL_PSRST +#define USB_OTG_GINTSTS_BOUTNAKEFF USB_OTG_GINTSTS_GONAKEFF +#define USB_OTG_GINTSTS_WKUINT USB_OTG_GINTSTS_WKUPINT +#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM USB_OTG_GINTMSK_IPXFRM_IISOOXFRM +#define USB_OTG_GRXSTSP_EPNUM USB_OTG_GRXSTSP_EPNUM_CHNUM +#define USB_OTG_GLPMCFG_L1ResumeOK USB_OTG_GLPMCFG_L1RSMOK +#define USB_OTG_HPTXFSIZ_PTXFD USB_OTG_HPTXFSIZ_PTXFSIZ +#define USB_OTG_HCCHAR_MC USB_OTG_HCCHAR_MCNT +#define USB_OTG_HCCHAR_MC_0 USB_OTG_HCCHAR_MCNT_0 +#define USB_OTG_HCCHAR_MC_1 USB_OTG_HCCHAR_MCNT_1 +#define USB_OTG_HCINTMSK_AHBERR USB_OTG_HCINTMSK_AHBERRM +#define USB_OTG_HCTSIZ_DOPING USB_OTG_HCTSIZ_DOPNG +#define USB_OTG_DOEPMSK_OPEM USB_OTG_DOEPMSK_OUTPKTERRM +#define USB_OTG_DIEPCTL_SODDFRM USB_OTG_DIEPCTL_SD1PID_SODDFRM +#define USB_OTG_DIEPTSIZ_MULCNT USB_OTG_DIEPTSIZ_MCNT +#define USB_OTG_DOEPCTL_SODDFRM USB_OTG_DOEPCTL_SD1PID_SODDFRM +#define USB_OTG_DOEPCTL_DPID USB_OTG_DOEPCTL_DPID_EONUM +#define USB_OTG_DOEPTSIZ_STUPCNT USB_OTG_DOEPTSIZ_RXDPID +#define USB_OTG_DOEPTSIZ_STUPCNT_0 USB_OTG_DOEPTSIZ_RXDPID_0 +#define USB_OTG_DOEPTSIZ_STUPCNT_1 USB_OTG_DOEPTSIZ_RXDPID_1 +#define USB_OTG_PCGCCTL_STOPCLK USB_OTG_PCGCCTL_STPPCLK +#define USB_OTG_PCGCCTL_GATECLK USB_OTG_PCGCCTL_GATEHCLK +#endif +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_TIM_SetICPrescalerValue TIM_SET_ICPRESCALERVALUE +#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE + +#define TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE +#define TIM_GET_CLEAR_IT __HAL_TIM_CLEAR_IT + +#define __HAL_TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE + +#define __HAL_TIM_DIRECTION_STATUS __HAL_TIM_IS_TIM_COUNTING_DOWN +#define __HAL_TIM_PRESCALER __HAL_TIM_SET_PRESCALER +#define __HAL_TIM_SetCounter __HAL_TIM_SET_COUNTER +#define __HAL_TIM_GetCounter __HAL_TIM_GET_COUNTER +#define __HAL_TIM_SetAutoreload __HAL_TIM_SET_AUTORELOAD +#define __HAL_TIM_GetAutoreload __HAL_TIM_GET_AUTORELOAD +#define __HAL_TIM_SetClockDivision __HAL_TIM_SET_CLOCKDIVISION +#define __HAL_TIM_GetClockDivision __HAL_TIM_GET_CLOCKDIVISION +#define __HAL_TIM_SetICPrescaler __HAL_TIM_SET_ICPRESCALER +#define __HAL_TIM_GetICPrescaler __HAL_TIM_GET_ICPRESCALER +#define __HAL_TIM_SetCompare __HAL_TIM_SET_COMPARE +#define __HAL_TIM_GetCompare __HAL_TIM_GET_COMPARE + +#define TIM_BREAKINPUTSOURCE_DFSDM TIM_BREAKINPUTSOURCE_DFSDM1 + +#define TIM_OCMODE_ASSYMETRIC_PWM1 TIM_OCMODE_ASYMMETRIC_PWM1 +#define TIM_OCMODE_ASSYMETRIC_PWM2 TIM_OCMODE_ASYMMETRIC_PWM2 +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_ETH_EXTI_ENABLE_IT __HAL_ETH_WAKEUP_EXTI_ENABLE_IT +#define __HAL_ETH_EXTI_DISABLE_IT __HAL_ETH_WAKEUP_EXTI_DISABLE_IT +#define __HAL_ETH_EXTI_GET_FLAG __HAL_ETH_WAKEUP_EXTI_GET_FLAG +#define __HAL_ETH_EXTI_CLEAR_FLAG __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER + +#define ETH_PROMISCIOUSMODE_ENABLE ETH_PROMISCUOUS_MODE_ENABLE +#define ETH_PROMISCIOUSMODE_DISABLE ETH_PROMISCUOUS_MODE_DISABLE +#define IS_ETH_PROMISCIOUS_MODE IS_ETH_PROMISCUOUS_MODE +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_LTDC_LAYER LTDC_LAYER +#define __HAL_LTDC_RELOAD_CONFIG __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG +/** + * @} + */ + +/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose + * @{ + */ +#define SAI_OUTPUTDRIVE_DISABLED SAI_OUTPUTDRIVE_DISABLE +#define SAI_OUTPUTDRIVE_ENABLED SAI_OUTPUTDRIVE_ENABLE +#define SAI_MASTERDIVIDER_ENABLED SAI_MASTERDIVIDER_ENABLE +#define SAI_MASTERDIVIDER_DISABLED SAI_MASTERDIVIDER_DISABLE +#define SAI_STREOMODE SAI_STEREOMODE +#define SAI_FIFOStatus_Empty SAI_FIFOSTATUS_EMPTY +#define SAI_FIFOStatus_Less1QuarterFull SAI_FIFOSTATUS_LESS1QUARTERFULL +#define SAI_FIFOStatus_1QuarterFull SAI_FIFOSTATUS_1QUARTERFULL +#define SAI_FIFOStatus_HalfFull SAI_FIFOSTATUS_HALFFULL +#define SAI_FIFOStatus_3QuartersFull SAI_FIFOSTATUS_3QUARTERFULL +#define SAI_FIFOStatus_Full SAI_FIFOSTATUS_FULL +#define IS_SAI_BLOCK_MONO_STREO_MODE IS_SAI_BLOCK_MONO_STEREO_MODE +#define SAI_SYNCHRONOUS_EXT SAI_SYNCHRONOUS_EXT_SAI1 +#define SAI_SYNCEXT_IN_ENABLE SAI_SYNCEXT_OUTBLOCKA_ENABLE +/** + * @} + */ + +/** @defgroup HAL_SPDIFRX_Aliased_Macros HAL SPDIFRX Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32H7) +#define HAL_SPDIFRX_ReceiveControlFlow HAL_SPDIFRX_ReceiveCtrlFlow +#define HAL_SPDIFRX_ReceiveControlFlow_IT HAL_SPDIFRX_ReceiveCtrlFlow_IT +#define HAL_SPDIFRX_ReceiveControlFlow_DMA HAL_SPDIFRX_ReceiveCtrlFlow_DMA +#endif +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose + * @{ + */ +#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3) +#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT +#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA +#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart +#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT +#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA +#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop +#endif +/** + * @} + */ + +/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7) || defined(STM32H7) +#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE +#endif /* STM32L4 || STM32F4 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_Generic_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32F7) +#define ART_ACCLERATOR_ENABLE ART_ACCELERATOR_ENABLE +#endif /* STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32_HAL_LEGACY */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h new file mode 100644 index 0000000..54d3ad0 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal.h @@ -0,0 +1,995 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the HAL + * module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_H +#define __STM32L1xx_HAL_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_conf.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup HAL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Constants HAL Exported Constants + * @{ + */ + +/** @defgroup HAL_TICK_FREQ Tick Frequency + * @{ + */ +#define HAL_TICK_FREQ_10HZ 100U +#define HAL_TICK_FREQ_100HZ 10U +#define HAL_TICK_FREQ_1KHZ 1U +#define HAL_TICK_FREQ_DEFAULT HAL_TICK_FREQ_1KHZ + +#define IS_TICKFREQ(__FREQ__) (((__FREQ__) == HAL_TICK_FREQ_10HZ) || \ + ((__FREQ__) == HAL_TICK_FREQ_100HZ) || \ + ((__FREQ__) == HAL_TICK_FREQ_1KHZ)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup SYSCFG_Exported_Constants SYSCFG Exported Constants + * @{ + */ + +/** @defgroup SYSCFG_Constants SYSCFG: SYStem ConFiG + * @{ + */ + +/** @defgroup SYSCFG_BootMode Boot Mode + * @{ + */ + +#define SYSCFG_BOOT_MAINFLASH (0x00000000U) +#define SYSCFG_BOOT_SYSTEMFLASH ((uint32_t)SYSCFG_MEMRMP_BOOT_MODE_0) +#if defined(FSMC_R_BASE) +#define SYSCFG_BOOT_FSMC ((uint32_t)SYSCFG_MEMRMP_BOOT_MODE_1) +#endif /* FSMC_R_BASE */ +#define SYSCFG_BOOT_SRAM ((uint32_t)SYSCFG_MEMRMP_BOOT_MODE) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup RI_Constants RI: Routing Interface + * @{ + */ + +/** @defgroup RI_InputCapture Input Capture + * @{ + */ + +#define RI_INPUTCAPTURE_IC1 RI_ICR_IC1 /*!< Input Capture 1 */ +#define RI_INPUTCAPTURE_IC2 RI_ICR_IC2 /*!< Input Capture 2 */ +#define RI_INPUTCAPTURE_IC3 RI_ICR_IC3 /*!< Input Capture 3 */ +#define RI_INPUTCAPTURE_IC4 RI_ICR_IC4 /*!< Input Capture 4 */ + +/** + * @} + */ + +/** @defgroup TIM_Select TIM Select + * @{ + */ + +#define TIM_SELECT_NONE (0x00000000U) /*!< None selected */ +#define TIM_SELECT_TIM2 ((uint32_t)RI_ICR_TIM_0) /*!< Timer 2 selected */ +#define TIM_SELECT_TIM3 ((uint32_t)RI_ICR_TIM_1) /*!< Timer 3 selected */ +#define TIM_SELECT_TIM4 ((uint32_t)RI_ICR_TIM) /*!< Timer 4 selected */ + +#define IS_RI_TIM(__TIM__) (((__TIM__) == TIM_SELECT_NONE) || \ + ((__TIM__) == TIM_SELECT_TIM2) || \ + ((__TIM__) == TIM_SELECT_TIM3) || \ + ((__TIM__) == TIM_SELECT_TIM4)) + +/** + * @} + */ + +/** @defgroup RI_InputCaptureRouting Input Capture Routing + * @{ + */ + /* TIMx_IC1 TIMx_IC2 TIMx_IC3 TIMx_IC4 */ +#define RI_INPUTCAPTUREROUTING_0 (0x00000000U) /* PA0 PA1 PA2 PA3 */ +#define RI_INPUTCAPTUREROUTING_1 (0x00000001U) /* PA4 PA5 PA6 PA7 */ +#define RI_INPUTCAPTUREROUTING_2 (0x00000002U) /* PA8 PA9 PA10 PA11 */ +#define RI_INPUTCAPTUREROUTING_3 (0x00000003U) /* PA12 PA13 PA14 PA15 */ +#define RI_INPUTCAPTUREROUTING_4 (0x00000004U) /* PC0 PC1 PC2 PC3 */ +#define RI_INPUTCAPTUREROUTING_5 (0x00000005U) /* PC4 PC5 PC6 PC7 */ +#define RI_INPUTCAPTUREROUTING_6 (0x00000006U) /* PC8 PC9 PC10 PC11 */ +#define RI_INPUTCAPTUREROUTING_7 (0x00000007U) /* PC12 PC13 PC14 PC15 */ +#define RI_INPUTCAPTUREROUTING_8 (0x00000008U) /* PD0 PD1 PD2 PD3 */ +#define RI_INPUTCAPTUREROUTING_9 (0x00000009U) /* PD4 PD5 PD6 PD7 */ +#define RI_INPUTCAPTUREROUTING_10 (0x0000000AU) /* PD8 PD9 PD10 PD11 */ +#define RI_INPUTCAPTUREROUTING_11 (0x0000000BU) /* PD12 PD13 PD14 PD15 */ +#define RI_INPUTCAPTUREROUTING_12 (0x0000000CU) /* PE0 PE1 PE2 PE3 */ +#define RI_INPUTCAPTUREROUTING_13 (0x0000000DU) /* PE4 PE5 PE6 PE7 */ +#define RI_INPUTCAPTUREROUTING_14 (0x0000000EU) /* PE8 PE9 PE10 PE11 */ +#define RI_INPUTCAPTUREROUTING_15 (0x0000000FU) /* PE12 PE13 PE14 PE15 */ + +#define IS_RI_INPUTCAPTURE_ROUTING(__ROUTING__) (((__ROUTING__) == RI_INPUTCAPTUREROUTING_0) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_1) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_2) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_3) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_4) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_5) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_6) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_7) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_8) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_9) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_10) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_11) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_12) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_13) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_14) || \ + ((__ROUTING__) == RI_INPUTCAPTUREROUTING_15)) + +/** + * @} + */ + +/** @defgroup RI_IOSwitch IO Switch + * @{ + */ +#define RI_ASCR1_REGISTER (0x80000000U) +/* ASCR1 I/O switch: bit 31 is set to '1' to indicate that the mask is in ASCR1 register */ +#define RI_IOSWITCH_CH0 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_0) +#define RI_IOSWITCH_CH1 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_1) +#define RI_IOSWITCH_CH2 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_2) +#define RI_IOSWITCH_CH3 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_3) +#define RI_IOSWITCH_CH4 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_4) +#define RI_IOSWITCH_CH5 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_5) +#define RI_IOSWITCH_CH6 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_6) +#define RI_IOSWITCH_CH7 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_7) +#define RI_IOSWITCH_CH8 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_8) +#define RI_IOSWITCH_CH9 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_9) +#define RI_IOSWITCH_CH10 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_10) +#define RI_IOSWITCH_CH11 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_11) +#define RI_IOSWITCH_CH12 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_12) +#define RI_IOSWITCH_CH13 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_13) +#define RI_IOSWITCH_CH14 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_14) +#define RI_IOSWITCH_CH15 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_15) +#define RI_IOSWITCH_CH18 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_18) +#define RI_IOSWITCH_CH19 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_19) +#define RI_IOSWITCH_CH20 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_20) +#define RI_IOSWITCH_CH21 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_21) +#define RI_IOSWITCH_CH22 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_22) +#define RI_IOSWITCH_CH23 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_23) +#define RI_IOSWITCH_CH24 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_24) +#define RI_IOSWITCH_CH25 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_25) +#define RI_IOSWITCH_VCOMP ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_VCOMP) /* VCOMP (ADC channel 26) is an internal switch used to connect selected channel to COMP1 non inverting input */ +#if defined (RI_ASCR2_CH1b) /* STM32L1 devices category Cat.4 and Cat.5 */ +#define RI_IOSWITCH_CH27 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_27) +#define RI_IOSWITCH_CH28 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_28) +#define RI_IOSWITCH_CH29 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_29) +#define RI_IOSWITCH_CH30 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_30) +#define RI_IOSWITCH_CH31 ((uint32_t)RI_ASCR1_REGISTER | RI_ASCR1_CH_31) +#endif /* RI_ASCR2_CH1b */ + +/* ASCR2 IO switch: bit 31 is set to '0' to indicate that the mask is in ASCR2 register */ +#define RI_IOSWITCH_GR10_1 ((uint32_t)RI_ASCR2_GR10_1) +#define RI_IOSWITCH_GR10_2 ((uint32_t)RI_ASCR2_GR10_2) +#define RI_IOSWITCH_GR10_3 ((uint32_t)RI_ASCR2_GR10_3) +#define RI_IOSWITCH_GR10_4 ((uint32_t)RI_ASCR2_GR10_4) +#define RI_IOSWITCH_GR6_1 ((uint32_t)RI_ASCR2_GR6_1) +#define RI_IOSWITCH_GR6_2 ((uint32_t)RI_ASCR2_GR6_2) +#define RI_IOSWITCH_GR5_1 ((uint32_t)RI_ASCR2_GR5_1) +#define RI_IOSWITCH_GR5_2 ((uint32_t)RI_ASCR2_GR5_2) +#define RI_IOSWITCH_GR5_3 ((uint32_t)RI_ASCR2_GR5_3) +#define RI_IOSWITCH_GR4_1 ((uint32_t)RI_ASCR2_GR4_1) +#define RI_IOSWITCH_GR4_2 ((uint32_t)RI_ASCR2_GR4_2) +#define RI_IOSWITCH_GR4_3 ((uint32_t)RI_ASCR2_GR4_3) +#if defined (RI_ASCR2_CH0b) /* STM32L1 devices category Cat.3, Cat.4 and Cat.5 */ +#define RI_IOSWITCH_CH0b ((uint32_t)RI_ASCR2_CH0b) +#if defined (RI_ASCR2_CH1b) /* STM32L1 devices category Cat.4 and Cat.5 */ +#define RI_IOSWITCH_CH1b ((uint32_t)RI_ASCR2_CH1b) +#define RI_IOSWITCH_CH2b ((uint32_t)RI_ASCR2_CH2b) +#define RI_IOSWITCH_CH3b ((uint32_t)RI_ASCR2_CH3b) +#define RI_IOSWITCH_CH6b ((uint32_t)RI_ASCR2_CH6b) +#define RI_IOSWITCH_CH7b ((uint32_t)RI_ASCR2_CH7b) +#define RI_IOSWITCH_CH8b ((uint32_t)RI_ASCR2_CH8b) +#define RI_IOSWITCH_CH9b ((uint32_t)RI_ASCR2_CH9b) +#define RI_IOSWITCH_CH10b ((uint32_t)RI_ASCR2_CH10b) +#define RI_IOSWITCH_CH11b ((uint32_t)RI_ASCR2_CH11b) +#define RI_IOSWITCH_CH12b ((uint32_t)RI_ASCR2_CH12b) +#endif /* RI_ASCR2_CH1b */ +#define RI_IOSWITCH_GR6_3 ((uint32_t)RI_ASCR2_GR6_3) +#define RI_IOSWITCH_GR6_4 ((uint32_t)RI_ASCR2_GR6_4) +#endif /* RI_ASCR2_CH0b */ + + +#if defined (RI_ASCR2_CH1b) /* STM32L1 devices category Cat.4 and Cat.5 */ + +#define IS_RI_IOSWITCH(__IOSWITCH__) (((__IOSWITCH__) == RI_IOSWITCH_CH0) || ((__IOSWITCH__) == RI_IOSWITCH_CH1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH2) || ((__IOSWITCH__) == RI_IOSWITCH_CH3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH4) || ((__IOSWITCH__) == RI_IOSWITCH_CH5) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH6) || ((__IOSWITCH__) == RI_IOSWITCH_CH7) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH8) || ((__IOSWITCH__) == RI_IOSWITCH_CH9) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH10) || ((__IOSWITCH__) == RI_IOSWITCH_CH11) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH12) || ((__IOSWITCH__) == RI_IOSWITCH_CH13) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH14) || ((__IOSWITCH__) == RI_IOSWITCH_CH15) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH18) || ((__IOSWITCH__) == RI_IOSWITCH_CH19) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH20) || ((__IOSWITCH__) == RI_IOSWITCH_CH21) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH22) || ((__IOSWITCH__) == RI_IOSWITCH_CH23) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH24) || ((__IOSWITCH__) == RI_IOSWITCH_CH25) || \ + ((__IOSWITCH__) == RI_IOSWITCH_VCOMP) || ((__IOSWITCH__) == RI_IOSWITCH_CH27) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH28) || ((__IOSWITCH__) == RI_IOSWITCH_CH29) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH30) || ((__IOSWITCH__) == RI_IOSWITCH_CH31) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_1) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_2) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_3) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_4) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR6_1) || ((__IOSWITCH__) == RI_IOSWITCH_GR6_2) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR6_3) || ((__IOSWITCH__) == RI_IOSWITCH_GR6_4) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR5_1) || ((__IOSWITCH__) == RI_IOSWITCH_GR5_2) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR5_3) || ((__IOSWITCH__) == RI_IOSWITCH_GR4_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR4_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR4_3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH0b) || ((__IOSWITCH__) == RI_IOSWITCH_CH1b) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH2b) || ((__IOSWITCH__) == RI_IOSWITCH_CH3b) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH6b) || ((__IOSWITCH__) == RI_IOSWITCH_CH7b) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH8b) || ((__IOSWITCH__) == RI_IOSWITCH_CH9b) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH10b) || ((__IOSWITCH__) == RI_IOSWITCH_CH11b) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH12b)) + +#else /* !RI_ASCR2_CH1b */ + +#if defined (RI_ASCR2_CH0b) /* STM32L1 devices category Cat.3 */ + +#define IS_RI_IOSWITCH(__IOSWITCH__) (((__IOSWITCH__) == RI_IOSWITCH_CH0) || ((__IOSWITCH__) == RI_IOSWITCH_CH1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH2) || ((__IOSWITCH__) == RI_IOSWITCH_CH3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH4) || ((__IOSWITCH__) == RI_IOSWITCH_CH5) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH6) || ((__IOSWITCH__) == RI_IOSWITCH_CH7) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH8) || ((__IOSWITCH__) == RI_IOSWITCH_CH9) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH10) || ((__IOSWITCH__) == RI_IOSWITCH_CH11) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH12) || ((__IOSWITCH__) == RI_IOSWITCH_CH13) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH14) || ((__IOSWITCH__) == RI_IOSWITCH_CH15) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH18) || ((__IOSWITCH__) == RI_IOSWITCH_CH19) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH20) || ((__IOSWITCH__) == RI_IOSWITCH_CH21) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH22) || ((__IOSWITCH__) == RI_IOSWITCH_CH23) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH24) || ((__IOSWITCH__) == RI_IOSWITCH_CH25) || \ + ((__IOSWITCH__) == RI_IOSWITCH_VCOMP) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_4) || ((__IOSWITCH__) == RI_IOSWITCH_GR6_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR6_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR5_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR5_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR5_3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR4_1) || ((__IOSWITCH__) == RI_IOSWITCH_GR4_2) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR4_3) || ((__IOSWITCH__) == RI_IOSWITCH_CH0b)) + +#else /* !RI_ASCR2_CH0b */ /* STM32L1 devices category Cat.1 and Cat.2 */ + +#define IS_RI_IOSWITCH(__IOSWITCH__) (((__IOSWITCH__) == RI_IOSWITCH_CH0) || ((__IOSWITCH__) == RI_IOSWITCH_CH1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH2) || ((__IOSWITCH__) == RI_IOSWITCH_CH3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH4) || ((__IOSWITCH__) == RI_IOSWITCH_CH5) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH6) || ((__IOSWITCH__) == RI_IOSWITCH_CH7) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH8) || ((__IOSWITCH__) == RI_IOSWITCH_CH9) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH10) || ((__IOSWITCH__) == RI_IOSWITCH_CH11) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH12) || ((__IOSWITCH__) == RI_IOSWITCH_CH13) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH14) || ((__IOSWITCH__) == RI_IOSWITCH_CH15) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH18) || ((__IOSWITCH__) == RI_IOSWITCH_CH19) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH20) || ((__IOSWITCH__) == RI_IOSWITCH_CH21) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH22) || ((__IOSWITCH__) == RI_IOSWITCH_CH23) || \ + ((__IOSWITCH__) == RI_IOSWITCH_CH24) || ((__IOSWITCH__) == RI_IOSWITCH_CH25) || \ + ((__IOSWITCH__) == RI_IOSWITCH_VCOMP) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR10_3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR10_4) || ((__IOSWITCH__) == RI_IOSWITCH_GR6_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR6_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR5_1) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR5_2) || ((__IOSWITCH__) == RI_IOSWITCH_GR5_3) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR4_1) || ((__IOSWITCH__) == RI_IOSWITCH_GR4_2) || \ + ((__IOSWITCH__) == RI_IOSWITCH_GR4_3)) + +#endif /* RI_ASCR2_CH0b */ +#endif /* RI_ASCR2_CH1b */ + +/** + * @} + */ + +/** @defgroup RI_Pin PIN define + * @{ + */ +#define RI_PIN_0 ((uint16_t)0x0001) /*!< Pin 0 selected */ +#define RI_PIN_1 ((uint16_t)0x0002) /*!< Pin 1 selected */ +#define RI_PIN_2 ((uint16_t)0x0004) /*!< Pin 2 selected */ +#define RI_PIN_3 ((uint16_t)0x0008) /*!< Pin 3 selected */ +#define RI_PIN_4 ((uint16_t)0x0010) /*!< Pin 4 selected */ +#define RI_PIN_5 ((uint16_t)0x0020) /*!< Pin 5 selected */ +#define RI_PIN_6 ((uint16_t)0x0040) /*!< Pin 6 selected */ +#define RI_PIN_7 ((uint16_t)0x0080) /*!< Pin 7 selected */ +#define RI_PIN_8 ((uint16_t)0x0100) /*!< Pin 8 selected */ +#define RI_PIN_9 ((uint16_t)0x0200) /*!< Pin 9 selected */ +#define RI_PIN_10 ((uint16_t)0x0400) /*!< Pin 10 selected */ +#define RI_PIN_11 ((uint16_t)0x0800) /*!< Pin 11 selected */ +#define RI_PIN_12 ((uint16_t)0x1000) /*!< Pin 12 selected */ +#define RI_PIN_13 ((uint16_t)0x2000) /*!< Pin 13 selected */ +#define RI_PIN_14 ((uint16_t)0x4000) /*!< Pin 14 selected */ +#define RI_PIN_15 ((uint16_t)0x8000) /*!< Pin 15 selected */ +#define RI_PIN_ALL ((uint16_t)0xFFFF) /*!< All pins selected */ + +#define IS_RI_PIN(__PIN__) ((__PIN__) != (uint16_t)0x00) + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Macros HAL Exported Macros + * @{ + */ + +/** @defgroup DBGMCU_Macros DBGMCU: Debug MCU + * @{ + */ + +/** @defgroup DBGMCU_Freeze_Unfreeze Freeze Unfreeze Peripherals in Debug mode + * @brief Freeze/Unfreeze Peripherals in Debug mode + * @{ + */ + +/** + * @brief TIM2 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM2_STOP) +#define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM2_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM2_STOP) +#endif + +/** + * @brief TIM3 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM3_STOP) +#define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM3_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM3_STOP) +#endif + +/** + * @brief TIM4 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM4_STOP) +#define __HAL_DBGMCU_FREEZE_TIM4() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM4_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM4() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM4_STOP) +#endif + +/** + * @brief TIM5 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM5_STOP) +#define __HAL_DBGMCU_FREEZE_TIM5() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM5_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM5() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM5_STOP) +#endif + +/** + * @brief TIM6 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM6_STOP) +#define __HAL_DBGMCU_FREEZE_TIM6() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM6_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM6() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM6_STOP) +#endif + +/** + * @brief TIM7 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM7_STOP) +#define __HAL_DBGMCU_FREEZE_TIM7() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM7_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM7() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM7_STOP) +#endif + +/** + * @brief RTC Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_RTC_STOP) +#define __HAL_DBGMCU_FREEZE_RTC() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_RTC_STOP) +#define __HAL_DBGMCU_UNFREEZE_RTC() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_RTC_STOP) +#endif + +/** + * @brief WWDG Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_WWDG_STOP) +#define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_WWDG_STOP) +#define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_WWDG_STOP) +#endif + +/** + * @brief IWDG Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_IWDG_STOP) +#define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP) +#define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP) +#endif + +/** + * @brief I2C1 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT) +#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT) +#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT) +#endif + +/** + * @brief I2C2 Peripherals Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT) +#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT) +#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT) +#endif + +/** + * @brief TIM9 Peripherals Debug mode + */ +#if defined (DBGMCU_APB2_FZ_DBG_TIM9_STOP) +#define __HAL_DBGMCU_FREEZE_TIM9() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM9_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM9() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM9_STOP) +#endif + +/** + * @brief TIM10 Peripherals Debug mode + */ +#if defined (DBGMCU_APB2_FZ_DBG_TIM10_STOP) +#define __HAL_DBGMCU_FREEZE_TIM10() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM10_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM10() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM10_STOP) +#endif + +/** + * @brief TIM11 Peripherals Debug mode + */ +#if defined (DBGMCU_APB2_FZ_DBG_TIM11_STOP) +#define __HAL_DBGMCU_FREEZE_TIM11() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM11_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM11() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM11_STOP) +#endif + + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup SYSCFG_Macros SYSCFG: SYStem ConFiG + * @{ + */ + +/** @defgroup SYSCFG_VrefInt VREFINT configuration + * @{ + */ + +/** + * @brief Enables or disables the output of internal reference voltage + * (VrefInt) on I/O pin. + * @note The VrefInt output can be routed to any I/O in group 3: + * - For Cat.1 and Cat.2 devices: CH8 (PB0) or CH9 (PB1). + * - For Cat.3 devices: CH8 (PB0), CH9 (PB1) or CH0b (PB2). + * - For Cat.4 and Cat.5 devices: CH8 (PB0), CH9 (PB1), CH0b (PB2), + * CH1b (PF11) or CH2b (PF12). + * Note: Comparator peripheral clock must be preliminarily enabled, + * either in COMP user function "HAL_COMP_MspInit()" (should be + * done if comparators are used) or by direct clock enable: + * Refer to macro "__HAL_RCC_COMP_CLK_ENABLE()". + * Note: In addition with this macro, VrefInt output buffer must be + * connected to the selected I/O pin. Refer to macro + * "__HAL_RI_IOSWITCH_CLOSE()". + * @note VrefInt output enable: Internal reference voltage connected to I/O group 3 + * VrefInt output disable: Internal reference voltage disconnected from I/O group 3 + * @retval None + */ +#define __HAL_SYSCFG_VREFINT_OUT_ENABLE() SET_BIT(COMP->CSR, COMP_CSR_VREFOUTEN) +#define __HAL_SYSCFG_VREFINT_OUT_DISABLE() CLEAR_BIT(COMP->CSR, COMP_CSR_VREFOUTEN) + +/** + * @} + */ + +/** @defgroup SYSCFG_BootModeConfig Boot Mode Configuration + * @{ + */ + +/** + * @brief Main Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FLASH() CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE) + +/** @brief System Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_0) + +/** @brief Embedded SRAM mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SRAM() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_0 | SYSCFG_MEMRMP_MEM_MODE_1) + +#if defined(FSMC_R_BASE) +/** @brief FSMC Bank1 (NOR/PSRAM 1 and 2) mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FSMC() MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, SYSCFG_MEMRMP_MEM_MODE_1) + +#endif /* FSMC_R_BASE */ + +/** + * @brief Returns the boot mode as configured by user. + * @retval The boot mode as configured by user. The returned value can be one + * of the following values: + * @arg SYSCFG_BOOT_MAINFLASH + * @arg SYSCFG_BOOT_SYSTEMFLASH + * @arg SYSCFG_BOOT_FSMC (available only for STM32L151xD, STM32L152xD & STM32L162xD) + * @arg SYSCFG_BOOT_SRAM + */ +#define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_BOOT_MODE) + +/** + * @} + */ + +/** @defgroup SYSCFG_USBConfig USB DP line Configuration + * @{ + */ + +/** + * @brief Control the internal pull-up on USB DP line. + */ +#define __HAL_SYSCFG_USBPULLUP_ENABLE() SET_BIT(SYSCFG->PMC, SYSCFG_PMC_USB_PU) + +#define __HAL_SYSCFG_USBPULLUP_DISABLE() CLEAR_BIT(SYSCFG->PMC, SYSCFG_PMC_USB_PU) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup RI_Macris RI: Routing Interface + * @{ + */ + +/** @defgroup RI_InputCaputureConfig Input Capture configuration + * @{ + */ + +/** + * @brief Configures the routing interface to map Input Capture 1 of TIMx to a selected I/O pin. + * @param __TIMSELECT__ Timer select. + * This parameter can be one of the following values: + * @arg TIM_SELECT_NONE: No timer selected and default Timer mapping is enabled. + * @arg TIM_SELECT_TIM2: Timer 2 Input Captures to be routed. + * @arg TIM_SELECT_TIM3: Timer 3 Input Captures to be routed. + * @arg TIM_SELECT_TIM4: Timer 4 Input Captures to be routed. + * @param __INPUT__ selects which pin to be routed to Input Capture. + * This parameter must be a value of @ref RI_InputCaptureRouting + * e.g. + * __HAL_RI_REMAP_INPUTCAPTURE1(TIM_SELECT_TIM2, RI_INPUTCAPTUREROUTING_1) + * allows routing of Input capture IC1 of TIM2 to PA4. + * For details about correspondence between RI_INPUTCAPTUREROUTING_x + * and I/O pins refer to the parameters' description in the header file + * or refer to the product reference manual. + * @note Input capture selection bits are not reset by this function. + * To reset input capture selection bits, use SYSCFG_RIDeInit() function. + * @note The I/O should be configured in alternate function mode (AF14) using + * GPIO_PinAFConfig() function. + * @retval None. + */ +#define __HAL_RI_REMAP_INPUTCAPTURE1(__TIMSELECT__, __INPUT__) \ + do {assert_param(IS_RI_TIM(__TIMSELECT__)); \ + assert_param(IS_RI_INPUTCAPTURE_ROUTING(__INPUT__)); \ + MODIFY_REG(RI->ICR, RI_ICR_TIM, (__TIMSELECT__)); \ + SET_BIT(RI->ICR, RI_INPUTCAPTURE_IC1); \ + MODIFY_REG(RI->ICR, RI_ICR_IC1OS, (__INPUT__) << POSITION_VAL(RI_ICR_IC1OS)); \ + }while(0) + +/** + * @brief Configures the routing interface to map Input Capture 2 of TIMx to a selected I/O pin. + * @param __TIMSELECT__ Timer select. + * This parameter can be one of the following values: + * @arg TIM_SELECT_NONE: No timer selected and default Timer mapping is enabled. + * @arg TIM_SELECT_TIM2: Timer 2 Input Captures to be routed. + * @arg TIM_SELECT_TIM3: Timer 3 Input Captures to be routed. + * @arg TIM_SELECT_TIM4: Timer 4 Input Captures to be routed. + * @param __INPUT__ selects which pin to be routed to Input Capture. + * This parameter must be a value of @ref RI_InputCaptureRouting + * @retval None. + */ +#define __HAL_RI_REMAP_INPUTCAPTURE2(__TIMSELECT__, __INPUT__) \ + do {assert_param(IS_RI_TIM(__TIMSELECT__)); \ + assert_param(IS_RI_INPUTCAPTURE_ROUTING(__INPUT__)); \ + MODIFY_REG(RI->ICR, RI_ICR_TIM, (__TIMSELECT__)); \ + SET_BIT(RI->ICR, RI_INPUTCAPTURE_IC2); \ + MODIFY_REG(RI->ICR, RI_ICR_IC2OS, (__INPUT__) << POSITION_VAL(RI_ICR_IC2OS)); \ + }while(0) + +/** + * @brief Configures the routing interface to map Input Capture 3 of TIMx to a selected I/O pin. + * @param __TIMSELECT__ Timer select. + * This parameter can be one of the following values: + * @arg TIM_SELECT_NONE: No timer selected and default Timer mapping is enabled. + * @arg TIM_SELECT_TIM2: Timer 2 Input Captures to be routed. + * @arg TIM_SELECT_TIM3: Timer 3 Input Captures to be routed. + * @arg TIM_SELECT_TIM4: Timer 4 Input Captures to be routed. + * @param __INPUT__ selects which pin to be routed to Input Capture. + * This parameter must be a value of @ref RI_InputCaptureRouting + * @retval None. + */ +#define __HAL_RI_REMAP_INPUTCAPTURE3(__TIMSELECT__, __INPUT__) \ + do {assert_param(IS_RI_TIM(__TIMSELECT__)); \ + assert_param(IS_RI_INPUTCAPTURE_ROUTING(__INPUT__)); \ + MODIFY_REG(RI->ICR, RI_ICR_TIM, (__TIMSELECT__)); \ + SET_BIT(RI->ICR, RI_INPUTCAPTURE_IC3); \ + MODIFY_REG(RI->ICR, RI_ICR_IC3OS, (__INPUT__) << POSITION_VAL(RI_ICR_IC3OS)); \ + }while(0) + +/** + * @brief Configures the routing interface to map Input Capture 4 of TIMx to a selected I/O pin. + * @param __TIMSELECT__ Timer select. + * This parameter can be one of the following values: + * @arg TIM_SELECT_NONE: No timer selected and default Timer mapping is enabled. + * @arg TIM_SELECT_TIM2: Timer 2 Input Captures to be routed. + * @arg TIM_SELECT_TIM3: Timer 3 Input Captures to be routed. + * @arg TIM_SELECT_TIM4: Timer 4 Input Captures to be routed. + * @param __INPUT__ selects which pin to be routed to Input Capture. + * This parameter must be a value of @ref RI_InputCaptureRouting + * @retval None. + */ +#define __HAL_RI_REMAP_INPUTCAPTURE4(__TIMSELECT__, __INPUT__) \ + do {assert_param(IS_RI_TIM(__TIMSELECT__)); \ + assert_param(IS_RI_INPUTCAPTURE_ROUTING(__INPUT__)); \ + MODIFY_REG(RI->ICR, RI_ICR_TIM, (__TIMSELECT__)); \ + SET_BIT(RI->ICR, RI_INPUTCAPTURE_IC4); \ + MODIFY_REG(RI->ICR, RI_ICR_IC4OS, (__INPUT__) << POSITION_VAL(RI_ICR_IC4OS)); \ + }while(0) + +/** + * @} + */ + +/** @defgroup RI_SwitchControlConfig Switch Control configuration + * @{ + */ + +/** + * @brief Enable or disable the switch control mode. + * @note ENABLE: ADC analog switches closed if the corresponding + * I/O switch is also closed. + * When using COMP1, switch control mode must be enabled. + * @note DISABLE: ADC analog switches open or controlled by the ADC interface. + * When using the ADC for acquisition, switch control mode + * must be disabled. + * @note COMP1 comparator and ADC cannot be used at the same time since + * they share the ADC switch matrix. + * @retval None + */ +#define __HAL_RI_SWITCHCONTROLMODE_ENABLE() SET_BIT(RI->ASCR1, RI_ASCR1_SCM) + +#define __HAL_RI_SWITCHCONTROLMODE_DISABLE() CLEAR_BIT(RI->ASCR1, RI_ASCR1_SCM) + +/* + * @brief Close or Open the routing interface Input Output switches. + * @param __IOSWITCH__ selects the I/O analog switch number. + * This parameter must be a value of @ref RI_IOSwitch + * @retval None + */ +#define __HAL_RI_IOSWITCH_CLOSE(__IOSWITCH__) do { assert_param(IS_RI_IOSWITCH(__IOSWITCH__)); \ + if ((__IOSWITCH__) >> 31 != 0 ) \ + { \ + SET_BIT(RI->ASCR1, (__IOSWITCH__) & 0x7FFFFFFF); \ + } \ + else \ + { \ + SET_BIT(RI->ASCR2, (__IOSWITCH__)); \ + } \ + }while(0) + +#define __HAL_RI_IOSWITCH_OPEN(__IOSWITCH__) do { assert_param(IS_RI_IOSWITCH(__IOSWITCH__)); \ + if ((__IOSWITCH__) >> 31 != 0 ) \ + { \ + CLEAR_BIT(RI->ASCR1, (__IOSWITCH__) & 0x7FFFFFFF); \ + } \ + else \ + { \ + CLEAR_BIT(RI->ASCR2, (__IOSWITCH__)); \ + } \ + }while(0) + +#if defined (COMP_CSR_SW1) +/** + * @brief Close or open the internal switch COMP1_SW1. + * This switch connects I/O pin PC3 (can be used as ADC channel 13) + * and OPAMP3 output to ADC switch matrix (ADC channel VCOMP, channel + * 26) and COMP1 non-inverting input. + * Pin PC3 connection depends on another switch setting, refer to + * macro "__HAL_ADC_CHANNEL_SPEED_FAST()". + * @retval None. + */ +#define __HAL_RI_SWITCH_COMP1_SW1_CLOSE() SET_BIT(COMP->CSR, COMP_CSR_SW1) + +#define __HAL_RI_SWITCH_COMP1_SW1_OPEN() CLEAR_BIT(COMP->CSR, COMP_CSR_SW1) +#endif /* COMP_CSR_SW1 */ + +/** + * @} + */ + +/** @defgroup RI_HystConfig Hysteresis Activation and Deactivation + * @{ + */ + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports A + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTA_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR1, (__IOPIN__)); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTA_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR1, (__IOPIN__)); \ + } while(0) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports B + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTB_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR1, (__IOPIN__) << 16 ); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTB_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR1, (__IOPIN__) << 16 ); \ + } while(0) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports C + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTC_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR2, (__IOPIN__)); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTC_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR2, (__IOPIN__)); \ + } while(0) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports D + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTD_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR2, (__IOPIN__) << 16 ); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTD_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR2, (__IOPIN__) << 16 ); \ + } while(0) + +#if defined (GPIOE_BASE) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports E + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTE_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR3, (__IOPIN__)); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTE_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR3, (__IOPIN__)); \ + } while(0) + +#endif /* GPIOE_BASE */ + +#if defined(GPIOF_BASE) || defined(GPIOG_BASE) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports F + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTF_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR3, (__IOPIN__) << 16 ); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTF_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR3, (__IOPIN__) << 16 ); \ + } while(0) + +/** + * @brief Enable or disable Hysteresis of the input schmitt trigger of Ports G + * When the I/Os are programmed in input mode by standard I/O port + * registers, the Schmitt trigger and the hysteresis are enabled by default. + * When hysteresis is disabled, it is possible to read the + * corresponding port with a trigger level of VDDIO/2. + * @param __IOPIN__ : Selects the pin(s) on which to enable or disable hysteresis. + * This parameter must be a value of @ref RI_Pin + * @retval None + */ +#define __HAL_RI_HYSTERIS_PORTG_ON(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + CLEAR_BIT(RI->HYSCR4, (__IOPIN__)); \ + } while(0) + +#define __HAL_RI_HYSTERIS_PORTG_OFF(__IOPIN__) do {assert_param(IS_RI_PIN(__IOPIN__)); \ + SET_BIT(RI->HYSCR4, (__IOPIN__)); \ + } while(0) + +#endif /* GPIOF_BASE || GPIOG_BASE */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported variables --------------------------------------------------------*/ +/** @defgroup HAL_Exported_Variables HAL Exported Variables + * @{ + */ +extern __IO uint32_t uwTick; +extern uint32_t uwTickPrio; +extern uint32_t uwTickFreq; +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Functions + * @{ + */ + +/** @addtogroup HAL_Exported_Functions_Group1 + * @{ + */ + +/* Initialization and de-initialization functions ******************************/ +HAL_StatusTypeDef HAL_Init(void); +HAL_StatusTypeDef HAL_DeInit(void); +void HAL_MspInit(void); +void HAL_MspDeInit(void); +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group2 + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_IncTick(void); +void HAL_Delay(uint32_t Delay); +uint32_t HAL_GetTick(void); +uint32_t HAL_GetTickPrio(void); +HAL_StatusTypeDef HAL_SetTickFreq(uint32_t Freq); +uint32_t HAL_GetTickFreq(void); +void HAL_SuspendTick(void); +void HAL_ResumeTick(void); +uint32_t HAL_GetHalVersion(void); +uint32_t HAL_GetREVID(void); +uint32_t HAL_GetDEVID(void); +uint32_t HAL_GetUIDw0(void); +uint32_t HAL_GetUIDw1(void); +uint32_t HAL_GetUIDw2(void); + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group3 + * @{ + */ + +/* DBGMCU Peripheral Control functions *****************************************/ +void HAL_DBGMCU_EnableDBGSleepMode(void); +void HAL_DBGMCU_DisableDBGSleepMode(void); +void HAL_DBGMCU_EnableDBGStopMode(void); +void HAL_DBGMCU_DisableDBGStopMode(void); +void HAL_DBGMCU_EnableDBGStandbyMode(void); +void HAL_DBGMCU_DisableDBGStandbyMode(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h new file mode 100644 index 0000000..0d48123 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_cortex.h @@ -0,0 +1,437 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_CORTEX_H +#define __STM32L1xx_HAL_CORTEX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup CORTEX + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Types Cortex Exported Types + * @{ + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition + * @brief MPU Region initialization structure + * @{ + */ +typedef struct +{ + uint8_t Enable; /*!< Specifies the status of the region. + This parameter can be a value of @ref CORTEX_MPU_Region_Enable */ + uint8_t Number; /*!< Specifies the number of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Number */ + uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. */ + uint8_t Size; /*!< Specifies the size of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Size */ + uint8_t SubRegionDisable; /*!< Specifies the number of the subregion protection to disable. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */ + uint8_t TypeExtField; /*!< Specifies the TEX field level. + This parameter can be a value of @ref CORTEX_MPU_TEX_Levels */ + uint8_t AccessPermission; /*!< Specifies the region access permission type. + This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes */ + uint8_t DisableExec; /*!< Specifies the instruction access status. + This parameter can be a value of @ref CORTEX_MPU_Instruction_Access */ + uint8_t IsShareable; /*!< Specifies the shareability status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Shareable */ + uint8_t IsCacheable; /*!< Specifies the cacheable status of the region protected. + This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable */ + uint8_t IsBufferable; /*!< Specifies the bufferable status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable */ +}MPU_Region_InitTypeDef; +/** + * @} + */ +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants + * @{ + */ + + +/** @defgroup CORTEX_Preemption_Priority_Group CORTEX Preemption Priority Group + * @{ + */ + +#define NVIC_PRIORITYGROUP_0 (0x00000007U) /*!< 0 bits for pre-emption priority + 4 bits for subpriority */ +#define NVIC_PRIORITYGROUP_1 (0x00000006U) /*!< 1 bits for pre-emption priority + 3 bits for subpriority */ +#define NVIC_PRIORITYGROUP_2 (0x00000005U) /*!< 2 bits for pre-emption priority + 2 bits for subpriority */ +#define NVIC_PRIORITYGROUP_3 (0x00000004U) /*!< 3 bits for pre-emption priority + 1 bits for subpriority */ +#define NVIC_PRIORITYGROUP_4 (0x00000003U) /*!< 4 bits for pre-emption priority + 0 bits for subpriority */ +/** + * @} + */ + +/** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick clock source + * @{ + */ +#define SYSTICK_CLKSOURCE_HCLK_DIV8 (0x00000000U) +#define SYSTICK_CLKSOURCE_HCLK (0x00000004U) + +/** + * @} + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control + * @{ + */ +#define MPU_HFNMI_PRIVDEF_NONE (0x00000000U) +#define MPU_HARDFAULT_NMI (MPU_CTRL_HFNMIENA_Msk) +#define MPU_PRIVILEGED_DEFAULT (MPU_CTRL_PRIVDEFENA_Msk) +#define MPU_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) + +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable + * @{ + */ +#define MPU_REGION_ENABLE ((uint8_t)0x01) +#define MPU_REGION_DISABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access + * @{ + */ +#define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00) +#define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable + * @{ + */ +#define MPU_ACCESS_SHAREABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable + * @{ + */ +#define MPU_ACCESS_CACHEABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable + * @{ + */ +#define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels + * @{ + */ +#define MPU_TEX_LEVEL0 ((uint8_t)0x00) +#define MPU_TEX_LEVEL1 ((uint8_t)0x01) +#define MPU_TEX_LEVEL2 ((uint8_t)0x02) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size + * @{ + */ +#define MPU_REGION_SIZE_32B ((uint8_t)0x04) +#define MPU_REGION_SIZE_64B ((uint8_t)0x05) +#define MPU_REGION_SIZE_128B ((uint8_t)0x06) +#define MPU_REGION_SIZE_256B ((uint8_t)0x07) +#define MPU_REGION_SIZE_512B ((uint8_t)0x08) +#define MPU_REGION_SIZE_1KB ((uint8_t)0x09) +#define MPU_REGION_SIZE_2KB ((uint8_t)0x0A) +#define MPU_REGION_SIZE_4KB ((uint8_t)0x0B) +#define MPU_REGION_SIZE_8KB ((uint8_t)0x0C) +#define MPU_REGION_SIZE_16KB ((uint8_t)0x0D) +#define MPU_REGION_SIZE_32KB ((uint8_t)0x0E) +#define MPU_REGION_SIZE_64KB ((uint8_t)0x0F) +#define MPU_REGION_SIZE_128KB ((uint8_t)0x10) +#define MPU_REGION_SIZE_256KB ((uint8_t)0x11) +#define MPU_REGION_SIZE_512KB ((uint8_t)0x12) +#define MPU_REGION_SIZE_1MB ((uint8_t)0x13) +#define MPU_REGION_SIZE_2MB ((uint8_t)0x14) +#define MPU_REGION_SIZE_4MB ((uint8_t)0x15) +#define MPU_REGION_SIZE_8MB ((uint8_t)0x16) +#define MPU_REGION_SIZE_16MB ((uint8_t)0x17) +#define MPU_REGION_SIZE_32MB ((uint8_t)0x18) +#define MPU_REGION_SIZE_64MB ((uint8_t)0x19) +#define MPU_REGION_SIZE_128MB ((uint8_t)0x1A) +#define MPU_REGION_SIZE_256MB ((uint8_t)0x1B) +#define MPU_REGION_SIZE_512MB ((uint8_t)0x1C) +#define MPU_REGION_SIZE_1GB ((uint8_t)0x1D) +#define MPU_REGION_SIZE_2GB ((uint8_t)0x1E) +#define MPU_REGION_SIZE_4GB ((uint8_t)0x1F) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes + * @{ + */ +#define MPU_REGION_NO_ACCESS ((uint8_t)0x00) +#define MPU_REGION_PRIV_RW ((uint8_t)0x01) +#define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02) +#define MPU_REGION_FULL_ACCESS ((uint8_t)0x03) +#define MPU_REGION_PRIV_RO ((uint8_t)0x05) +#define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number + * @{ + */ +#define MPU_REGION_NUMBER0 ((uint8_t)0x00) +#define MPU_REGION_NUMBER1 ((uint8_t)0x01) +#define MPU_REGION_NUMBER2 ((uint8_t)0x02) +#define MPU_REGION_NUMBER3 ((uint8_t)0x03) +#define MPU_REGION_NUMBER4 ((uint8_t)0x04) +#define MPU_REGION_NUMBER5 ((uint8_t)0x05) +#define MPU_REGION_NUMBER6 ((uint8_t)0x06) +#define MPU_REGION_NUMBER7 ((uint8_t)0x07) +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported Macros -----------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Macros CORTEX Exported Macros + * @{ + */ + +/** @defgroup CORTEX_Preemption_Priority_Group_Macro CORTEX Preemption Priority Group + * @{ + */ +#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \ + ((GROUP) == NVIC_PRIORITYGROUP_1) || \ + ((GROUP) == NVIC_PRIORITYGROUP_2) || \ + ((GROUP) == NVIC_PRIORITYGROUP_3) || \ + ((GROUP) == NVIC_PRIORITYGROUP_4)) + +#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00) + +/** + * @} + */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup CORTEX_Private_Macros CORTEX Private Macros + * @{ + */ + +/** @defgroup CORTEX_SysTick_clock_source_Macro_Private CORTEX SysTick clock source + * @{ + */ +#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \ + ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8)) +/** + * @} + */ + +#if (__MPU_PRESENT == 1) +#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \ + ((STATE) == MPU_REGION_DISABLE)) + +#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \ + ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE)) + +#define IS_MPU_ACCESS_SHAREABLE(STATE) (((STATE) == MPU_ACCESS_SHAREABLE) || \ + ((STATE) == MPU_ACCESS_NOT_SHAREABLE)) + +#define IS_MPU_ACCESS_CACHEABLE(STATE) (((STATE) == MPU_ACCESS_CACHEABLE) || \ + ((STATE) == MPU_ACCESS_NOT_CACHEABLE)) + +#define IS_MPU_ACCESS_BUFFERABLE(STATE) (((STATE) == MPU_ACCESS_BUFFERABLE) || \ + ((STATE) == MPU_ACCESS_NOT_BUFFERABLE)) + +#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0) || \ + ((TYPE) == MPU_TEX_LEVEL1) || \ + ((TYPE) == MPU_TEX_LEVEL2)) + +#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RW) || \ + ((TYPE) == MPU_REGION_PRIV_RW_URO) || \ + ((TYPE) == MPU_REGION_FULL_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RO) || \ + ((TYPE) == MPU_REGION_PRIV_RO_URO)) + +#define IS_MPU_REGION_NUMBER(NUMBER) (((NUMBER) == MPU_REGION_NUMBER0) || \ + ((NUMBER) == MPU_REGION_NUMBER1) || \ + ((NUMBER) == MPU_REGION_NUMBER2) || \ + ((NUMBER) == MPU_REGION_NUMBER3) || \ + ((NUMBER) == MPU_REGION_NUMBER4) || \ + ((NUMBER) == MPU_REGION_NUMBER5) || \ + ((NUMBER) == MPU_REGION_NUMBER6) || \ + ((NUMBER) == MPU_REGION_NUMBER7)) + +#define IS_MPU_REGION_SIZE(SIZE) (((SIZE) == MPU_REGION_SIZE_32B) || \ + ((SIZE) == MPU_REGION_SIZE_64B) || \ + ((SIZE) == MPU_REGION_SIZE_128B) || \ + ((SIZE) == MPU_REGION_SIZE_256B) || \ + ((SIZE) == MPU_REGION_SIZE_512B) || \ + ((SIZE) == MPU_REGION_SIZE_1KB) || \ + ((SIZE) == MPU_REGION_SIZE_2KB) || \ + ((SIZE) == MPU_REGION_SIZE_4KB) || \ + ((SIZE) == MPU_REGION_SIZE_8KB) || \ + ((SIZE) == MPU_REGION_SIZE_16KB) || \ + ((SIZE) == MPU_REGION_SIZE_32KB) || \ + ((SIZE) == MPU_REGION_SIZE_64KB) || \ + ((SIZE) == MPU_REGION_SIZE_128KB) || \ + ((SIZE) == MPU_REGION_SIZE_256KB) || \ + ((SIZE) == MPU_REGION_SIZE_512KB) || \ + ((SIZE) == MPU_REGION_SIZE_1MB) || \ + ((SIZE) == MPU_REGION_SIZE_2MB) || \ + ((SIZE) == MPU_REGION_SIZE_4MB) || \ + ((SIZE) == MPU_REGION_SIZE_8MB) || \ + ((SIZE) == MPU_REGION_SIZE_16MB) || \ + ((SIZE) == MPU_REGION_SIZE_32MB) || \ + ((SIZE) == MPU_REGION_SIZE_64MB) || \ + ((SIZE) == MPU_REGION_SIZE_128MB) || \ + ((SIZE) == MPU_REGION_SIZE_256MB) || \ + ((SIZE) == MPU_REGION_SIZE_512MB) || \ + ((SIZE) == MPU_REGION_SIZE_1GB) || \ + ((SIZE) == MPU_REGION_SIZE_2GB) || \ + ((SIZE) == MPU_REGION_SIZE_4GB)) + +#define IS_MPU_SUB_REGION_DISABLE(SUBREGION) ((SUBREGION) < (uint16_t)0x00FF) +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup CORTEX_Private_Functions CORTEX Private Functions + * @brief CORTEX private functions + * @{ + */ + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup CORTEX_Exported_Functions + * @{ + */ + +/** @addtogroup CORTEX_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup); +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); +void HAL_NVIC_SystemReset(void); +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb); +/** + * @} + */ + +/** @addtogroup CORTEX_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions ***********************************************/ +#if (__MPU_PRESENT == 1) +void HAL_MPU_Enable(uint32_t MPU_Control); +void HAL_MPU_Disable(void); +void HAL_MPU_EnableRegion(uint32_t RegionNumber); +void HAL_MPU_DisableRegion(uint32_t RegionNumber); +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init); +#endif /* __MPU_PRESENT */ +uint32_t HAL_NVIC_GetPriorityGrouping(void); +void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority); +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); +uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn); +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); +void HAL_SYSTICK_IRQHandler(void); +void HAL_SYSTICK_Callback(void); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_CORTEX_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h new file mode 100644 index 0000000..1c5828a --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_def.h @@ -0,0 +1,199 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_def.h + * @author MCD Application Team + * @brief This file contains HAL common defines, enumeration, macros and + * structures definitions. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_DEF +#define __STM32L1xx_HAL_DEF + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" +#include "Legacy/stm32_hal_legacy.h" +#include + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief HAL Status structures definition + */ +typedef enum +{ + HAL_OK = 0x00U, + HAL_ERROR = 0x01U, + HAL_BUSY = 0x02U, + HAL_TIMEOUT = 0x03U +} HAL_StatusTypeDef; + +/** + * @brief HAL Lock structures definition + */ +typedef enum +{ + HAL_UNLOCKED = 0x00U, + HAL_LOCKED = 0x01U +} HAL_LockTypeDef; + +/* Exported macro ------------------------------------------------------------*/ + +#if !defined(UNUSED) +#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */ +#endif /* UNUSED */ + +#define HAL_MAX_DELAY 0xFFFFFFFFU + +#define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT)) +#define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U) + +#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_) \ + do{ \ + (__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_); \ + (__DMA_HANDLE_).Parent = (__HANDLE__); \ + } while(0) + +/** @brief Reset the Handle's State field. + * @param __HANDLE__: specifies the Peripheral Handle. + * @note This macro can be used for the following purpose: + * - When the Handle is declared as local variable; before passing it as parameter + * to HAL_PPP_Init() for the first time, it is mandatory to use this macro + * to set to 0 the Handle's "State" field. + * Otherwise, "State" field may have any random value and the first time the function + * HAL_PPP_Init() is called, the low level hardware initialization will be missed + * (i.e. HAL_PPP_MspInit() will not be executed). + * - When there is a need to reconfigure the low level hardware: instead of calling + * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). + * In this later function, when the Handle's "State" field is set to 0, it will execute the function + * HAL_PPP_MspInit() which will reconfigure the low level hardware. + * @retval None + */ +#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U) + +#if (USE_RTOS == 1) + + /* Reserved for future use */ + #error "USE_RTOS should be 0 in the current HAL release" + +#else + #define __HAL_LOCK(__HANDLE__) \ + do{ \ + if((__HANDLE__)->Lock == HAL_LOCKED) \ + { \ + return HAL_BUSY; \ + } \ + else \ + { \ + (__HANDLE__)->Lock = HAL_LOCKED; \ + } \ + }while (0) + + #define __HAL_UNLOCK(__HANDLE__) \ + do{ \ + (__HANDLE__)->Lock = HAL_UNLOCKED; \ + }while (0) +#endif /* USE_RTOS */ + +#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __weak + #define __weak __attribute__((weak)) + #endif /* __weak */ + #ifndef __packed + #define __packed __attribute__((__packed__)) + #endif /* __packed */ +#endif /* __GNUC__ */ + + +/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ +#if defined (__GNUC__) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __ALIGN_END + #define __ALIGN_END __attribute__ ((aligned (4))) + #endif /* __ALIGN_END */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN + #endif /* __ALIGN_BEGIN */ +#else + #ifndef __ALIGN_END + #define __ALIGN_END + #endif /* __ALIGN_END */ + #ifndef __ALIGN_BEGIN + #if defined (__CC_ARM) /* ARM Compiler */ + #define __ALIGN_BEGIN __align(4) + #elif defined (__ICCARM__) /* IAR Compiler */ + #define __ALIGN_BEGIN + #endif /* __CC_ARM */ + #endif /* __ALIGN_BEGIN */ +#endif /* __GNUC__ */ + +/** + * @brief __RAM_FUNC definition + */ +#if defined ( __CC_ARM ) +/* ARM Compiler + ------------ + RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the 'Options for Target' + dialog. +*/ +#define __RAM_FUNC + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ +#define __RAM_FUNC __ramfunc + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".RamFunc")))". +*/ +#define __RAM_FUNC __attribute__((section(".RamFunc"))) + +#endif + +/** + * @brief __NOINLINE definition + */ +#if defined ( __CC_ARM ) || defined ( __GNUC__ ) +/* ARM & GNUCompiler + ---------------- +*/ +#define __NOINLINE __attribute__ ( (noinline) ) + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- +*/ +#define __NOINLINE _Pragma("optimize = no_inline") + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ___STM32L1xx_HAL_DEF */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h new file mode 100644 index 0000000..2bdb1fc --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_dma.h @@ -0,0 +1,651 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_dma.h + * @author MCD Application Team + * @brief Header file of DMA HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L1xx_HAL_DMA_H +#define STM32L1xx_HAL_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup DMA_Exported_Types DMA Exported Types + * @{ + */ + +/** + * @brief DMA Configuration Structure definition + */ +typedef struct +{ + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_Data_transfer_direction */ + + uint32_t PeriphInc; /*!< Specifies whether the Peripheral address register should be incremented or not. + This parameter can be a value of @ref DMA_Peripheral_incremented_mode */ + + uint32_t MemInc; /*!< Specifies whether the memory address register should be incremented or not. + This parameter can be a value of @ref DMA_Memory_incremented_mode */ + + uint32_t PeriphDataAlignment; /*!< Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_Peripheral_data_size */ + + uint32_t MemDataAlignment; /*!< Specifies the Memory data width. + This parameter can be a value of @ref DMA_Memory_data_size */ + + uint32_t Mode; /*!< Specifies the operation mode of the DMAy Channelx. + This parameter can be a value of @ref DMA_mode + @note The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Channel */ + + uint32_t Priority; /*!< Specifies the software priority for the DMAy Channelx. + This parameter can be a value of @ref DMA_Priority_level */ +} DMA_InitTypeDef; + +/** + * @brief HAL DMA State structures definition + */ +typedef enum +{ + HAL_DMA_STATE_RESET = 0x00U, /*!< DMA not yet initialized or disabled */ + HAL_DMA_STATE_READY = 0x01U, /*!< DMA initialized and ready for use */ + HAL_DMA_STATE_BUSY = 0x02U, /*!< DMA process is ongoing */ + HAL_DMA_STATE_TIMEOUT = 0x03U, /*!< DMA timeout state */ +}HAL_DMA_StateTypeDef; + +/** + * @brief HAL DMA Error Code structure definition + */ +typedef enum +{ + HAL_DMA_FULL_TRANSFER = 0x00U, /*!< Full transfer */ + HAL_DMA_HALF_TRANSFER = 0x01U /*!< Half Transfer */ +}HAL_DMA_LevelCompleteTypeDef; + + +/** + * @brief HAL DMA Callback ID structure definition + */ +typedef enum +{ + HAL_DMA_XFER_CPLT_CB_ID = 0x00U, /*!< Full transfer */ + HAL_DMA_XFER_HALFCPLT_CB_ID = 0x01U, /*!< Half transfer */ + HAL_DMA_XFER_ERROR_CB_ID = 0x02U, /*!< Error */ + HAL_DMA_XFER_ABORT_CB_ID = 0x03U, /*!< Abort */ + HAL_DMA_XFER_ALL_CB_ID = 0x04U /*!< All */ +}HAL_DMA_CallbackIDTypeDef; + +/** + * @brief DMA handle Structure definition + */ +typedef struct __DMA_HandleTypeDef +{ + DMA_Channel_TypeDef *Instance; /*!< Register base address */ + + DMA_InitTypeDef Init; /*!< DMA communication parameters */ + + HAL_LockTypeDef Lock; /*!< DMA locking object */ + + __IO HAL_DMA_StateTypeDef State; /*!< DMA transfer state */ + + void *Parent; /*!< Parent object state */ + + void (* XferCpltCallback)(struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer complete callback */ + + void (* XferHalfCpltCallback)(struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback */ + + void (* XferErrorCallback)(struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer error callback */ + + void (* XferAbortCallback)(struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer abort callback */ + + __IO uint32_t ErrorCode; /*!< DMA Error code */ + + DMA_TypeDef *DmaBaseAddress; /*!< DMA Channel Base Address */ + + uint32_t ChannelIndex; /*!< DMA Channel Index */ + +}DMA_HandleTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Constants DMA Exported Constants + * @{ + */ + +/** @defgroup DMA_Error_Code DMA Error Code + * @{ + */ +#define HAL_DMA_ERROR_NONE 0x00000000U /*!< No error */ +#define HAL_DMA_ERROR_TE 0x00000001U /*!< Transfer error */ +#define HAL_DMA_ERROR_NO_XFER 0x00000004U /*!< Abort requested with no Xfer ongoing */ +#define HAL_DMA_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */ +#define HAL_DMA_ERROR_NOT_SUPPORTED 0x00000100U /*!< Not supported mode */ + +/** + * @} + */ + +/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction + * @{ + */ +#define DMA_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define DMA_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define DMA_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode + * @{ + */ +#define DMA_PINC_ENABLE DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define DMA_PINC_DISABLE 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode + * @{ + */ +#define DMA_MINC_ENABLE DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define DMA_MINC_DISABLE 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size + * @{ + */ +#define DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_Memory_data_size DMA Memory data size + * @{ + */ +#define DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_mode DMA mode + * @{ + */ +#define DMA_NORMAL 0x00000000U /*!< Normal mode */ +#define DMA_CIRCULAR DMA_CCR_CIRC /*!< Circular mode */ +/** + * @} + */ + +/** @defgroup DMA_Priority_level DMA Priority level + * @{ + */ +#define DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define DMA_PRIORITY_VERY_HIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + + +/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions + * @{ + */ +#define DMA_IT_TC DMA_CCR_TCIE +#define DMA_IT_HT DMA_CCR_HTIE +#define DMA_IT_TE DMA_CCR_TEIE +/** + * @} + */ + +/** @defgroup DMA_flag_definitions DMA flag definitions + * @{ + */ +#define DMA_FLAG_GL1 DMA_ISR_GIF1 +#define DMA_FLAG_TC1 DMA_ISR_TCIF1 +#define DMA_FLAG_HT1 DMA_ISR_HTIF1 +#define DMA_FLAG_TE1 DMA_ISR_TEIF1 +#define DMA_FLAG_GL2 DMA_ISR_GIF2 +#define DMA_FLAG_TC2 DMA_ISR_TCIF2 +#define DMA_FLAG_HT2 DMA_ISR_HTIF2 +#define DMA_FLAG_TE2 DMA_ISR_TEIF2 +#define DMA_FLAG_GL3 DMA_ISR_GIF3 +#define DMA_FLAG_TC3 DMA_ISR_TCIF3 +#define DMA_FLAG_HT3 DMA_ISR_HTIF3 +#define DMA_FLAG_TE3 DMA_ISR_TEIF3 +#define DMA_FLAG_GL4 DMA_ISR_GIF4 +#define DMA_FLAG_TC4 DMA_ISR_TCIF4 +#define DMA_FLAG_HT4 DMA_ISR_HTIF4 +#define DMA_FLAG_TE4 DMA_ISR_TEIF4 +#define DMA_FLAG_GL5 DMA_ISR_GIF5 +#define DMA_FLAG_TC5 DMA_ISR_TCIF5 +#define DMA_FLAG_HT5 DMA_ISR_HTIF5 +#define DMA_FLAG_TE5 DMA_ISR_TEIF5 +#define DMA_FLAG_GL6 DMA_ISR_GIF6 +#define DMA_FLAG_TC6 DMA_ISR_TCIF6 +#define DMA_FLAG_HT6 DMA_ISR_HTIF6 +#define DMA_FLAG_TE6 DMA_ISR_TEIF6 +#define DMA_FLAG_GL7 DMA_ISR_GIF7 +#define DMA_FLAG_TC7 DMA_ISR_TCIF7 +#define DMA_FLAG_HT7 DMA_ISR_HTIF7 +#define DMA_FLAG_TE7 DMA_ISR_TEIF7 +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup DMA_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @brief Reset DMA handle state. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET) + +/** + * @brief Enable the specified DMA Channel. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CCR |= DMA_CCR_EN) + +/** + * @brief Disable the specified DMA Channel. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CCR &= ~DMA_CCR_EN) + + +/* Interrupt & Flag management */ +#if defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || \ + defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || \ + defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) + +/** + * @brief Return the current DMA Channel transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer complete flag index. + */ + +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ + DMA_FLAG_TC7) + +/** + * @brief Return the current DMA Channel half transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified half transfer complete flag index. + */ +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ + DMA_FLAG_HT7) + +/** + * @brief Return the current DMA Channel transfer error flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ + DMA_FLAG_TE7) + +/** + * @brief Return the current DMA Channel Global interrupt flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_ISR_GIF1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_ISR_GIF1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_ISR_GIF2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_ISR_GIF2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_ISR_GIF3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_ISR_GIF3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_ISR_GIF4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_ISR_GIF4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_ISR_GIF5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_ISR_GIF5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_ISR_GIF6 :\ + DMA_ISR_GIF7) + +/** + * @brief Get the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ Get the specified flag. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCx: Transfer complete flag + * @arg DMA_FLAG_HTx: Half transfer complete flag + * @arg DMA_FLAG_TEx: Transfer error flag + * @arg DMA_FLAG_GLx: Global interrupt flag + * Where x can be from 1 to 7 to select the DMA Channel x flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (((uint32_t)((__HANDLE__)->Instance) > ((uint32_t)DMA1_Channel7))? \ + (DMA2->ISR & (__FLAG__)) : (DMA1->ISR & (__FLAG__))) + +/** + * @brief Clear the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCx: Transfer complete flag + * @arg DMA_FLAG_HTx: Half transfer complete flag + * @arg DMA_FLAG_TEx: Transfer error flag + * @arg DMA_FLAG_GLx: Global interrupt flag + * Where x can be from 1 to 7 to select the DMA Channel x flag. + * @retval None + */ +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (((uint32_t)((__HANDLE__)->Instance) > ((uint32_t)DMA1_Channel7))? \ +(DMA2->IFCR = (__FLAG__)) : (DMA1->IFCR = (__FLAG__))) + +#else +/** + * @brief Return the current DMA Channel transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer complete flag index. + */ + +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ + DMA_FLAG_TC7) + +/** + * @brief Return the current DMA Channel half transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified half transfer complete flag index. + */ +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ + DMA_FLAG_HT7) + +/** + * @brief Return the current DMA Channel transfer error flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ + DMA_FLAG_TE7) + +/** + * @brief Return the current DMA Channel Global interrupt flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_ISR_GIF1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_ISR_GIF2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_ISR_GIF3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_ISR_GIF4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_ISR_GIF5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_ISR_GIF6 :\ + DMA_ISR_GIF7) + +/** + * @brief Get the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ Get the specified flag. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCIFx: Transfer complete flag + * @arg DMA_FLAG_HTIFx: Half transfer complete flag + * @arg DMA_FLAG_TEIFx: Transfer error flag + * @arg DMA_ISR_GIFx: Global interrupt flag + * Where x can be from 1 to 7 to select the DMA Channel x flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (DMA1->ISR & (__FLAG__)) + +/** + * @brief Clear the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCx: Transfer complete flag + * @arg DMA_FLAG_HTx: Half transfer complete flag + * @arg DMA_FLAG_TEx: Transfer error flag + * @arg DMA_FLAG_GLx: Global interrupt flag + * Where x can be from 1 to 7 to select the DMA Channel x flag. + * @retval None + */ +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +/** + * @brief Enable the specified DMA Channel interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval None + */ +#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CCR |= (__INTERRUPT__)) + +/** + * @brief Disable the specified DMA Channel interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval None + */ +#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CCR &= ~(__INTERRUPT__)) + +/** + * @brief Check whether the specified DMA Channel interrupt is enabled or not. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt source to check. + * This parameter can be one of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval The state of DMA_IT (SET or RESET). + */ +#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CCR & (__INTERRUPT__))) + +/** + * @brief Return the number of remaining data units in the current DMA Channel transfer. + * @param __HANDLE__ DMA handle + * @retval The number of remaining data units in the current DMA Channel transfer. + */ +#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNDTR) + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup DMA_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_DeInit (DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group2 + * @{ + */ +/* IO operation functions *****************************************************/ +HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout); +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)( DMA_HandleTypeDef * _hdma)); +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID); + +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State and Error functions ***************************************/ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma); +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DMA_Private_Macros DMA Private Macros + * @{ + */ + +#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \ + ((DIRECTION) == DMA_MEMORY_TO_PERIPH) || \ + ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) + +#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1U) && ((SIZE) < 0x10000U)) + +#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \ + ((STATE) == DMA_PINC_DISABLE)) + +#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE) || \ + ((STATE) == DMA_MINC_DISABLE)) + +#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE) || \ + ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_PDATAALIGN_WORD)) + +#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE) || \ + ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_MDATAALIGN_WORD )) + +#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL ) || \ + ((MODE) == DMA_CIRCULAR)) + +#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW ) || \ + ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \ + ((PRIORITY) == DMA_PRIORITY_HIGH) || \ + ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L1xx_HAL_DMA_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h new file mode 100644 index 0000000..69331f9 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_exti.h @@ -0,0 +1,315 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_exti.h + * @author MCD Application Team + * @brief Header file of EXTI HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2020 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L1xx_HAL_EXTI_H +#define STM32L1xx_HAL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup EXTI EXTI + * @brief EXTI HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup EXTI_Exported_Types EXTI Exported Types + * @{ + */ +typedef enum +{ + HAL_EXTI_COMMON_CB_ID = 0x00U +} EXTI_CallbackIDTypeDef; + +/** + * @brief EXTI Handle structure definition + */ +typedef struct +{ + uint32_t Line; /*!< Exti line number */ + void (* PendingCallback)(void); /*!< Exti pending callback */ +} EXTI_HandleTypeDef; + +/** + * @brief EXTI Configuration structure definition + */ +typedef struct +{ + uint32_t Line; /*!< The Exti line to be configured. This parameter + can be a value of @ref EXTI_Line */ + uint32_t Mode; /*!< The Exit Mode to be configured for a core. + This parameter can be a combination of @ref EXTI_Mode */ + uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter + can be a value of @ref EXTI_Trigger */ + uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured. + This parameter is only possible for line 0 to 15. It + can be a value of @ref EXTI_GPIOSel */ +} EXTI_ConfigTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_Line EXTI Line + * @{ + */ +#define EXTI_LINE_0 (EXTI_GPIO | 0x00u) /*!< External interrupt line 0 */ +#define EXTI_LINE_1 (EXTI_GPIO | 0x01u) /*!< External interrupt line 1 */ +#define EXTI_LINE_2 (EXTI_GPIO | 0x02u) /*!< External interrupt line 2 */ +#define EXTI_LINE_3 (EXTI_GPIO | 0x03u) /*!< External interrupt line 3 */ +#define EXTI_LINE_4 (EXTI_GPIO | 0x04u) /*!< External interrupt line 4 */ +#define EXTI_LINE_5 (EXTI_GPIO | 0x05u) /*!< External interrupt line 5 */ +#define EXTI_LINE_6 (EXTI_GPIO | 0x06u) /*!< External interrupt line 6 */ +#define EXTI_LINE_7 (EXTI_GPIO | 0x07u) /*!< External interrupt line 7 */ +#define EXTI_LINE_8 (EXTI_GPIO | 0x08u) /*!< External interrupt line 8 */ +#define EXTI_LINE_9 (EXTI_GPIO | 0x09u) /*!< External interrupt line 9 */ +#define EXTI_LINE_10 (EXTI_GPIO | 0x0Au) /*!< External interrupt line 10 */ +#define EXTI_LINE_11 (EXTI_GPIO | 0x0Bu) /*!< External interrupt line 11 */ +#define EXTI_LINE_12 (EXTI_GPIO | 0x0Cu) /*!< External interrupt line 12 */ +#define EXTI_LINE_13 (EXTI_GPIO | 0x0Du) /*!< External interrupt line 13 */ +#define EXTI_LINE_14 (EXTI_GPIO | 0x0Eu) /*!< External interrupt line 14 */ +#define EXTI_LINE_15 (EXTI_GPIO | 0x0Fu) /*!< External interrupt line 15 */ +#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */ +#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */ +#define EXTI_LINE_18 (EXTI_CONFIG | 0x12u) /*!< External interrupt line 18 Connected to the USB Device FS Wakeup from suspend event */ +#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the RTC Tamper and Time Stamp events */ +#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the RTC Wakeup event */ +#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the Comparator 1 output */ +#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the Comparator 2 output */ +#if defined(EXTI_IMR_IM23) +#define EXTI_LINE_23 (EXTI_CONFIG | 0x17u) /*!< External interrupt line 23 Connected to the channel acquisition interrupt */ +#endif /* EXTI_IMR_IM23 */ + +/** + * @} + */ + +/** @defgroup EXTI_Mode EXTI Mode + * @{ + */ +#define EXTI_MODE_NONE 0x00000000u +#define EXTI_MODE_INTERRUPT 0x00000001u +#define EXTI_MODE_EVENT 0x00000002u +/** + * @} + */ + +/** @defgroup EXTI_Trigger EXTI Trigger + * @{ + */ + +#define EXTI_TRIGGER_NONE 0x00000000u +#define EXTI_TRIGGER_RISING 0x00000001u +#define EXTI_TRIGGER_FALLING 0x00000002u +#define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) +/** + * @} + */ + +/** @defgroup EXTI_GPIOSel EXTI GPIOSel + * @brief + * @{ + */ +#define EXTI_GPIOA 0x00000000u +#define EXTI_GPIOB 0x00000001u +#define EXTI_GPIOC 0x00000002u +#define EXTI_GPIOD 0x00000003u +#if defined (GPIOE) +#define EXTI_GPIOE 0x00000004u +#endif /* GPIOE */ +#if defined (GPIOF) +#define EXTI_GPIOF 0x00000005u +#endif /* GPIOF */ +#if defined (GPIOG) +#define EXTI_GPIOG 0x00000006u +#endif /* GPIOG */ +#define EXTI_GPIOH 0x00000007u + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Private constants --------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ +/** + * @brief EXTI Line property definition + */ +#define EXTI_PROPERTY_SHIFT 24u +#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT) +#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG) +#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT) +#define EXTI_PROPERTY_MASK (EXTI_CONFIG | EXTI_GPIO) + +/** + * @brief EXTI bit usage + */ +#define EXTI_PIN_MASK 0x0000001Fu + +/** + * @brief EXTI Mask for interrupt & event mode + */ +#define EXTI_MODE_MASK (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT) + +/** + * @brief EXTI Mask for trigger possibilities + */ +#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) + +/** + * @brief EXTI Line number + */ +#if defined(EXTI_IMR_IM23) +#define EXTI_LINE_NB 24UL +#else +#define EXTI_LINE_NB 23UL +#endif /* EXTI_IMR_IM23 */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup EXTI_Private_Macros EXTI Private Macros + * @{ + */ +#define IS_EXTI_LINE(__EXTI_LINE__) ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \ + ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \ + (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \ + (((__EXTI_LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB)) + +#define IS_EXTI_MODE(__EXTI_LINE__) ((((__EXTI_LINE__) & EXTI_MODE_MASK) != 0x00u) && \ + (((__EXTI_LINE__) & ~EXTI_MODE_MASK) == 0x00u)) + +#define IS_EXTI_TRIGGER(__EXTI_LINE__) (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u) + +#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__) ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING) + +#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__) (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00u) + +#if !defined (GPIOE) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOH)) +#elif !defined (GPIOF) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOE) || \ + ((__PORT__) == EXTI_GPIOH)) +#else +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOE) || \ + ((__PORT__) == EXTI_GPIOF) || \ + ((__PORT__) == EXTI_GPIOG) || \ + ((__PORT__) == EXTI_GPIOH)) +#endif /* GPIOE */ + +#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U) +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Functions EXTI Exported Functions + * @brief EXTI Exported Functions + * @{ + */ + +/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions + * @brief Configuration functions + * @{ + */ +/* Configuration functions ****************************************************/ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti); +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)); +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine); +/** + * @} + */ + +/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * @{ + */ +/* IO operation functions *****************************************************/ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti); +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32l1xx_HAL_EXTI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h new file mode 100644 index 0000000..511d469 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash.h @@ -0,0 +1,411 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash.h + * @author MCD Application Team + * @brief Header file of Flash HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_FLASH_H +#define __STM32L1xx_HAL_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/** @addtogroup FLASH_Private_Constants + * @{ + */ +#define FLASH_TIMEOUT_VALUE (50000U) /* 50 s */ +/** + * @} + */ + +/** @addtogroup FLASH_Private_Macros + * @{ + */ + +#define IS_FLASH_TYPEPROGRAM(_VALUE_) ((_VALUE_) == FLASH_TYPEPROGRAM_WORD) + +#define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \ + ((__LATENCY__) == FLASH_LATENCY_1)) + +/** + * @} + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Types FLASH Exported Types + * @{ + */ + +/** + * @brief FLASH Procedure structure definition + */ +typedef enum +{ + FLASH_PROC_NONE = 0U, + FLASH_PROC_PAGEERASE = 1U, + FLASH_PROC_PROGRAM = 2U, +} FLASH_ProcedureTypeDef; + +/** + * @brief FLASH handle Structure definition + */ +typedef struct +{ + __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*!< Internal variable to indicate which procedure is ongoing or not in IT context */ + + __IO uint32_t NbPagesToErase; /*!< Internal variable to save the remaining sectors to erase in IT context*/ + + __IO uint32_t Address; /*!< Internal variable to save address selected for program or erase */ + + __IO uint32_t Page; /*!< Internal variable to define the current page which is erasing */ + + HAL_LockTypeDef Lock; /*!< FLASH locking object */ + + __IO uint32_t ErrorCode; /*!< FLASH error code + This parameter can be a value of @ref FLASH_Error_Codes */ +} FLASH_ProcessTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Constants FLASH Exported Constants + * @{ + */ + +/** @defgroup FLASH_Error_Codes FLASH Error Codes + * @{ + */ + +#define HAL_FLASH_ERROR_NONE 0x00U /*!< No error */ +#define HAL_FLASH_ERROR_PGA 0x01U /*!< Programming alignment error */ +#define HAL_FLASH_ERROR_WRP 0x02U /*!< Write protection error */ +#define HAL_FLASH_ERROR_OPTV 0x04U /*!< Option validity error */ +#define HAL_FLASH_ERROR_SIZE 0x08U /*!< */ +#define HAL_FLASH_ERROR_RD 0x10U /*!< Read protected error */ +#define HAL_FLASH_ERROR_OPTVUSR 0x20U /*!< Option UserValidity Error. */ +#define HAL_FLASH_ERROR_OPERATION 0x40U /*!< Not used */ + +/** + * @} + */ + +/** @defgroup FLASH_Page_Size FLASH size information + * @{ + */ + +#if defined (FLASH_CUT1) || defined (FLASH_CUT2) +#define FLASH_SIZE_RAW (uint32_t)(*((uint32_t *)FLASHSIZE_BASE)&0xFFU) +#else /*FLASH_CUT3 || FLASH_CUT4 || FLASH_CUT5 || FLASH_CUT6*/ +#define FLASH_SIZE_RAW (uint32_t)(*((uint32_t *)FLASHSIZE_BASE)&0xFFFFU) +#endif +#define FLASH_SIZE (((FLASH_SIZE_RAW) == 0 ? 384 : ((FLASH_SIZE_RAW) == 1 ? 256 : (FLASH_SIZE_RAW))) * 1024) +#define FLASH_PAGE_SIZE (256U) /*!< FLASH Page Size in bytes */ + +/** + * @} + */ + +/** @defgroup FLASH_Type_Program FLASH Type Program + * @{ + */ +#define FLASH_TYPEPROGRAM_WORD (0x02U) /*!PECR), (__INTERRUPT__)) + +/** + * @brief Disable the specified FLASH interrupt. + * @param __INTERRUPT__ FLASH interrupt + * This parameter can be any combination of the following values: + * @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt + * @arg @ref FLASH_IT_ERR Error Interrupt + * @retval none + */ +#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) CLEAR_BIT((FLASH->PECR), (uint32_t)(__INTERRUPT__)) + +/** + * @brief Get the specified FLASH flag status. + * @param __FLAG__ specifies the FLASH flag to check. + * This parameter can be one of the following values: + * @arg @ref FLASH_FLAG_BSY FLASH Busy flag + * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag + * @arg @ref FLASH_FLAG_ENDHV FLASH End of High Voltage flag + * @arg @ref FLASH_FLAG_READY FLASH Ready flag after low power mode + * @arg @ref FLASH_FLAG_PGAERR FLASH Programming Alignment error flag + * @arg @ref FLASH_FLAG_SIZERR FLASH Size error flag + * @arg @ref FLASH_FLAG_OPTVERR FLASH Option validity error error flag +@if STM32L100xB +@elif STM32L100xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L151xB +@elif STM32L151xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L152xB +@elif STM32L152xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L100xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L151xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L152xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L162xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@else + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@endif + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag + * @retval The new state of __FLAG__ (SET or RESET). + */ +#define __HAL_FLASH_GET_FLAG(__FLAG__) (((FLASH->SR) & (__FLAG__)) == (__FLAG__)) + +/** + * @brief Clear the specified FLASH flag. + * @param __FLAG__ specifies the FLASH flags to clear. + * This parameter can be any combination of the following values: + * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag + * @arg @ref FLASH_FLAG_PGAERR FLASH Programming Alignment error flag + * @arg @ref FLASH_FLAG_SIZERR FLASH Size error flag + * @arg @ref FLASH_FLAG_OPTVERR FLASH Option validity error error flag +@if STM32L100xB +@elif STM32L100xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L151xB +@elif STM32L151xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L152xB +@elif STM32L152xBA + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) +@elif STM32L100xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L151xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L152xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@elif STM32L162xC + * @arg @ref FLASH_FLAG_RDERR FLASH Read Protection error flag (PCROP) + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@else + * @arg @ref FLASH_FLAG_OPTVERRUSR FLASH Option User validity error +@endif + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag + * @retval none + */ +#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) ((FLASH->SR) = (__FLAG__)) + +/** + * @} + */ + +/** + * @} + */ + +/* Include FLASH HAL Extended module */ +#include "stm32l1xx_hal_flash_ex.h" +#include "stm32l1xx_hal_flash_ramfunc.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup FLASH_Exported_Functions + * @{ + */ + +/** @addtogroup FLASH_Exported_Functions_Group1 + * @{ + */ +/* IO operation functions *****************************************************/ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data); +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data); + +/* FLASH IRQ handler function */ +void HAL_FLASH_IRQHandler(void); +/* Callbacks in non blocking modes */ +void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue); +void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue); + +/** + * @} + */ + +/** @addtogroup FLASH_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions ***********************************************/ +HAL_StatusTypeDef HAL_FLASH_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_Lock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void); + +/** + * @} + */ + +/** @addtogroup FLASH_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State and Error functions ***************************************/ +uint32_t HAL_FLASH_GetError(void); + +/** + * @} + */ + +/** + * @} + */ + +/* Private function -------------------------------------------------*/ +/** @addtogroup FLASH_Private_Functions + * @{ + */ +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_FLASH_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h new file mode 100644 index 0000000..24c4e3b --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ex.h @@ -0,0 +1,965 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash_ex.h + * @author MCD Application Team + * @brief Header file of Flash HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_FLASH_EX_H +#define __STM32L1xx_HAL_FLASH_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASHEx + * @{ + */ + +/** @addtogroup FLASHEx_Private_Constants + * @{ + */ +#if defined(FLASH_SR_RDERR) && defined(FLASH_SR_OPTVERRUSR) + +#define FLASH_FLAG_MASK ( FLASH_FLAG_EOP | FLASH_FLAG_ENDHV | FLASH_FLAG_WRPERR | \ + FLASH_FLAG_OPTVERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | \ + FLASH_FLAG_OPTVERRUSR | FLASH_FLAG_RDERR) + +#elif defined(FLASH_SR_RDERR) + +#define FLASH_FLAG_MASK ( FLASH_FLAG_EOP | FLASH_FLAG_ENDHV | FLASH_FLAG_WRPERR | \ + FLASH_FLAG_OPTVERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | \ + FLASH_FLAG_RDERR) + +#elif defined(FLASH_SR_OPTVERRUSR) + +#define FLASH_FLAG_MASK ( FLASH_FLAG_EOP | FLASH_FLAG_ENDHV | FLASH_FLAG_WRPERR | \ + FLASH_FLAG_OPTVERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | \ + FLASH_FLAG_OPTVERRUSR) + +#else + +#define FLASH_FLAG_MASK ( FLASH_FLAG_EOP | FLASH_FLAG_ENDHV | FLASH_FLAG_WRPERR | \ + FLASH_FLAG_OPTVERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR) + +#endif /* FLASH_SR_RDERR & FLASH_SR_OPTVERRUSR */ + +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L100xBA) \ + || defined(STM32L151xBA) || defined(STM32L152xBA) + +/******* Devices with FLASH 128K *******/ +#define FLASH_NBPAGES_MAX 512U /* 512 pages from page 0 to page 511U */ + +#elif defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L152xCA) || defined(STM32L162xCA) + +/******* Devices with FLASH 256K *******/ +#define FLASH_NBPAGES_MAX 1024U /* 1024 pages from page 0 to page 1023U */ + +#elif defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) + +/******* Devices with FLASH 384K *******/ +#define FLASH_NBPAGES_MAX 1536U /* 1536 pages from page 0 to page 1535U */ + +#elif defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) + +/******* Devices with FLASH 512K *******/ +#define FLASH_NBPAGES_MAX 2048U /* 2048 pages from page 0 to page 2047U */ + +#endif /* STM32L100xB || STM32L151xB || STM32L152xB || STM32L100xBA || STM32L151xBA || STM32L152xBA */ + +#define WRP_MASK_LOW (0x0000FFFFU) +#define WRP_MASK_HIGH (0xFFFF0000U) + +/** + * @} + */ + +/** @addtogroup FLASHEx_Private_Macros + * @{ + */ + +#define IS_FLASH_TYPEERASE(__VALUE__) (((__VALUE__) == FLASH_TYPEERASE_PAGES)) + +#define IS_OPTIONBYTE(__VALUE__) (((__VALUE__) <= (OPTIONBYTE_WRP|OPTIONBYTE_RDP|OPTIONBYTE_USER|OPTIONBYTE_BOR))) + +#define IS_WRPSTATE(__VALUE__) (((__VALUE__) == OB_WRPSTATE_DISABLE) || \ + ((__VALUE__) == OB_WRPSTATE_ENABLE)) + +#define IS_OB_WRP(__PAGE__) (((__PAGE__) != 0x0000000U)) + +#define IS_OB_RDP(__LEVEL__) (((__LEVEL__) == OB_RDP_LEVEL_0) ||\ + ((__LEVEL__) == OB_RDP_LEVEL_1) ||\ + ((__LEVEL__) == OB_RDP_LEVEL_2)) + +#define IS_OB_BOR_LEVEL(__LEVEL__) (((__LEVEL__) == OB_BOR_OFF) || \ + ((__LEVEL__) == OB_BOR_LEVEL1) || \ + ((__LEVEL__) == OB_BOR_LEVEL2) || \ + ((__LEVEL__) == OB_BOR_LEVEL3) || \ + ((__LEVEL__) == OB_BOR_LEVEL4) || \ + ((__LEVEL__) == OB_BOR_LEVEL5)) + +#define IS_OB_IWDG_SOURCE(__SOURCE__) (((__SOURCE__) == OB_IWDG_SW) || ((__SOURCE__) == OB_IWDG_HW)) + +#define IS_OB_STOP_SOURCE(__SOURCE__) (((__SOURCE__) == OB_STOP_NORST) || ((__SOURCE__) == OB_STOP_RST)) + +#define IS_OB_STDBY_SOURCE(__SOURCE__) (((__SOURCE__) == OB_STDBY_NORST) || ((__SOURCE__) == OB_STDBY_RST)) + +#if defined(FLASH_OBR_SPRMOD) && defined(FLASH_OBR_nRST_BFB2) + +#define IS_OBEX(__VALUE__) (((__VALUE__) == OPTIONBYTE_PCROP) || ((__VALUE__) == OPTIONBYTE_BOOTCONFIG)) + +#elif defined(FLASH_OBR_SPRMOD) && !defined(FLASH_OBR_nRST_BFB2) + +#define IS_OBEX(__VALUE__) ((__VALUE__) == OPTIONBYTE_PCROP) + +#elif !defined(FLASH_OBR_SPRMOD) && defined(FLASH_OBR_nRST_BFB2) + +#define IS_OBEX(__VALUE__) ((__VALUE__) == OPTIONBYTE_BOOTCONFIG) + +#endif /* FLASH_OBR_SPRMOD && FLASH_OBR_nRST_BFB2 */ + +#if defined(FLASH_OBR_SPRMOD) + +#define IS_PCROPSTATE(__VALUE__) (((__VALUE__) == OB_PCROP_STATE_DISABLE) || \ + ((__VALUE__) == OB_PCROP_STATE_ENABLE)) + +#define IS_OB_PCROP(__PAGE__) (((__PAGE__) != 0x0000000U)) +#endif /* FLASH_OBR_SPRMOD */ + +#if defined(FLASH_OBR_nRST_BFB2) + +#define IS_OB_BOOT_BANK(__BANK__) (((__BANK__) == OB_BOOT_BANK2) || ((__BANK__) == OB_BOOT_BANK1)) + +#endif /* FLASH_OBR_nRST_BFB2 */ + +#define IS_TYPEERASEDATA(__VALUE__) (((__VALUE__) == FLASH_TYPEERASEDATA_BYTE) || \ + ((__VALUE__) == FLASH_TYPEERASEDATA_HALFWORD) || \ + ((__VALUE__) == FLASH_TYPEERASEDATA_WORD)) +#define IS_TYPEPROGRAMDATA(__VALUE__) (((__VALUE__) == FLASH_TYPEPROGRAMDATA_BYTE) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_HALFWORD) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_WORD) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_FASTBYTE) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_FASTHALFWORD) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_FASTWORD)) + + +/** @defgroup FLASHEx_Address FLASHEx Address + * @{ + */ + +#define IS_FLASH_DATA_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_EEPROM_BASE) && ((__ADDRESS__) <= FLASH_EEPROM_END)) + +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L100xBA) \ + || defined(STM32L151xBA) || defined(STM32L152xBA) || defined(STM32L100xC) || defined(STM32L151xC) \ + || defined(STM32L152xC) || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L152xCA) \ + || defined(STM32L162xCA) + +#define IS_FLASH_PROGRAM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) <= FLASH_END)) + +#else /*STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ + +#define IS_FLASH_PROGRAM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) <= FLASH_BANK2_END)) +#define IS_FLASH_PROGRAM_BANK1_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) <= FLASH_BANK1_END)) +#define IS_FLASH_PROGRAM_BANK2_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BANK2_BASE) && ((__ADDRESS__) <= FLASH_BANK2_END)) + +#endif /* STM32L100xB || STM32L151xB || STM32L152xB || (...) || STM32L151xCA || STM32L152xCA || STM32L162xCA */ + +#define IS_NBPAGES(__PAGES__) (((__PAGES__) >= 1U) && ((__PAGES__) <= FLASH_NBPAGES_MAX)) + +/** + * @} + */ + +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup FLASHEx_Exported_Types FLASHEx Exported Types + * @{ + */ + +/** + * @brief FLASH Erase structure definition + */ +typedef struct +{ + uint32_t TypeErase; /*!< TypeErase: Page Erase only. + This parameter can be a value of @ref FLASHEx_Type_Erase */ + + uint32_t PageAddress; /*!< PageAddress: Initial FLASH address to be erased + This parameter must be a value belonging to FLASH Program address (depending on the devices) */ + + uint32_t NbPages; /*!< NbPages: Number of pages to be erased. + This parameter must be a value between 1 and (max number of pages - value of Initial page)*/ + +} FLASH_EraseInitTypeDef; + +/** + * @brief FLASH Option Bytes PROGRAM structure definition + */ +typedef struct +{ + uint32_t OptionType; /*!< OptionType: Option byte to be configured. + This parameter can be a value of @ref FLASHEx_Option_Type */ + + uint32_t WRPState; /*!< WRPState: Write protection activation or deactivation. + This parameter can be a value of @ref FLASHEx_WRP_State */ + + uint32_t WRPSector0To31; /*!< WRPSector0To31: specifies the sector(s) which are write protected between Sector 0 to 31 + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection1 */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xCA) \ + || defined(STM32L152xD) || defined(STM32L152xDX) || defined(STM32L162xCA) || defined(STM32L162xD) \ + || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) + uint32_t WRPSector32To63; /*!< WRPSector32To63: specifies the sector(s) which are write protected between Sector 32 to 63 + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection2 */ +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || (...) || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) \ + || defined(STM32L162xE) + uint32_t WRPSector64To95; /*!< WRPSector64to95: specifies the sector(s) which are write protected between Sector 64 to 95 + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection3 */ +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) + uint32_t WRPSector96To127; /*!< WRPSector96To127: specifies the sector(s) which are write protected between Sector 96 to 127 or + Sectors 96 to 111 for STM32L1xxxDX devices. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection4 */ +#endif /* STM32L151xE || STM32L152xE || STM32L162xE || STM32L151xDX || ... */ + + uint8_t RDPLevel; /*!< RDPLevel: Set the read protection level. + This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */ + + uint8_t BORLevel; /*!< BORLevel: Set the BOR Level. + This parameter can be a value of @ref FLASHEx_Option_Bytes_BOR_Level */ + + uint8_t USERConfig; /*!< USERConfig: Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_IWatchdog, + @ref FLASHEx_Option_Bytes_nRST_STOP and @ref FLASHEx_Option_Bytes_nRST_STDBY*/ +} FLASH_OBProgramInitTypeDef; + +#if defined(FLASH_OBR_SPRMOD) || defined(FLASH_OBR_nRST_BFB2) +/** + * @brief FLASH Advanced Option Bytes Program structure definition + */ +typedef struct +{ + uint32_t OptionType; /*!< OptionType: Option byte to be configured for extension . + This parameter can be a value of @ref FLASHEx_OptionAdv_Type */ + +#if defined(FLASH_OBR_SPRMOD) + uint32_t PCROPState; /*!< PCROPState: PCROP activation or deactivation. + This parameter can be a value of @ref FLASHEx_PCROP_State */ + + uint32_t PCROPSector0To31; /*!< PCROPSector0To31: specifies the sector(s) set for PCROP + This parameter can be a value of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection1 */ + +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) + uint32_t PCROPSector32To63; /*!< PCROPSector32To63: specifies the sector(s) set for PCROP + This parameter can be a value of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection2 */ +#endif /* STM32L151xC || STM32L152xC || STM32L162xC */ +#endif /* FLASH_OBR_SPRMOD */ + +#if defined(FLASH_OBR_nRST_BFB2) + uint16_t BootConfig; /*!< BootConfig: specifies Option bytes for boot config + This parameter can be a value of @ref FLASHEx_Option_Bytes_BOOT */ +#endif /* FLASH_OBR_nRST_BFB2*/ +} FLASH_AdvOBProgramInitTypeDef; + +/** + * @} + */ +#endif /* FLASH_OBR_SPRMOD || FLASH_OBR_nRST_BFB2 */ + +/* Exported constants --------------------------------------------------------*/ + + +/** @defgroup FLASHEx_Exported_Constants FLASHEx Exported Constants + * @{ + */ + +/** @defgroup FLASHEx_Type_Erase FLASHEx_Type_Erase + * @{ + */ +#define FLASH_TYPEERASE_PAGES (0x00U) /*!= 256KB*/ +#define OB_WRP3_PAGES1024TO1039 (0x00000001U) /* Write protection of Sector64 */ +#define OB_WRP3_PAGES1040TO1055 (0x00000002U) /* Write protection of Sector65 */ +#define OB_WRP3_PAGES1056TO1071 (0x00000004U) /* Write protection of Sector66 */ +#define OB_WRP3_PAGES1072TO1087 (0x00000008U) /* Write protection of Sector67 */ +#define OB_WRP3_PAGES1088TO1103 (0x00000010U) /* Write protection of Sector68 */ +#define OB_WRP3_PAGES1104TO1119 (0x00000020U) /* Write protection of Sector69 */ +#define OB_WRP3_PAGES1120TO1135 (0x00000040U) /* Write protection of Sector70 */ +#define OB_WRP3_PAGES1136TO1151 (0x00000080U) /* Write protection of Sector71 */ +#define OB_WRP3_PAGES1152TO1167 (0x00000100U) /* Write protection of Sector72 */ +#define OB_WRP3_PAGES1168TO1183 (0x00000200U) /* Write protection of Sector73 */ +#define OB_WRP3_PAGES1184TO1199 (0x00000400U) /* Write protection of Sector74 */ +#define OB_WRP3_PAGES1200TO1215 (0x00000800U) /* Write protection of Sector75 */ +#define OB_WRP3_PAGES1216TO1231 (0x00001000U) /* Write protection of Sector76 */ +#define OB_WRP3_PAGES1232TO1247 (0x00002000U) /* Write protection of Sector77 */ +#define OB_WRP3_PAGES1248TO1263 (0x00004000U) /* Write protection of Sector78 */ +#define OB_WRP3_PAGES1264TO1279 (0x00008000U) /* Write protection of Sector79 */ +#define OB_WRP3_PAGES1280TO1295 (0x00010000U) /* Write protection of Sector80 */ +#define OB_WRP3_PAGES1296TO1311 (0x00020000U) /* Write protection of Sector81 */ +#define OB_WRP3_PAGES1312TO1327 (0x00040000U) /* Write protection of Sector82 */ +#define OB_WRP3_PAGES1328TO1343 (0x00080000U) /* Write protection of Sector83 */ +#define OB_WRP3_PAGES1344TO1359 (0x00100000U) /* Write protection of Sector84 */ +#define OB_WRP3_PAGES1360TO1375 (0x00200000U) /* Write protection of Sector85 */ +#define OB_WRP3_PAGES1376TO1391 (0x00400000U) /* Write protection of Sector86 */ +#define OB_WRP3_PAGES1392TO1407 (0x00800000U) /* Write protection of Sector87 */ +#define OB_WRP3_PAGES1408TO1423 (0x01000000U) /* Write protection of Sector88 */ +#define OB_WRP3_PAGES1424TO1439 (0x02000000U) /* Write protection of Sector89 */ +#define OB_WRP3_PAGES1440TO1455 (0x04000000U) /* Write protection of Sector90 */ +#define OB_WRP3_PAGES1456TO1471 (0x08000000U) /* Write protection of Sector91 */ +#define OB_WRP3_PAGES1472TO1487 (0x10000000U) /* Write protection of Sector92 */ +#define OB_WRP3_PAGES1488TO1503 (0x20000000U) /* Write protection of Sector93 */ +#define OB_WRP3_PAGES1504TO1519 (0x40000000U) /* Write protection of Sector94 */ +#define OB_WRP3_PAGES1520TO1535 (0x80000000U) /* Write protection of Sector95 */ + +#define OB_WRP3_ALLPAGES ((uint32_t)FLASH_WRPR3_WRP) /*!< Write protection of all Sectors */ + +/** + * @} + */ + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE*/ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) + +/** @defgroup FLASHEx_Option_Bytes_Write_Protection4 FLASHEx Option Bytes Write Protection4 + * @{ + */ + +/* Pages for Cat5 devices*/ +#define OB_WRP4_PAGES1536TO1551 (0x00000001U)/* Write protection of Sector96*/ +#define OB_WRP4_PAGES1552TO1567 (0x00000002U)/* Write protection of Sector97*/ +#define OB_WRP4_PAGES1568TO1583 (0x00000004U)/* Write protection of Sector98*/ +#define OB_WRP4_PAGES1584TO1599 (0x00000008U)/* Write protection of Sector99*/ +#define OB_WRP4_PAGES1600TO1615 (0x00000010U) /* Write protection of Sector100*/ +#define OB_WRP4_PAGES1616TO1631 (0x00000020U) /* Write protection of Sector101*/ +#define OB_WRP4_PAGES1632TO1647 (0x00000040U) /* Write protection of Sector102*/ +#define OB_WRP4_PAGES1648TO1663 (0x00000080U) /* Write protection of Sector103*/ +#define OB_WRP4_PAGES1664TO1679 (0x00000100U) /* Write protection of Sector104*/ +#define OB_WRP4_PAGES1680TO1695 (0x00000200U) /* Write protection of Sector105*/ +#define OB_WRP4_PAGES1696TO1711 (0x00000400U) /* Write protection of Sector106*/ +#define OB_WRP4_PAGES1712TO1727 (0x00000800U) /* Write protection of Sector107*/ +#define OB_WRP4_PAGES1728TO1743 (0x00001000U) /* Write protection of Sector108*/ +#define OB_WRP4_PAGES1744TO1759 (0x00002000U) /* Write protection of Sector109*/ +#define OB_WRP4_PAGES1760TO1775 (0x00004000U) /* Write protection of Sector110*/ +#define OB_WRP4_PAGES1776TO1791 (0x00008000U) /* Write protection of Sector111*/ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) + +#define OB_WRP4_PAGES1792TO1807 (0x00010000U) /* Write protection of Sector112*/ +#define OB_WRP4_PAGES1808TO1823 (0x00020000U) /* Write protection of Sector113*/ +#define OB_WRP4_PAGES1824TO1839 (0x00040000U) /* Write protection of Sector114*/ +#define OB_WRP4_PAGES1840TO1855 (0x00080000U) /* Write protection of Sector115*/ +#define OB_WRP4_PAGES1856TO1871 (0x00100000U) /* Write protection of Sector116*/ +#define OB_WRP4_PAGES1872TO1887 (0x00200000U) /* Write protection of Sector117*/ +#define OB_WRP4_PAGES1888TO1903 (0x00400000U) /* Write protection of Sector118*/ +#define OB_WRP4_PAGES1904TO1919 (0x00800000U) /* Write protection of Sector119*/ +#define OB_WRP4_PAGES1920TO1935 (0x01000000U) /* Write protection of Sector120*/ +#define OB_WRP4_PAGES1936TO1951 (0x02000000U) /* Write protection of Sector121*/ +#define OB_WRP4_PAGES1952TO1967 (0x04000000U) /* Write protection of Sector122*/ +#define OB_WRP4_PAGES1968TO1983 (0x08000000U) /* Write protection of Sector123*/ +#define OB_WRP4_PAGES1984TO1999 (0x10000000U) /* Write protection of Sector124*/ +#define OB_WRP4_PAGES2000TO2015 (0x20000000U) /* Write protection of Sector125*/ +#define OB_WRP4_PAGES2016TO2031 (0x40000000U) /* Write protection of Sector126*/ +#define OB_WRP4_PAGES2032TO2047 (0x80000000U) /* Write protection of Sector127*/ + +#endif /* STM32L151xE || STM32L152xE || STM32L162xE */ + +#define OB_WRP4_ALLPAGES ((uint32_t)FLASH_WRPR4_WRP) /*!< Write protection of all Sectors */ + +/** + * @} + */ + +#endif /* STM32L151xE || STM32L152xE || STM32L162xE || STM32L151xDX || ... */ + +/** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASHEx Option Bytes Read Protection + * @{ + */ +#define OB_RDP_LEVEL_0 ((uint8_t)0xAAU) +#define OB_RDP_LEVEL_1 ((uint8_t)0xBBU) +#define OB_RDP_LEVEL_2 ((uint8_t)0xCCU) /* Warning: When enabling read protection level 2 + it is no more possible to go back to level 1 or 0 */ + +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_BOR_Level FLASHEx Option Bytes BOR Level + * @{ + */ + +#define OB_BOR_OFF ((uint8_t)0x00U) /*!< BOR is disabled at power down, the reset is asserted when the VDD + power supply reaches the PDR(Power Down Reset) threshold (1.5V) */ +#define OB_BOR_LEVEL1 ((uint8_t)0x08U) /*!< BOR Reset threshold levels for 1.7V - 1.8V VDD power supply */ +#define OB_BOR_LEVEL2 ((uint8_t)0x09U) /*!< BOR Reset threshold levels for 1.9V - 2.0V VDD power supply */ +#define OB_BOR_LEVEL3 ((uint8_t)0x0AU) /*!< BOR Reset threshold levels for 2.3V - 2.4V VDD power supply */ +#define OB_BOR_LEVEL4 ((uint8_t)0x0BU) /*!< BOR Reset threshold levels for 2.55V - 2.65V VDD power supply */ +#define OB_BOR_LEVEL5 ((uint8_t)0x0CU) /*!< BOR Reset threshold levels for 2.8V - 2.9V VDD power supply */ + +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASHEx Option Bytes IWatchdog + * @{ + */ + +#define OB_IWDG_SW ((uint8_t)0x10U) /*!< Software WDG selected */ +#define OB_IWDG_HW ((uint8_t)0x00U) /*!< Hardware WDG selected */ + +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASHEx Option Bytes nRST_STOP + * @{ + */ + +#define OB_STOP_NORST ((uint8_t)0x20U) /*!< No reset generated when entering in STOP */ +#define OB_STOP_RST ((uint8_t)0x00U) /*!< Reset generated when entering in STOP */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASHEx Option Bytes nRST_STDBY + * @{ + */ + +#define OB_STDBY_NORST ((uint8_t)0x40U) /*!< No reset generated when entering in STANDBY */ +#define OB_STDBY_RST ((uint8_t)0x00U) /*!< Reset generated when entering in STANDBY */ + +/** + * @} + */ + +#if defined(FLASH_OBR_SPRMOD) + +/** @defgroup FLASHEx_OptionAdv_Type FLASHEx Option Advanced Type + * @{ + */ + +#define OPTIONBYTE_PCROP (0x01U) /*!> 16U)) /*!< At startup, if boot pins are set in boot from user Flash position + and this parameter is selected the device will boot from Bank1(Default) */ + +/** + * @} + */ +#endif /* FLASH_OBR_nRST_BFB2 */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @defgroup FLASHEx_Exported_Macros FLASHEx Exported Macros + * @{ + */ + +/** + * @brief Set the FLASH Latency. + * @param __LATENCY__ FLASH Latency + * This parameter can be one of the following values: + * @arg @ref FLASH_LATENCY_0 FLASH Zero Latency cycle + * @arg @ref FLASH_LATENCY_1 FLASH One Latency cycle + * @retval none + */ +#define __HAL_FLASH_SET_LATENCY(__LATENCY__) do { \ + if ((__LATENCY__) == FLASH_LATENCY_1) {__HAL_FLASH_ACC64_ENABLE();} \ + MODIFY_REG((FLASH->ACR), FLASH_ACR_LATENCY, (__LATENCY__)); \ + } while(0U) + +/** + * @brief Get the FLASH Latency. + * @retval FLASH Latency + * This parameter can be one of the following values: + * @arg @ref FLASH_LATENCY_0 FLASH Zero Latency cycle + * @arg @ref FLASH_LATENCY_1 FLASH One Latency cycle + */ +#define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)) + +/** + * @brief Enable the FLASH 64-bit access. + * @note Read access 64 bit is used. + * @note This bit cannot be written at the same time as the LATENCY and + * PRFTEN bits. + * @retval none + */ +#define __HAL_FLASH_ACC64_ENABLE() (SET_BIT((FLASH->ACR), FLASH_ACR_ACC64)) + + /** + * @brief Disable the FLASH 64-bit access. + * @note Read access 32 bit is used + * @note To reset this bit, the LATENCY should be zero wait state and the + * prefetch off. + * @retval none + */ +#define __HAL_FLASH_ACC64_DISABLE() (CLEAR_BIT((FLASH->ACR), FLASH_ACR_ACC64)) + +/** + * @brief Enable the FLASH prefetch buffer. + * @retval none + */ +#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() do { __HAL_FLASH_ACC64_ENABLE(); \ + SET_BIT((FLASH->ACR), FLASH_ACR_PRFTEN); \ + } while(0U) + +/** + * @brief Disable the FLASH prefetch buffer. + * @retval none + */ +#define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() CLEAR_BIT((FLASH->ACR), FLASH_ACR_PRFTEN) + +/** + * @brief Enable the FLASH power down during Sleep mode + * @retval none + */ +#define __HAL_FLASH_SLEEP_POWERDOWN_ENABLE() SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD) + +/** + * @brief Disable the FLASH power down during Sleep mode + * @retval none + */ +#define __HAL_FLASH_SLEEP_POWERDOWN_DISABLE() CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD) + +/** + * @brief Enable the Flash Run power down mode. + * @note Writing this bit to 0 this bit, automatically the keys are + * loss and a new unlock sequence is necessary to re-write it to 1. + */ +#define __HAL_FLASH_POWER_DOWN_ENABLE() do { FLASH->PDKEYR = FLASH_PDKEY1; \ + FLASH->PDKEYR = FLASH_PDKEY2; \ + SET_BIT((FLASH->ACR), FLASH_ACR_RUN_PD); \ + } while (0U) + +/** + * @brief Disable the Flash Run power down mode. + * @note Writing this bit to 0 this bit, automatically the keys are + * loss and a new unlock sequence is necessary to re-write it to 1. + */ +#define __HAL_FLASH_POWER_DOWN_DISABLE() do { FLASH->PDKEYR = FLASH_PDKEY1; \ + FLASH->PDKEYR = FLASH_PDKEY2; \ + CLEAR_BIT((FLASH->ACR), FLASH_ACR_RUN_PD); \ + } while (0U) + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup FLASHEx_Exported_Functions + * @{ + */ + +/** @addtogroup FLASHEx_Exported_Functions_Group1 + * @{ + */ + +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError); +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit); + +/** + * @} + */ + +/** @addtogroup FLASHEx_Exported_Functions_Group2 + * @{ + */ + +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit); + +#if defined(FLASH_OBR_SPRMOD) || defined(FLASH_OBR_nRST_BFB2) + +HAL_StatusTypeDef HAL_FLASHEx_AdvOBProgram (FLASH_AdvOBProgramInitTypeDef *pAdvOBInit); +void HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit); + +#endif /* FLASH_OBR_SPRMOD || FLASH_OBR_nRST_BFB2 */ + +#if defined(FLASH_OBR_SPRMOD) + +HAL_StatusTypeDef HAL_FLASHEx_OB_SelectPCROP(void); +HAL_StatusTypeDef HAL_FLASHEx_OB_DeSelectPCROP(void); + +#endif /* FLASH_OBR_SPRMOD */ + +/** + * @} + */ + +/** @addtogroup FLASHEx_Exported_Functions_Group3 + * @{ + */ + +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Unlock(void); +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Lock(void); + +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Erase(uint32_t TypeErase, uint32_t Address); +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data); +void HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram(void); +void HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_FLASH_EX_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h new file mode 100644 index 0000000..86e31fc --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_flash_ramfunc.h @@ -0,0 +1,116 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash_ramfunc.h + * @author MCD Application Team + * @brief Header file of FLASH RAMFUNC driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_FLASH_RAMFUNC_H +#define __STM32L1xx_FLASH_RAMFUNC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASH_RAMFUNC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup FLASH_RAMFUNC_Exported_Functions + * @{ + */ + +/* + * @brief FLASH memory functions that should be executed from internal SRAM. + * These functions are defined inside the "stm32l1xx_hal_flash_ramfunc.c" + * file. + */ + +/** @addtogroup FLASH_RAMFUNC_Exported_Functions_Group1 + * @{ + */ + +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_EnableRunPowerDown(void); +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DisableRunPowerDown(void); + +/** + * @} + */ + +/** @addtogroup FLASH_RAMFUNC_Exported_Functions_Group2 + * @{ + */ + +#if defined(FLASH_PECR_PARALLBANK) + +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_EraseParallelPage(uint32_t Page_Address1, uint32_t Page_Address2); +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_ProgramParallelHalfPage(uint32_t Address1, uint32_t* pBuffer1, uint32_t Address2, uint32_t* pBuffer2); + +#endif /* FLASH_PECR_PARALLBANK */ + +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_HalfPageProgram(uint32_t Address, uint32_t* pBuffer); + +/** + * @} + */ + +/** @addtogroup FLASH_RAMFUNC_Exported_Functions_Group3 + * @{ + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_GetError(uint32_t *Error); +/** + * @} + */ + +/** @addtogroup FLASH_RAMFUNC_Exported_Functions_Group4 + * @{ + */ + +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_EraseDoubleWord(uint32_t Address); +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_ProgramDoubleWord(uint32_t Address, uint64_t Data); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_FLASH_RAMFUNC_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h new file mode 100644 index 0000000..990e85e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio.h @@ -0,0 +1,333 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_GPIO_H +#define __STM32L1xx_HAL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIO GPIO + * @brief GPIO HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Types GPIO Exported Types + * @{ + */ +/** + * @brief GPIO Init structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_mode */ + + uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. + This parameter can be a value of @ref GPIO_pull */ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_speed */ + + uint32_t Alternate; /*!< Peripheral to be connected to the selected pins + This parameter can be a value of @ref GPIOEx_Alternate_function_selection */ +} GPIO_InitTypeDef; + +/** + * @brief GPIO Bit SET and Bit RESET enumeration + */ +typedef enum +{ + GPIO_PIN_RESET = 0, + GPIO_PIN_SET +} GPIO_PinState; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Constants GPIO Exported Constants + * @{ + */ + + +/** @defgroup GPIO_pins GPIO pins + * @{ + */ +#define GPIO_PIN_0 ((uint16_t)0x0001U) /* Pin 0 selected */ +#define GPIO_PIN_1 ((uint16_t)0x0002U) /* Pin 1 selected */ +#define GPIO_PIN_2 ((uint16_t)0x0004U) /* Pin 2 selected */ +#define GPIO_PIN_3 ((uint16_t)0x0008U) /* Pin 3 selected */ +#define GPIO_PIN_4 ((uint16_t)0x0010U) /* Pin 4 selected */ +#define GPIO_PIN_5 ((uint16_t)0x0020U) /* Pin 5 selected */ +#define GPIO_PIN_6 ((uint16_t)0x0040U) /* Pin 6 selected */ +#define GPIO_PIN_7 ((uint16_t)0x0080U) /* Pin 7 selected */ +#define GPIO_PIN_8 ((uint16_t)0x0100U) /* Pin 8 selected */ +#define GPIO_PIN_9 ((uint16_t)0x0200U) /* Pin 9 selected */ +#define GPIO_PIN_10 ((uint16_t)0x0400U) /* Pin 10 selected */ +#define GPIO_PIN_11 ((uint16_t)0x0800U) /* Pin 11 selected */ +#define GPIO_PIN_12 ((uint16_t)0x1000U) /* Pin 12 selected */ +#define GPIO_PIN_13 ((uint16_t)0x2000U) /* Pin 13 selected */ +#define GPIO_PIN_14 ((uint16_t)0x4000U) /* Pin 14 selected */ +#define GPIO_PIN_15 ((uint16_t)0x8000U) /* Pin 15 selected */ +#define GPIO_PIN_All ((uint16_t)0xFFFFU) /* All pins selected */ + +#define GPIO_PIN_MASK (0x0000FFFFU) /* PIN mask for assert test */ +/** + * @} + */ + +/** @defgroup GPIO_mode GPIO mode + * @brief GPIO Configuration Mode + * Elements values convention: 0x00WX00YZ + * - W : EXTI trigger detection on 3 bits + * - X : EXTI mode (IT or Event) on 2 bits + * - Y : Output type (Push Pull or Open Drain) on 1 bit + * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits + * @{ + */ +#define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */ +#define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */ +#define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */ +#define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */ +#define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */ + +#define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */ + +#define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ + +#define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */ +#define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */ +#define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Event Mode with Rising/Falling edge trigger detection */ + +/** + * @} + */ + +/** @defgroup GPIO_speed GPIO speed + * @brief GPIO Output Maximum frequency + * @{ + */ +#define GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< max: 400 KHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_MEDIUM (0x00000001U) /*!< max: 1 MHz to 2 MHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_HIGH (0x00000002U) /*!< max: 2 MHz to 10 MHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< max: 8 MHz to 50 MHz, please refer to the product datasheet */ + +/** + * @} + */ + +/** @defgroup GPIO_pull GPIO pull + * @brief GPIO Pull-Up or Pull-Down Activation + * @{ + */ +#define GPIO_NOPULL (0x00000000U) /*!< No Pull-up or Pull-down activation */ +#define GPIO_PULLUP (0x00000001U) /*!< Pull-up activation */ +#define GPIO_PULLDOWN (0x00000002U) /*!< Pull-down activation */ + +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup GPIO_Private_Constants GPIO Private Constants + * @{ + */ +#define GPIO_MODE_Pos 0U +#define GPIO_MODE (0x3UL << GPIO_MODE_Pos) +#define MODE_INPUT (0x0UL << GPIO_MODE_Pos) +#define MODE_OUTPUT (0x1UL << GPIO_MODE_Pos) +#define MODE_AF (0x2UL << GPIO_MODE_Pos) +#define MODE_ANALOG (0x3UL << GPIO_MODE_Pos) +#define OUTPUT_TYPE_Pos 4U +#define OUTPUT_TYPE (0x1UL << OUTPUT_TYPE_Pos) +#define OUTPUT_PP (0x0UL << OUTPUT_TYPE_Pos) +#define OUTPUT_OD (0x1UL << OUTPUT_TYPE_Pos) +#define EXTI_MODE_Pos 16U +#define EXTI_MODE (0x3UL << EXTI_MODE_Pos) +#define EXTI_IT (0x1UL << EXTI_MODE_Pos) +#define EXTI_EVT (0x2UL << EXTI_MODE_Pos) +#define TRIGGER_MODE_Pos 20U +#define TRIGGER_MODE (0x7UL << TRIGGER_MODE_Pos) +#define TRIGGER_RISING (0x1UL << TRIGGER_MODE_Pos) +#define TRIGGER_FALLING (0x2UL << TRIGGER_MODE_Pos) +/** + * @} + */ + +/* Private macros --------------------------------------------------------*/ +/** @defgroup GPIO_Private_Macros GPIO Private Macros + * @{ + */ + +#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) + +#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\ + (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U)) + +#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \ + ((PULL) == GPIO_PULLDOWN)) + +#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \ + ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH)) + +#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\ + ((MODE) == GPIO_MODE_OUTPUT_PP) ||\ + ((MODE) == GPIO_MODE_OUTPUT_OD) ||\ + ((MODE) == GPIO_MODE_AF_PP) ||\ + ((MODE) == GPIO_MODE_AF_OD) ||\ + ((MODE) == GPIO_MODE_IT_RISING) ||\ + ((MODE) == GPIO_MODE_IT_FALLING) ||\ + ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\ + ((MODE) == GPIO_MODE_EVT_RISING) ||\ + ((MODE) == GPIO_MODE_EVT_FALLING) ||\ + ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\ + ((MODE) == GPIO_MODE_ANALOG)) + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** + * @brief Checks whether the specified EXTI line flag is set or not. + * @param __EXTI_LINE__ specifies the EXTI line flag to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) + +/** + * @brief Clears the EXTI's line pending flags. + * @param __EXTI_LINE__ specifies the EXTI lines flags to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) + +/** + * @brief Checks whether the specified EXTI line is asserted or not. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) + +/** + * @brief Clears the EXTI's line pending bits. + * @param __EXTI_LINE__ specifies the EXTI lines to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) + +/** + * @brief Generates a Software interrupt on selected EXTI line. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__)) + +/** + * @} + */ + +/* Include GPIO HAL Extension module */ +#include "stm32l1xx_hal_gpio_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Functions GPIO Exported Functions + * @brief GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_Exported_Functions_Group1 Initialization and Configuration functions + * @brief Initialization and Configuration functions + * @{ + */ + +/* Initialization and de-initialization functions *****************************/ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); + +/** + * @} + */ + +/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * @{ + */ + +/* IO operation functions *****************************************************/ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_GPIO_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h new file mode 100644 index 0000000..472cf57 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_gpio_ex.h @@ -0,0 +1,203 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_gpio_ex.h + * @author MCD Application Team + * @brief Header file of GPIO HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_GPIO_EX_H +#define __STM32L1xx_HAL_GPIO_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIOEx GPIOEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants + * @{ + */ + +/** @defgroup GPIOEx_Alternate_function_selection GPIOEx Alternate function selection + * @{ + */ + +/* AF 0 selection */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO Alternate Function mapping */ +#define GPIO_AF0_TAMPER ((uint8_t)0x00) /*!< TAMPER Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD and JTAG) Alternate Function mapping */ +#define GPIO_AF0_TRACE ((uint8_t)0x00) /*!< TRACE Alternate Function mapping */ +#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00) /*!< RTC_OUT Alternate Function mapping */ + +/* AF 1 selection */ +#define GPIO_AF1_TIM2 ((uint8_t)0x01) /*!< TIM2 Alternate Function mapping */ + +/* AF 2 selection */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF2_TIM4 ((uint8_t)0x02) /*!< TIM4 Alternate Function mapping */ +#if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC) +#define GPIO_AF2_TIM5 ((uint8_t)0x02) /*!< TIM5 Alternate Function mapping */ + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD ...STM32L151xC */ + +/* AF 3 selection */ +#define GPIO_AF3_TIM9 ((uint8_t)0x03) /*!< TIM9 Alternate Function mapping */ +#define GPIO_AF3_TIM10 ((uint8_t)0x03) /*!< TIM10 Alternate Function mapping */ +#define GPIO_AF3_TIM11 ((uint8_t)0x03) /*!< TIM11 Alternate Function mapping */ + + +/* AF 4 selection */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF4_I2C2 ((uint8_t)0x04) /*!< I2C2 Alternate Function mapping */ + +/* AF 5 selection */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1/I2S1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2/I2S2 Alternate Function mapping */ + +/* AF 6 selection */ +#if defined (STM32L100xC) || defined (STM32L151xC) || defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L151xE) || defined (STM32L151xDX) ||\ + defined (STM32L152xC) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\ + defined (STM32L162xC) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX) + +#define GPIO_AF6_SPI3 ((uint8_t)0x06) /*!< SPI3/I2S3 Alternate Function mapping */ + +#endif /* STM32L100xC || STM32L151xC || (...) || STM32L162xD || STM32L162xE || STM32L162xDX */ + + +/* AF 7 selection */ +#define GPIO_AF7_USART1 ((uint8_t)0x07) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF7_USART2 ((uint8_t)0x07) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF7_USART3 ((uint8_t)0x07) /*!< USART3 Alternate Function mapping */ + +/* AF 8 selection */ +#if defined (STM32L151xD) || defined (STM32L151xE) || defined (STM32L151xDX) ||\ + defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\ + defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX) + +#define GPIO_AF8_UART4 ((uint8_t)0x08) /*!< UART4 Alternate Function mapping */ +#define GPIO_AF8_UART5 ((uint8_t)0x08) /*!< UART5 Alternate Function mapping */ + +#endif /* STM32L151xD || STM32L151xE || STM32L151xDX || STM32L152xD || STM32L 152xE || STM32L162xD || STM32L162xE || STM32L162xDX */ + + +/* AF 9 selection */ + +/* AF 10 selection */ + +/* AF 11 selection */ +#if defined (STM32L100xB) || defined (STM32L100xBA) || defined (STM32L100xC) ||\ + defined (STM32L152xB) || defined (STM32L152xBA) || defined (STM32L152xC) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L152xE) || defined (STM32L152xDX) ||\ + defined (STM32L162xC) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L162xE) || defined (STM32L162xDX) + +#define GPIO_AF11_LCD ((uint8_t)0x0B) /*!< LCD Alternate Function mapping */ + +#endif /* STM32L100xB || STM32L100xBA || STM32L100xC || (...) || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +/* AF 12 selection */ +#if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) + +#define GPIO_AF12_FSMC ((uint8_t)0x0C) /*!< FSMC Alternate Function mapping */ +#define GPIO_AF12_SDIO ((uint8_t)0x0C) /*!< SDIO Alternate Function mapping */ + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ +/* AF 13 selection */ + +/* AF 14 selection */ +#define GPIO_AF14_TIM_IC1 ((uint8_t)0x0E) /*!< TIMER INPUT CAPTURE Alternate Function mapping */ +#define GPIO_AF14_TIM_IC2 ((uint8_t)0x0E) /*!< TIMER INPUT CAPTURE Alternate Function mapping */ +#define GPIO_AF14_TIM_IC3 ((uint8_t)0x0E) /*!< TIMER INPUT CAPTURE Alternate Function mapping */ +#define GPIO_AF14_TIM_IC4 ((uint8_t)0x0E) /*!< TIMER INPUT CAPTURE Alternate Function mapping */ + +/* AF 15 selection */ +#define GPIO_AF15_EVENTOUT ((uint8_t)0x0F) /*!< EVENTOUT Alternate Function mapping */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private_Macros GPIOEx Private Macros + * @{ + */ + + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x0F) + + +#if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOE))? 4U :\ + ((__GPIOx__) == (GPIOH))? 5U :\ + ((__GPIOx__) == (GPIOF))? 6U : 7U) +#endif + +#if defined (STM32L151xB) || defined (STM32L151xBA) || defined (STM32L151xC) || defined (STM32L152xB) || defined (STM32L152xBA) || defined (STM32L152xC) || defined (STM32L162xC) +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOE))? 4U : 5U) +#endif + +#if defined (STM32L100xB) || defined (STM32L100xBA) || defined (STM32L100xC) +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U : 5U) +#endif + + + +/** + * @} + */ + + + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_GPIO_EX_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h new file mode 100644 index 0000000..7728d4b --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr.h @@ -0,0 +1,483 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_pwr.h + * @author MCD Application Team + * @brief Header file of PWR HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_PWR_H +#define __STM32L1xx_HAL_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Types PWR Exported Types + * @{ + */ + +/** + * @brief PWR PVD configuration structure definition + */ +typedef struct +{ + uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. + This parameter can be a value of @ref PWR_PVD_detection_level */ + + uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. + This parameter can be a value of @ref PWR_PVD_Mode */ +}PWR_PVDTypeDef; + +/** + * @} + */ + +/* Internal constants --------------------------------------------------------*/ + +/** @addtogroup PWR_Private_Constants + * @{ + */ +#define PWR_EXTI_LINE_PVD (0x00010000U) /*!< External interrupt line 16 Connected to the PVD EXTI Line */ + +/** + * @} + */ + + + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_register_alias_address PWR Register alias address + * @{ + */ +/* ------------- PWR registers bit address in the alias region ---------------*/ +#define PWR_OFFSET (PWR_BASE - PERIPH_BASE) +#define PWR_CR_OFFSET 0x00 +#define PWR_CSR_OFFSET 0x04 +#define PWR_CR_OFFSET_BB (PWR_OFFSET + PWR_CR_OFFSET) +#define PWR_CSR_OFFSET_BB (PWR_OFFSET + PWR_CSR_OFFSET) +/** + * @} + */ + +/** @defgroup PWR_CR_register_alias PWR CR Register alias address + * @{ + */ +/* --- CR Register ---*/ +/* Alias word address of LPSDSR bit */ +#define LPSDSR_BIT_NUMBER POSITION_VAL(PWR_CR_LPSDSR) +#define CR_LPSDSR_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (LPSDSR_BIT_NUMBER * 4))) + +/* Alias word address of DBP bit */ +#define DBP_BIT_NUMBER POSITION_VAL(PWR_CR_DBP) +#define CR_DBP_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (DBP_BIT_NUMBER * 4))) + +/* Alias word address of LPRUN bit */ +#define LPRUN_BIT_NUMBER POSITION_VAL(PWR_CR_LPRUN) +#define CR_LPRUN_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (LPRUN_BIT_NUMBER * 4))) + +/* Alias word address of PVDE bit */ +#define PVDE_BIT_NUMBER POSITION_VAL(PWR_CR_PVDE) +#define CR_PVDE_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (PVDE_BIT_NUMBER * 4))) + +/* Alias word address of FWU bit */ +#define FWU_BIT_NUMBER POSITION_VAL(PWR_CR_FWU) +#define CR_FWU_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (FWU_BIT_NUMBER * 4))) + +/* Alias word address of ULP bit */ +#define ULP_BIT_NUMBER POSITION_VAL(PWR_CR_ULP) +#define CR_ULP_BB ((uint32_t)(PERIPH_BB_BASE + (PWR_CR_OFFSET_BB * 32) + (ULP_BIT_NUMBER * 4))) +/** + * @} + */ + +/** @defgroup PWR_CSR_register_alias PWR CSR Register alias address + * @{ + */ + +/* --- CSR Register ---*/ +/* Alias word address of EWUP1, EWUP2 and EWUP3 bits */ +#define CSR_EWUP_BB(VAL) ((uint32_t)(PERIPH_BB_BASE + (PWR_CSR_OFFSET_BB * 32) + (POSITION_VAL(VAL) * 4))) +/** + * @} + */ + +/** @defgroup PWR_PVD_detection_level PWR PVD detection level + * @{ + */ +#define PWR_PVDLEVEL_0 PWR_CR_PLS_LEV0 +#define PWR_PVDLEVEL_1 PWR_CR_PLS_LEV1 +#define PWR_PVDLEVEL_2 PWR_CR_PLS_LEV2 +#define PWR_PVDLEVEL_3 PWR_CR_PLS_LEV3 +#define PWR_PVDLEVEL_4 PWR_CR_PLS_LEV4 +#define PWR_PVDLEVEL_5 PWR_CR_PLS_LEV5 +#define PWR_PVDLEVEL_6 PWR_CR_PLS_LEV6 +#define PWR_PVDLEVEL_7 PWR_CR_PLS_LEV7 /* External input analog voltage + (Compare internally to VREFINT) */ + +/** + * @} + */ + +/** @defgroup PWR_PVD_Mode PWR PVD Mode + * @{ + */ +#define PWR_PVD_MODE_NORMAL (0x00000000U) /*!< basic mode is used */ +#define PWR_PVD_MODE_IT_RISING (0x00010001U) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_IT_FALLING (0x00010002U) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_IT_RISING_FALLING (0x00010003U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING (0x00020001U) /*!< Event Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_EVENT_FALLING (0x00020002U) /*!< Event Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING_FALLING (0x00020003U) /*!< Event Mode with Rising/Falling edge trigger detection */ + + /** + * @} + */ + +/** @defgroup PWR_Regulator_state_in_SLEEP_STOP_mode PWR Regulator state in SLEEP/STOP mode + * @{ + */ +#define PWR_MAINREGULATOR_ON (0x00000000U) +#define PWR_LOWPOWERREGULATOR_ON PWR_CR_LPSDSR + +/** + * @} + */ + +/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry + * @{ + */ +#define PWR_SLEEPENTRY_WFI ((uint8_t)0x01) +#define PWR_SLEEPENTRY_WFE ((uint8_t)0x02) + +/** + * @} + */ + +/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry + * @{ + */ +#define PWR_STOPENTRY_WFI ((uint8_t)0x01) +#define PWR_STOPENTRY_WFE ((uint8_t)0x02) + +/** + * @} + */ + +/** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale + * @{ + */ + +#define PWR_REGULATOR_VOLTAGE_SCALE1 PWR_CR_VOS_0 +#define PWR_REGULATOR_VOLTAGE_SCALE2 PWR_CR_VOS_1 +#define PWR_REGULATOR_VOLTAGE_SCALE3 PWR_CR_VOS + + +/** + * @} + */ + +/** @defgroup PWR_Flag PWR Flag + * @{ + */ +#define PWR_FLAG_WU PWR_CSR_WUF +#define PWR_FLAG_SB PWR_CSR_SBF +#define PWR_FLAG_PVDO PWR_CSR_PVDO +#define PWR_FLAG_VREFINTRDY PWR_CSR_VREFINTRDYF +#define PWR_FLAG_VOS PWR_CSR_VOSF +#define PWR_FLAG_REGLP PWR_CSR_REGLPF + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @brief macros configure the main internal regulator output voltage. + * @param __REGULATOR__ specifies the regulator output voltage to achieve + * a tradeoff between performance and power consumption when the device does + * not operate at the maximum frequency (refer to the datasheets for more details). + * This parameter can be one of the following values: + * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output Scale 1 mode, + * System frequency up to 32 MHz. + * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output Scale 2 mode, + * System frequency up to 16 MHz. + * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output Scale 3 mode, + * System frequency up to 4.2 MHz + * @retval None + */ +#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) (MODIFY_REG(PWR->CR, PWR_CR_VOS, (__REGULATOR__))) + +/** @brief Check PWR flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup event + * was received from the WKUP pin or from the RTC alarm (Alarm B), + * RTC Tamper event, RTC TimeStamp event or RTC Wakeup. + * An additional wakeup event is detected if the WKUP pin is enabled + * (by setting the EWUP bit) when the WKUP pin level is already high. + * @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the system was + * resumed from StandBy mode. + * @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD is enabled + * by the HAL_PWR_EnablePVD() function. The PVD is stopped by Standby mode + * For this reason, this bit is equal to 0 after Standby or reset + * until the PVDE bit is set. + * @arg PWR_FLAG_VREFINTRDY: Internal voltage reference (VREFINT) ready flag. + * This bit indicates the state of the internal voltage reference, VREFINT. + * @arg PWR_FLAG_VOS: Voltage Scaling select flag. A delay is required for + * the internal regulator to be ready after the voltage range is changed. + * The VOSF bit indicates that the regulator has reached the voltage level + * defined with bits VOS of PWR_CR register. + * @arg PWR_FLAG_REGLP: Regulator LP flag. When the MCU exits from Low power run + * mode, this bit stays at 1 until the regulator is ready in main mode. + * A polling on this bit is recommended to wait for the regulator main mode. + * This bit is reset by hardware when the regulator is ready. + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_PWR_GET_FLAG(__FLAG__) ((PWR->CSR & (__FLAG__)) == (__FLAG__)) + +/** @brief Clear the PWR's pending flags. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be one of the following values: + * @arg PWR_FLAG_WU: Wake Up flag + * @arg PWR_FLAG_SB: StandBy flag + */ +#define __HAL_PWR_CLEAR_FLAG(__FLAG__) SET_BIT(PWR->CR, ((__FLAG__) << 2)) + +/** + * @brief Enable interrupt on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable interrupt on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR, PWR_EXTI_LINE_PVD) + +/** + * @brief Enable event on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable event on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR, PWR_EXTI_LINE_PVD) + + +/** + * @brief PVD EXTI line configuration: set falling edge trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD) + + +/** + * @brief Disable the PVD Extended Interrupt Falling Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD) + + +/** + * @brief PVD EXTI line configuration: set rising edge trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable the PVD Extended Interrupt Rising Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD) + +/** + * @brief PVD EXTI line configuration: set rising & falling edge trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); \ + } while(0) + +/** + * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0) + + + +/** + * @brief Check whether the specified PVD EXTI interrupt flag is set or not. + * @retval EXTI PVD Line Status. + */ +#define __HAL_PWR_PVD_EXTI_GET_FLAG() (EXTI->PR & (PWR_EXTI_LINE_PVD)) + +/** + * @brief Clear the PVD EXTI flag. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG() (EXTI->PR = (PWR_EXTI_LINE_PVD)) + +/** + * @brief Generate a Software interrupt on selected EXTI line. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER, PWR_EXTI_LINE_PVD) + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup PWR_Private_Macros PWR Private Macros + * @{ + */ + +#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \ + ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \ + ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \ + ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7)) + + +#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \ + ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \ + ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \ + ((MODE) == PWR_PVD_MODE_NORMAL)) + +#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \ + ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON)) + + +#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE)) + +#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE) ) + +#define IS_PWR_VOLTAGE_SCALING_RANGE(RANGE) (((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \ + ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \ + ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE3)) + + +/** + * @} + */ + + + +/* Include PWR HAL Extension module */ +#include "stm32l1xx_hal_pwr_ex.h" + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ + +/* Initialization and de-initialization functions *******************************/ +void HAL_PWR_DeInit(void); +void HAL_PWR_EnableBkUpAccess(void); +void HAL_PWR_DisableBkUpAccess(void); + +/** + * @} + */ + +/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD); +void HAL_PWR_EnablePVD(void); +void HAL_PWR_DisablePVD(void); + +/* WakeUp pins configuration functions ****************************************/ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx); +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx); + +/* Low Power modes configuration functions ************************************/ +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry); +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry); +void HAL_PWR_EnterSTANDBYMode(void); + +void HAL_PWR_EnableSleepOnExit(void); +void HAL_PWR_DisableSleepOnExit(void); +void HAL_PWR_EnableSEVOnPend(void); +void HAL_PWR_DisableSEVOnPend(void); + + + +void HAL_PWR_PVD_IRQHandler(void); +void HAL_PWR_PVDCallback(void); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* __STM32L1xx_HAL_PWR_H */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h new file mode 100644 index 0000000..9d98744 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_pwr_ex.h @@ -0,0 +1,115 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_pwr_ex.h + * @author MCD Application Team + * @brief Header file of PWR HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_PWR_EX_H +#define __STM32L1xx_HAL_PWR_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWREx + * @{ + */ + + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup PWREx_Exported_Constants PWREx Exported Constants + * @{ + */ + + +/** @defgroup PWREx_WakeUp_Pins PWREx Wakeup Pins + * @{ + */ + +#if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L151xB) || defined (STM32L151xBA) || defined (STM32L151xC) || defined (STM32L152xB) || defined (STM32L152xBA) || defined (STM32L152xC) || defined (STM32L162xC) + +#define PWR_WAKEUP_PIN1 PWR_CSR_EWUP1 +#define PWR_WAKEUP_PIN2 PWR_CSR_EWUP2 +#define PWR_WAKEUP_PIN3 PWR_CSR_EWUP3 +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN2) || \ + ((PIN) == PWR_WAKEUP_PIN3)) +#else +#define PWR_WAKEUP_PIN1 PWR_CSR_EWUP1 +#define PWR_WAKEUP_PIN2 PWR_CSR_EWUP2 +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN2)) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup PWREx_Exported_Functions PWREx Exported Functions + * @{ + */ + +/** @addtogroup PWREx_Exported_Functions_Group1 + * @{ + */ + +/* Peripheral Control methods ************************************************/ +uint32_t HAL_PWREx_GetVoltageRange(void); +void HAL_PWREx_EnableFastWakeUp(void); +void HAL_PWREx_DisableFastWakeUp(void); +void HAL_PWREx_EnableUltraLowPower(void); +void HAL_PWREx_DisableUltraLowPower(void); +void HAL_PWREx_EnableLowPowerRunMode(void); +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* __STM32L1xx_HAL_PWR_EX_H */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h new file mode 100644 index 0000000..eb13d65 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc.h @@ -0,0 +1,1895 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_rcc.h + * @author MCD Application Team + * @brief Header file of RCC HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_RCC_H +#define __STM32L1xx_HAL_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCC + * @{ + */ + +/** @addtogroup RCC_Private_Constants + * @{ + */ + +/** @defgroup RCC_Timeout RCC Timeout + * @{ + */ + +/* Disable Backup domain write protection state change timeout */ +#define RCC_DBP_TIMEOUT_VALUE (100U) /* 100 ms */ +/* LSE state change timeout */ +#define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT +#define CLOCKSWITCH_TIMEOUT_VALUE (5000U) /* 5 s */ +#define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT +#define MSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1U) */ +#define HSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1U) */ +#define LSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1U) */ +#define PLL_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1U) */ +/** + * @} + */ + +/** @defgroup RCC_Register_Offset Register offsets + * @{ + */ +#define RCC_OFFSET (RCC_BASE - PERIPH_BASE) +#define RCC_CR_OFFSET 0x00 +#define RCC_CFGR_OFFSET 0x08 +#define RCC_CIR_OFFSET 0x0C +#define RCC_CSR_OFFSET 0x34 +/** + * @} + */ + +/** @defgroup RCC_BitAddress_AliasRegion BitAddress AliasRegion + * @brief RCC registers bit address in the alias region + * @{ + */ +#define RCC_CR_OFFSET_BB (RCC_OFFSET + RCC_CR_OFFSET) +#define RCC_CFGR_OFFSET_BB (RCC_OFFSET + RCC_CFGR_OFFSET) +#define RCC_CIR_OFFSET_BB (RCC_OFFSET + RCC_CIR_OFFSET) +#define RCC_CSR_OFFSET_BB (RCC_OFFSET + RCC_CSR_OFFSET) + +/* --- CR Register ---*/ +/* Alias word address of HSION bit */ +#define RCC_HSION_BIT_NUMBER RCC_CR_HSION_Pos +#define RCC_CR_HSION_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32U) + (RCC_HSION_BIT_NUMBER * 4U))) +/* Alias word address of MSION bit */ +#define RCC_MSION_BIT_NUMBER RCC_CR_MSION_Pos +#define RCC_CR_MSION_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32U) + (RCC_MSION_BIT_NUMBER * 4U))) +/* Alias word address of HSEON bit */ +#define RCC_HSEON_BIT_NUMBER RCC_CR_HSEON_Pos +#define RCC_CR_HSEON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32U) + (RCC_HSEON_BIT_NUMBER * 4U))) +/* Alias word address of CSSON bit */ +#define RCC_CSSON_BIT_NUMBER RCC_CR_CSSON_Pos +#define RCC_CR_CSSON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32U) + (RCC_CSSON_BIT_NUMBER * 4U))) +/* Alias word address of PLLON bit */ +#define RCC_PLLON_BIT_NUMBER RCC_CR_PLLON_Pos +#define RCC_CR_PLLON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CR_OFFSET_BB * 32U) + (RCC_PLLON_BIT_NUMBER * 4U))) + +/* --- CSR Register ---*/ +/* Alias word address of LSION bit */ +#define RCC_LSION_BIT_NUMBER RCC_CSR_LSION_Pos +#define RCC_CSR_LSION_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_LSION_BIT_NUMBER * 4U))) + +/* Alias word address of RMVF bit */ +#define RCC_RMVF_BIT_NUMBER RCC_CSR_RMVF_Pos +#define RCC_CSR_RMVF_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_RMVF_BIT_NUMBER * 4U))) + +/* Alias word address of LSEON bit */ +#define RCC_LSEON_BIT_NUMBER RCC_CSR_LSEON_Pos +#define RCC_CSR_LSEON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_LSEON_BIT_NUMBER * 4U))) + +/* Alias word address of LSEON bit */ +#define RCC_LSEBYP_BIT_NUMBER RCC_CSR_LSEBYP_Pos +#define RCC_CSR_LSEBYP_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_LSEBYP_BIT_NUMBER * 4U))) + +/* Alias word address of RTCEN bit */ +#define RCC_RTCEN_BIT_NUMBER RCC_CSR_RTCEN_Pos +#define RCC_CSR_RTCEN_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_RTCEN_BIT_NUMBER * 4U))) + +/* Alias word address of RTCRST bit */ +#define RCC_RTCRST_BIT_NUMBER RCC_CSR_RTCRST_Pos +#define RCC_CSR_RTCRST_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (RCC_RTCRST_BIT_NUMBER * 4U))) + +/** + * @} + */ + +/* CR register byte 2 (Bits[23:16]) base address */ +#define RCC_CR_BYTE2_ADDRESS ((uint32_t)(RCC_BASE + RCC_CR_OFFSET + 0x02U)) + +/* CIR register byte 1 (Bits[15:8]) base address */ +#define RCC_CIR_BYTE1_ADDRESS ((uint32_t)(RCC_BASE + RCC_CIR_OFFSET + 0x01U)) + +/* CIR register byte 2 (Bits[23:16]) base address */ +#define RCC_CIR_BYTE2_ADDRESS ((uint32_t)(RCC_BASE + RCC_CIR_OFFSET + 0x02U)) + +/* Defines used for Flags */ +#define CR_REG_INDEX ((uint8_t)1U) +#define CSR_REG_INDEX ((uint8_t)2U) + +#define RCC_FLAG_MASK ((uint8_t)0x1FU) + +/** + * @} + */ + +/** @addtogroup RCC_Private_Macros + * @{ + */ +#define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_HSI) || \ + ((__SOURCE__) == RCC_PLLSOURCE_HSE)) +#define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI)) +#define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \ + ((__HSE__) == RCC_HSE_BYPASS)) +#define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \ + ((__LSE__) == RCC_LSE_BYPASS)) +#define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON)) +#define IS_RCC_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= 0x1FU) +#define IS_RCC_MSICALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= 0xFFU) +#define IS_RCC_MSI_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_0) || \ + ((__RANGE__) == RCC_MSIRANGE_1) || \ + ((__RANGE__) == RCC_MSIRANGE_2) || \ + ((__RANGE__) == RCC_MSIRANGE_3) || \ + ((__RANGE__) == RCC_MSIRANGE_4) || \ + ((__RANGE__) == RCC_MSIRANGE_5) || \ + ((__RANGE__) == RCC_MSIRANGE_6)) +#define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON)) +#define IS_RCC_MSI(__MSI__) (((__MSI__) == RCC_MSI_OFF) || ((__MSI__) == RCC_MSI_ON)) + +#define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) || ((__PLL__) == RCC_PLL_OFF) || \ + ((__PLL__) == RCC_PLL_ON)) +#define IS_RCC_PLL_DIV(__DIV__) (((__DIV__) == RCC_PLL_DIV2) || \ + ((__DIV__) == RCC_PLL_DIV3) || ((__DIV__) == RCC_PLL_DIV4)) + +#define IS_RCC_PLL_MUL(__MUL__) (((__MUL__) == RCC_PLL_MUL3) || ((__MUL__) == RCC_PLL_MUL4) || \ + ((__MUL__) == RCC_PLL_MUL6) || ((__MUL__) == RCC_PLL_MUL8) || \ + ((__MUL__) == RCC_PLL_MUL12) || ((__MUL__) == RCC_PLL_MUL16) || \ + ((__MUL__) == RCC_PLL_MUL24) || ((__MUL__) == RCC_PLL_MUL32) || \ + ((__MUL__) == RCC_PLL_MUL48)) +#define IS_RCC_CLOCKTYPE(CLK) ((((CLK) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) || \ + (((CLK) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) || \ + (((CLK) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) || \ + (((CLK) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)) +#define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_MSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK)) +#define IS_RCC_SYSCLKSOURCE_STATUS(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_MSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_HSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_HSE) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_STATUS_PLLCLK)) +#define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \ + ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \ + ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \ + ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \ + ((__HCLK__) == RCC_SYSCLK_DIV512)) +#define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \ + ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \ + ((__PCLK__) == RCC_HCLK_DIV16)) +#define IS_RCC_MCO(__MCO__) ((__MCO__) == RCC_MCO) +#define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ + ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ + ((__DIV__) == RCC_MCODIV_16)) +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || ((__SOURCE__) == RCC_MCO1SOURCE_MSI) \ + || ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || ((__SOURCE__) == RCC_MCO1SOURCE_LSE) \ + || ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || ((__SOURCE__) == RCC_MCO1SOURCE_HSE) \ + || ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || ((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK)) +#define IS_RCC_RTCCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_RTCCLKSOURCE_NO_CLK) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV2) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV4) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV8) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV16)) + +/** + * @} + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Types RCC Exported Types + * @{ + */ + +/** + * @brief RCC PLL configuration structure definition + */ +typedef struct +{ + uint32_t PLLState; /*!< PLLState: The new state of the PLL. + This parameter can be a value of @ref RCC_PLL_Config */ + + uint32_t PLLSource; /*!< PLLSource: PLL entry clock source. + This parameter must be a value of @ref RCC_PLL_Clock_Source */ + + uint32_t PLLMUL; /*!< PLLMUL: Multiplication factor for PLL VCO input clock + This parameter must be a value of @ref RCC_PLL_Multiplication_Factor*/ + + uint32_t PLLDIV; /*!< PLLDIV: Division factor for PLL VCO input clock + This parameter must be a value of @ref RCC_PLL_Division_Factor*/ +} RCC_PLLInitTypeDef; + +/** + * @brief RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition + */ +typedef struct +{ + uint32_t OscillatorType; /*!< The oscillators to be configured. + This parameter can be a value of @ref RCC_Oscillator_Type */ + + uint32_t HSEState; /*!< The new state of the HSE. + This parameter can be a value of @ref RCC_HSE_Config */ + + uint32_t LSEState; /*!< The new state of the LSE. + This parameter can be a value of @ref RCC_LSE_Config */ + + uint32_t HSIState; /*!< The new state of the HSI. + This parameter can be a value of @ref RCC_HSI_Config */ + + uint32_t HSICalibrationValue; /*!< The HSI calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT). + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1FU */ + + uint32_t LSIState; /*!< The new state of the LSI. + This parameter can be a value of @ref RCC_LSI_Config */ + + uint32_t MSIState; /*!< The new state of the MSI. + This parameter can be a value of @ref RCC_MSI_Config */ + + uint32_t MSICalibrationValue; /*!< The MSI calibration trimming value. (default is RCC_MSICALIBRATION_DEFAULT). + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFU */ + + uint32_t MSIClockRange; /*!< The MSI frequency range. + This parameter can be a value of @ref RCC_MSI_Clock_Range */ + + RCC_PLLInitTypeDef PLL; /*!< PLL structure parameters */ + +} RCC_OscInitTypeDef; + +/** + * @brief RCC System, AHB and APB busses clock configuration structure definition + */ +typedef struct +{ + uint32_t ClockType; /*!< The clock to be configured. + This parameter can be a value of @ref RCC_System_Clock_Type */ + + uint32_t SYSCLKSource; /*!< The clock source (SYSCLKS) used as system clock. + This parameter can be a value of @ref RCC_System_Clock_Source */ + + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_AHB_Clock_Source */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ +} RCC_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_PLL_Clock_Source PLL Clock Source + * @{ + */ + +#define RCC_PLLSOURCE_HSI RCC_CFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */ +#define RCC_PLLSOURCE_HSE RCC_CFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ + +/** + * @} + */ + +/** @defgroup RCC_Oscillator_Type Oscillator Type + * @{ + */ +#define RCC_OSCILLATORTYPE_NONE (0x00000000U) +#define RCC_OSCILLATORTYPE_HSE (0x00000001U) +#define RCC_OSCILLATORTYPE_HSI (0x00000002U) +#define RCC_OSCILLATORTYPE_LSE (0x00000004U) +#define RCC_OSCILLATORTYPE_LSI (0x00000008U) +#define RCC_OSCILLATORTYPE_MSI (0x00000010U) +/** + * @} + */ + +/** @defgroup RCC_HSE_Config HSE Config + * @{ + */ +#define RCC_HSE_OFF (0x00000000U) /*!< HSE clock deactivation */ +#define RCC_HSE_ON (0x00000001U) /*!< HSE clock activation */ +#define RCC_HSE_BYPASS (0x00000005U) /*!< External clock source for HSE clock */ +/** + * @} + */ + +/** @defgroup RCC_LSE_Config LSE Config + * @{ + */ +#define RCC_LSE_OFF (0x00000000U) /*!< LSE clock deactivation */ +#define RCC_LSE_ON (0x00000001U) /*!< LSE clock activation */ +#define RCC_LSE_BYPASS (0x00000005U) /*!< External clock source for LSE clock */ + +/** + * @} + */ + +/** @defgroup RCC_HSI_Config HSI Config + * @{ + */ +#define RCC_HSI_OFF (0x00000000U) /*!< HSI clock deactivation */ +#define RCC_HSI_ON RCC_CR_HSION /*!< HSI clock activation */ + +#define RCC_HSICALIBRATION_DEFAULT (0x10U) /* Default HSI calibration trimming value */ + +/** + * @} + */ + +/** @defgroup RCC_MSI_Clock_Range MSI Clock Range + * @{ + */ + +#define RCC_MSIRANGE_0 RCC_ICSCR_MSIRANGE_0 /*!< MSI = 65.536 KHz */ +#define RCC_MSIRANGE_1 RCC_ICSCR_MSIRANGE_1 /*!< MSI = 131.072 KHz */ +#define RCC_MSIRANGE_2 RCC_ICSCR_MSIRANGE_2 /*!< MSI = 262.144 KHz */ +#define RCC_MSIRANGE_3 RCC_ICSCR_MSIRANGE_3 /*!< MSI = 524.288 KHz */ +#define RCC_MSIRANGE_4 RCC_ICSCR_MSIRANGE_4 /*!< MSI = 1.048 MHz */ +#define RCC_MSIRANGE_5 RCC_ICSCR_MSIRANGE_5 /*!< MSI = 2.097 MHz */ +#define RCC_MSIRANGE_6 RCC_ICSCR_MSIRANGE_6 /*!< MSI = 4.194 MHz */ + +/** + * @} + */ + +/** @defgroup RCC_LSI_Config LSI Config + * @{ + */ +#define RCC_LSI_OFF (0x00000000U) /*!< LSI clock deactivation */ +#define RCC_LSI_ON RCC_CSR_LSION /*!< LSI clock activation */ + +/** + * @} + */ + +/** @defgroup RCC_MSI_Config MSI Config + * @{ + */ +#define RCC_MSI_OFF (0x00000000U) +#define RCC_MSI_ON (0x00000001U) + +#define RCC_MSICALIBRATION_DEFAULT (0x00000000U) /* Default MSI calibration trimming value */ + +/** + * @} + */ + +/** @defgroup RCC_PLL_Config PLL Config + * @{ + */ +#define RCC_PLL_NONE (0x00000000U) /*!< PLL is not configured */ +#define RCC_PLL_OFF (0x00000001U) /*!< PLL deactivation */ +#define RCC_PLL_ON (0x00000002U) /*!< PLL activation */ + +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Type System Clock Type + * @{ + */ +#define RCC_CLOCKTYPE_SYSCLK (0x00000001U) /*!< SYSCLK to configure */ +#define RCC_CLOCKTYPE_HCLK (0x00000002U) /*!< HCLK to configure */ +#define RCC_CLOCKTYPE_PCLK1 (0x00000004U) /*!< PCLK1 to configure */ +#define RCC_CLOCKTYPE_PCLK2 (0x00000008U) /*!< PCLK2 to configure */ + +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source System Clock Source + * @{ + */ +#define RCC_SYSCLKSOURCE_MSI RCC_CFGR_SW_MSI /*!< MSI selected as system clock */ +#define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selected as system clock */ +#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selected as system clock */ +#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL /*!< PLL selected as system clock */ + +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status + * @{ + */ +#define RCC_SYSCLKSOURCE_STATUS_MSI RCC_CFGR_SWS_MSI /*!< MSI used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ + +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Source AHB Clock Source + * @{ + */ +#define RCC_SYSCLK_DIV1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ +#define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ +#define RCC_SYSCLK_DIV4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ +#define RCC_SYSCLK_DIV8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ +#define RCC_SYSCLK_DIV16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ +#define RCC_SYSCLK_DIV64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ +#define RCC_SYSCLK_DIV128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ +#define RCC_SYSCLK_DIV256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ +#define RCC_SYSCLK_DIV512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ + +/** + * @} + */ + +/** @defgroup RCC_APB1_APB2_Clock_Source APB1 APB2 Clock Source + * @{ + */ +#define RCC_HCLK_DIV1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ +#define RCC_HCLK_DIV2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ +#define RCC_HCLK_DIV4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ +#define RCC_HCLK_DIV8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ +#define RCC_HCLK_DIV16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ + +/** + * @} + */ + +/** @defgroup RCC_HAL_EC_RTC_HSE_DIV RTC HSE Prescaler + * @{ + */ +#define RCC_RTC_HSE_DIV_2 0x00000000U /*!< HSE is divided by 2 for RTC clock */ +#define RCC_RTC_HSE_DIV_4 RCC_CR_RTCPRE_0 /*!< HSE is divided by 4 for RTC clock */ +#define RCC_RTC_HSE_DIV_8 RCC_CR_RTCPRE_1 /*!< HSE is divided by 8 for RTC clock */ +#define RCC_RTC_HSE_DIV_16 RCC_CR_RTCPRE /*!< HSE is divided by 16 for RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_RTC_LCD_Clock_Source RTC LCD Clock Source + * @{ + */ +#define RCC_RTCCLKSOURCE_NO_CLK (0x00000000U) /*!< No clock */ +#define RCC_RTCCLKSOURCE_LSE RCC_CSR_RTCSEL_LSE /*!< LSE oscillator clock used as RTC clock */ +#define RCC_RTCCLKSOURCE_LSI RCC_CSR_RTCSEL_LSI /*!< LSI oscillator clock used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIVX RCC_CSR_RTCSEL_HSE /*!< HSE oscillator clock divided by X used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIV2 (RCC_RTC_HSE_DIV_2 | RCC_CSR_RTCSEL_HSE) /*!< HSE oscillator clock divided by 2 used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIV4 (RCC_RTC_HSE_DIV_4 | RCC_CSR_RTCSEL_HSE) /*!< HSE oscillator clock divided by 4 used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIV8 (RCC_RTC_HSE_DIV_8 | RCC_CSR_RTCSEL_HSE) /*!< HSE oscillator clock divided by 8 used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIV16 (RCC_RTC_HSE_DIV_16 | RCC_CSR_RTCSEL_HSE) /*!< HSE oscillator clock divided by 16 used as RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_PLL_Division_Factor PLL Division Factor + * @{ + */ + +#define RCC_PLL_DIV2 RCC_CFGR_PLLDIV2 +#define RCC_PLL_DIV3 RCC_CFGR_PLLDIV3 +#define RCC_PLL_DIV4 RCC_CFGR_PLLDIV4 + +/** + * @} + */ + +/** @defgroup RCC_PLL_Multiplication_Factor PLL Multiplication Factor + * @{ + */ + +#define RCC_PLL_MUL3 RCC_CFGR_PLLMUL3 +#define RCC_PLL_MUL4 RCC_CFGR_PLLMUL4 +#define RCC_PLL_MUL6 RCC_CFGR_PLLMUL6 +#define RCC_PLL_MUL8 RCC_CFGR_PLLMUL8 +#define RCC_PLL_MUL12 RCC_CFGR_PLLMUL12 +#define RCC_PLL_MUL16 RCC_CFGR_PLLMUL16 +#define RCC_PLL_MUL24 RCC_CFGR_PLLMUL24 +#define RCC_PLL_MUL32 RCC_CFGR_PLLMUL32 +#define RCC_PLL_MUL48 RCC_CFGR_PLLMUL48 + +/** + * @} + */ + +/** @defgroup RCC_MCO_Index MCO Index + * @{ + */ +#define RCC_MCO1 (0x00000000U) +#define RCC_MCO RCC_MCO1 /*!< MCO1 to be compliant with other families with 2 MCOs*/ + +/** + * @} + */ + +/** @defgroup RCC_MCOx_Clock_Prescaler MCO Clock Prescaler + * @{ + */ +#define RCC_MCODIV_1 ((uint32_t)RCC_CFGR_MCO_DIV1) +#define RCC_MCODIV_2 ((uint32_t)RCC_CFGR_MCO_DIV2) +#define RCC_MCODIV_4 ((uint32_t)RCC_CFGR_MCO_DIV4) +#define RCC_MCODIV_8 ((uint32_t)RCC_CFGR_MCO_DIV8) +#define RCC_MCODIV_16 ((uint32_t)RCC_CFGR_MCO_DIV16) + +/** + * @} + */ + +/** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source + * @{ + */ +#define RCC_MCO1SOURCE_NOCLOCK RCC_CFGR_MCO_NOCLOCK +#define RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCO_SYSCLK +#define RCC_MCO1SOURCE_MSI RCC_CFGR_MCO_MSI +#define RCC_MCO1SOURCE_HSI RCC_CFGR_MCO_HSI +#define RCC_MCO1SOURCE_LSE RCC_CFGR_MCO_LSE +#define RCC_MCO1SOURCE_LSI RCC_CFGR_MCO_LSI +#define RCC_MCO1SOURCE_HSE RCC_CFGR_MCO_HSE +#define RCC_MCO1SOURCE_PLLCLK RCC_CFGR_MCO_PLL + +/** + * @} + */ +/** @defgroup RCC_Interrupt Interrupts + * @{ + */ +#define RCC_IT_LSIRDY ((uint8_t)RCC_CIR_LSIRDYF) /*!< LSI Ready Interrupt flag */ +#define RCC_IT_LSERDY ((uint8_t)RCC_CIR_LSERDYF) /*!< LSE Ready Interrupt flag */ +#define RCC_IT_HSIRDY ((uint8_t)RCC_CIR_HSIRDYF) /*!< HSI Ready Interrupt flag */ +#define RCC_IT_HSERDY ((uint8_t)RCC_CIR_HSERDYF) /*!< HSE Ready Interrupt flag */ +#define RCC_IT_PLLRDY ((uint8_t)RCC_CIR_PLLRDYF) /*!< PLL Ready Interrupt flag */ +#define RCC_IT_MSIRDY ((uint8_t)RCC_CIR_MSIRDYF) /*!< MSI Ready Interrupt flag */ +#define RCC_IT_LSECSS ((uint8_t)RCC_CIR_LSECSSF) /*!< LSE Clock Security System Interrupt flag */ +#define RCC_IT_CSS ((uint8_t)RCC_CIR_CSSF) /*!< Clock Security System Interrupt flag */ +/** + * @} + */ + +/** @defgroup RCC_Flag Flags + * Elements values convention: XXXYYYYYb + * - YYYYY : Flag position in the register + * - XXX : Register index + * - 001: CR register + * - 010: CSR register + * @{ + */ +/* Flags in the CR register */ +#define RCC_FLAG_HSIRDY ((uint8_t)((CR_REG_INDEX << 5U) | RCC_CR_HSIRDY_Pos)) /*!< Internal High Speed clock ready flag */ +#define RCC_FLAG_MSIRDY ((uint8_t)((CR_REG_INDEX << 5U) | RCC_CR_MSIRDY_Pos)) /*!< MSI clock ready flag */ +#define RCC_FLAG_HSERDY ((uint8_t)((CR_REG_INDEX << 5U) | RCC_CR_HSERDY_Pos)) /*!< External High Speed clock ready flag */ +#define RCC_FLAG_PLLRDY ((uint8_t)((CR_REG_INDEX << 5U) | RCC_CR_PLLRDY_Pos)) /*!< PLL clock ready flag */ + +/* Flags in the CSR register */ +#define RCC_FLAG_LSIRDY ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_LSIRDY_Pos)) /*!< Internal Low Speed oscillator Ready */ +#define RCC_FLAG_LSECSS ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_LSECSSD_Pos)) /*!< CSS on LSE failure Detection */ +#define RCC_FLAG_OBLRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_OBLRSTF_Pos)) /*!< Options bytes loading reset flag */ +#define RCC_FLAG_PINRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_PINRSTF_Pos)) /*!< PIN reset flag */ +#define RCC_FLAG_PORRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_PORRSTF_Pos)) /*!< POR/PDR reset flag */ +#define RCC_FLAG_SFTRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_SFTRSTF_Pos)) /*!< Software Reset flag */ +#define RCC_FLAG_IWDGRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_IWDGRSTF_Pos)) /*!< Independent Watchdog reset flag */ +#define RCC_FLAG_WWDGRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_WWDGRSTF_Pos)) /*!< Window watchdog reset flag */ +#define RCC_FLAG_LPWRRST ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_LPWRRSTF_Pos)) /*!< Low-Power reset flag */ +#define RCC_FLAG_LSERDY ((uint8_t)((CSR_REG_INDEX << 5U) | RCC_CSR_LSERDY_Pos)) /*!< External Low Speed oscillator Ready */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_Peripheral_Clock_Enable_Disable Peripheral Clock Enable Disable + * @brief Enable or disable the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_GPIOA_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOAEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOAEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOBEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOBEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOCEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOCEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIODEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIODEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOH_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOHEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOHEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_CRC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_FLITF_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_FLITFEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FLITFEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_DMA1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);\ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOA_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOAEN)) +#define __HAL_RCC_GPIOB_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOBEN)) +#define __HAL_RCC_GPIOC_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOCEN)) +#define __HAL_RCC_GPIOD_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIODEN)) +#define __HAL_RCC_GPIOH_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOHEN)) + +#define __HAL_RCC_CRC_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_CRCEN)) +#define __HAL_RCC_FLITF_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_FLITFEN)) +#define __HAL_RCC_DMA1_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_DMA1EN)) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Clock Enable Disable + * @brief Enable or disable the Low Speed APB (APB1) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_TIM2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM7_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_WWDG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_SPI2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_USART2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_USART3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_I2C1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_I2C2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_USB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_PWR_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_DAC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_COMP_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_COMPEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_COMPEN);\ + UNUSED(tmpreg); \ + } while(0U) + + +#define __HAL_RCC_TIM2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM3EN)) +#define __HAL_RCC_TIM4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM4EN)) +#define __HAL_RCC_TIM6_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_TIM7_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM7EN)) +#define __HAL_RCC_WWDG_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_WWDGEN)) +#define __HAL_RCC_SPI2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_USART2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_USART3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART3EN)) +#define __HAL_RCC_I2C1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_USB_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USBEN)) +#define __HAL_RCC_PWR_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_PWREN)) +#define __HAL_RCC_DAC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_DACEN)) +#define __HAL_RCC_COMP_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_COMPEN)) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Clock Enable Disable + * @brief Enable or disable the High Speed APB (APB2) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM9_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM10_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM11_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_ADC1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_SPI1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_USART1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\ + /* Delay after an RCC peripheral clock enabling */\ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_SYSCFG_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SYSCFGEN)) +#define __HAL_RCC_TIM9_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM9EN)) +#define __HAL_RCC_TIM10_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM10EN)) +#define __HAL_RCC_TIM11_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM11EN)) +#define __HAL_RCC_ADC1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC1EN)) +#define __HAL_RCC_SPI1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI1EN)) +#define __HAL_RCC_USART1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_USART1EN)) + +/** + * @} + */ + +/** @defgroup RCC_Peripheral_Clock_Force_Release RCC Peripheral Clock Force Release + * @brief Force or release AHB peripheral reset. + * @{ + */ +#define __HAL_RCC_AHB_FORCE_RESET() (RCC->AHBRSTR = 0xFFFFFFFFU) +#define __HAL_RCC_GPIOA_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOCRST)) +#define __HAL_RCC_GPIOD_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIODRST)) +#define __HAL_RCC_GPIOH_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOHRST)) + +#define __HAL_RCC_CRC_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_CRCRST)) +#define __HAL_RCC_FLITF_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_FLITFRST)) +#define __HAL_RCC_DMA1_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_DMA1RST)) + +#define __HAL_RCC_AHB_RELEASE_RESET() (RCC->AHBRSTR = 0x00000000U) +#define __HAL_RCC_GPIOA_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOCRST)) +#define __HAL_RCC_GPIOD_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIODRST)) +#define __HAL_RCC_GPIOH_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOHRST)) + +#define __HAL_RCC_CRC_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_CRCRST)) +#define __HAL_RCC_FLITF_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_FLITFRST)) +#define __HAL_RCC_DMA1_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_DMA1RST)) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Force_Release_Reset APB1 Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB1_FORCE_RESET() (RCC->APB1RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_TIM2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST)) +#define __HAL_RCC_TIM6_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_WWDG_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_SPI2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_USART2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART3RST)) +#define __HAL_RCC_I2C1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_USB_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USBRST)) +#define __HAL_RCC_PWR_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_PWRRST)) +#define __HAL_RCC_DAC_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_DACRST)) +#define __HAL_RCC_COMP_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_COMPRST)) + +#define __HAL_RCC_APB1_RELEASE_RESET() (RCC->APB1RSTR = 0x00000000U) +#define __HAL_RCC_TIM2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM4RST)) +#define __HAL_RCC_TIM6_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_WWDG_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_SPI2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_USART2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART3RST)) +#define __HAL_RCC_I2C1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_USB_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USBRST)) +#define __HAL_RCC_PWR_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_PWRRST)) +#define __HAL_RCC_DAC_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_DACRST)) +#define __HAL_RCC_COMP_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_COMPRST)) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Force_Release_Reset APB2 Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB2_FORCE_RESET() (RCC->APB2RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_SYSCFG_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SYSCFGRST)) +#define __HAL_RCC_TIM9_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM9RST)) +#define __HAL_RCC_TIM10_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM10RST)) +#define __HAL_RCC_TIM11_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM11RST)) +#define __HAL_RCC_ADC1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_USART1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_USART1RST)) + +#define __HAL_RCC_APB2_RELEASE_RESET() (RCC->APB2RSTR = 0x00000000U) +#define __HAL_RCC_SYSCFG_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SYSCFGRST)) +#define __HAL_RCC_TIM9_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM9RST)) +#define __HAL_RCC_TIM10_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM10RST)) +#define __HAL_RCC_TIM11_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM11RST)) +#define __HAL_RCC_ADC1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_USART1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART1RST)) + +/** + * @} + */ + +/** @defgroup RCC_Peripheral_Clock_Sleep_Enable_Disable RCC Peripheral Clock Sleep Enable Disable + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOALPEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOBLPEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOCLPEN)) +#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIODLPEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOHLPEN)) + +#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_CRCLPEN)) +#define __HAL_RCC_FLITF_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_FLITFLPEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_DMA1LPEN)) + +#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOALPEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOBLPEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOCLPEN)) +#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIODLPEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOHLPEN)) + +#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_CRCLPEN)) +#define __HAL_RCC_FLITF_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_FLITFLPEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_DMA1LPEN)) + +/** @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM2LPEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM3LPEN)) +#define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM4LPEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM6LPEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM7LPEN)) +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_WWDGLPEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI2LPEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART2LPEN)) +#define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART3LPEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C1LPEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C2LPEN)) +#define __HAL_RCC_USB_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USBLPEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_PWRLPEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_DACLPEN)) +#define __HAL_RCC_COMP_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_COMPLPEN)) + +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM2LPEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM3LPEN)) +#define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM4LPEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM6LPEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM7LPEN)) +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_WWDGLPEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI2LPEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART2LPEN)) +#define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART3LPEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C1LPEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C2LPEN)) +#define __HAL_RCC_USB_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USBLPEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_PWRLPEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_DACLPEN)) +#define __HAL_RCC_COMP_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_COMPLPEN)) + +/** @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SYSCFGLPEN)) +#define __HAL_RCC_TIM9_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM9LPEN)) +#define __HAL_RCC_TIM10_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM10LPEN)) +#define __HAL_RCC_TIM11_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM11LPEN)) +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC1LPEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI1LPEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_USART1LPEN)) + +#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SYSCFGLPEN)) +#define __HAL_RCC_TIM9_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM9LPEN)) +#define __HAL_RCC_TIM10_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM10LPEN)) +#define __HAL_RCC_TIM11_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM11LPEN)) +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC1LPEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI1LPEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_USART1LPEN)) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable_Status AHB Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the AHB peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_GPIOA_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOAEN)) != 0U) +#define __HAL_RCC_GPIOB_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOBEN)) != 0U) +#define __HAL_RCC_GPIOC_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOCEN)) != 0U) +#define __HAL_RCC_GPIOD_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIODEN)) != 0U) +#define __HAL_RCC_GPIOH_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOHEN)) != 0U) +#define __HAL_RCC_CRC_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_CRCEN)) != 0U) +#define __HAL_RCC_FLITF_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_FLITFEN)) != 0U) +#define __HAL_RCC_DMA1_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA1EN)) != 0U) +#define __HAL_RCC_GPIOA_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOAEN)) == 0U) +#define __HAL_RCC_GPIOB_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOBEN)) == 0U) +#define __HAL_RCC_GPIOC_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOCEN)) == 0U) +#define __HAL_RCC_GPIOD_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIODEN)) == 0U) +#define __HAL_RCC_GPIOH_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOHEN)) == 0U) +#define __HAL_RCC_CRC_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_CRCEN)) == 0U) +#define __HAL_RCC_FLITF_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_FLITFEN)) == 0U) +#define __HAL_RCC_DMA1_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA1EN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Peripheral_Clock_Enable_Disable_Status APB1 Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the APB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) != 0U) +#define __HAL_RCC_TIM3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) != 0U) +#define __HAL_RCC_TIM4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) != 0U) +#define __HAL_RCC_TIM7_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) != 0U) +#define __HAL_RCC_WWDG_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) != 0U) +#define __HAL_RCC_USART2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) != 0U) +#define __HAL_RCC_USART3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) != 0U) +#define __HAL_RCC_USB_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USBEN)) != 0U) +#define __HAL_RCC_PWR_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) != 0U) +#define __HAL_RCC_DAC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) != 0U) +#define __HAL_RCC_COMP_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_COMPEN)) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) == 0U) +#define __HAL_RCC_TIM3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) == 0U) +#define __HAL_RCC_TIM4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) == 0U) +#define __HAL_RCC_TIM7_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) == 0U) +#define __HAL_RCC_WWDG_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) == 0U) +#define __HAL_RCC_USART2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) == 0U) +#define __HAL_RCC_USART3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) == 0U) +#define __HAL_RCC_USB_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USBEN)) == 0U) +#define __HAL_RCC_PWR_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) == 0U) +#define __HAL_RCC_DAC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) == 0U) +#define __HAL_RCC_COMP_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_COMPEN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Peripheral_Clock_Enable_Disable_Status APB2 Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the APB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) != 0U) +#define __HAL_RCC_TIM9_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) != 0U) +#define __HAL_RCC_TIM10_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) != 0U) +#define __HAL_RCC_TIM11_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) != 0U) +#define __HAL_RCC_ADC1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) != 0U) +#define __HAL_RCC_SPI1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) != 0U) +#define __HAL_RCC_USART1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) != 0U) +#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) == 0U) +#define __HAL_RCC_TIM9_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) == 0U) +#define __HAL_RCC_TIM10_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) == 0U) +#define __HAL_RCC_TIM11_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) == 0U) +#define __HAL_RCC_ADC1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) == 0U) +#define __HAL_RCC_SPI1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) == 0U) +#define __HAL_RCC_USART1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Sleep_Enable_Disable_Status AHB Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the AHB peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOALPEN)) != 0U) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOBLPEN)) != 0U) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOCLPEN)) != 0U) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIODLPEN)) != 0U) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOHLPEN)) != 0U) +#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_CRCLPEN)) != 0U) +#define __HAL_RCC_FLITF_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FLITFLPEN)) != 0U) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA1LPEN)) != 0U) +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOALPEN)) == 0U) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOBLPEN)) == 0U) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOCLPEN)) == 0U) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIODLPEN)) == 0U) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOHLPEN)) == 0U) +#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_CRCLPEN)) == 0U) +#define __HAL_RCC_FLITF_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FLITFLPEN)) == 0U) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA1LPEN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) != 0U) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) != 0U) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) != 0U) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) != 0U) +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) != 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) != 0U) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) != 0U) +#define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USBLPEN)) != 0U) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) != 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) != 0U) +#define __HAL_RCC_COMP_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_COMPLPEN)) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) == 0U) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) == 0U) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) == 0U) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) == 0U) +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) == 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) == 0U) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) == 0U) +#define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USBLPEN)) == 0U) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) == 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) == 0U) +#define __HAL_RCC_COMP_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_COMPLPEN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) != 0U) +#define __HAL_RCC_TIM9_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) != 0U) +#define __HAL_RCC_TIM10_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) != 0U) +#define __HAL_RCC_TIM11_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) != 0U) +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) != 0U) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) != 0U) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) != 0U) +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) == 0U) +#define __HAL_RCC_TIM9_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) == 0U) +#define __HAL_RCC_TIM10_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) == 0U) +#define __HAL_RCC_TIM11_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) == 0U) +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) == 0U) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) == 0U) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_HSI_Configuration HSI Configuration + * @{ + */ + +/** @brief Macros to enable or disable the Internal High Speed oscillator (HSI). + * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. + * @note HSI can not be stopped if it is used as system clock source. In this case, + * you have to select another source of the system clock then stop the HSI. + * @note After enabling the HSI, the application software should wait on HSIRDY + * flag to be set indicating that HSI clock is stable and can be used as + * system clock source. + * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator + * clock cycles. + */ +#define __HAL_RCC_HSI_ENABLE() (*(__IO uint32_t *) RCC_CR_HSION_BB = ENABLE) +#define __HAL_RCC_HSI_DISABLE() (*(__IO uint32_t *) RCC_CR_HSION_BB = DISABLE) + +/** @brief Macro to adjust the Internal High Speed oscillator (HSI) calibration value. + * @note The calibration is used to compensate for the variations in voltage + * and temperature that influence the frequency of the internal HSI RC. + * @param _HSICALIBRATIONVALUE_ specifies the calibration trimming value. + * (default is RCC_HSICALIBRATION_DEFAULT). + * This parameter must be a number between 0 and 0x1F. + */ +#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(_HSICALIBRATIONVALUE_) \ + (MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, (uint32_t)(_HSICALIBRATIONVALUE_) << RCC_ICSCR_HSITRIM_Pos)) + +/** + * @} + */ + +/** @defgroup RCC_LSI_Configuration LSI Configuration + * @{ + */ + +/** @brief Macro to enable the Internal Low Speed oscillator (LSI). + * @note After enabling the LSI, the application software should wait on + * LSIRDY flag to be set indicating that LSI clock is stable and can + * be used to clock the IWDG and/or the RTC. + */ +#define __HAL_RCC_LSI_ENABLE() (*(__IO uint32_t *) RCC_CSR_LSION_BB = ENABLE) + +/** @brief Macro to disable the Internal Low Speed oscillator (LSI). + * @note LSI can not be disabled if the IWDG is running. + * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator + * clock cycles. + */ +#define __HAL_RCC_LSI_DISABLE() (*(__IO uint32_t *) RCC_CSR_LSION_BB = DISABLE) + +/** + * @} + */ + +/** @defgroup RCC_HSE_Configuration HSE Configuration + * @{ + */ + +/** + * @brief Macro to configure the External High Speed oscillator (HSE). + * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application + * software should wait on HSERDY flag to be set indicating that HSE clock + * is stable and can be used to clock the PLL and/or system clock. + * @note HSE state can not be changed if it is used directly or through the + * PLL as system clock. In this case, you have to select another source + * of the system clock then change the HSE state (ex. disable it). + * @note The HSE is stopped by hardware when entering STOP and STANDBY modes. + * @note This function reset the CSSON bit, so if the clock security system(CSS) + * was previously enabled you have to enable it again after calling this + * function. + * @param __STATE__ specifies the new state of the HSE. + * This parameter can be one of the following values: + * @arg @ref RCC_HSE_OFF turn OFF the HSE oscillator, HSERDY flag goes low after + * 6 HSE oscillator clock cycles. + * @arg @ref RCC_HSE_ON turn ON the HSE oscillator + * @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock + */ +#define __HAL_RCC_HSE_CONFIG(__STATE__) \ + do{ \ + if ((__STATE__) == RCC_HSE_ON) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else if ((__STATE__) == RCC_HSE_OFF) \ + { \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + else if ((__STATE__) == RCC_HSE_BYPASS) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + }while(0U) + +/** + * @} + */ + +/** @defgroup RCC_LSE_Configuration LSE Configuration + * @{ + */ + +/** + * @brief Macro to configure the External Low Speed oscillator (LSE). + * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro. + * @note As the LSE is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * @ref HAL_PWR_EnableBkUpAccess() function before to configure the LSE + * (to be done once after reset). + * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application + * software should wait on LSERDY flag to be set indicating that LSE clock + * is stable and can be used to clock the RTC. + * @param __STATE__ specifies the new state of the LSE. + * This parameter can be one of the following values: + * @arg @ref RCC_LSE_OFF turn OFF the LSE oscillator, LSERDY flag goes low after + * 6 LSE oscillator clock cycles. + * @arg @ref RCC_LSE_ON turn ON the LSE oscillator. + * @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock. + */ +#define __HAL_RCC_LSE_CONFIG(__STATE__) \ + do{ \ + if ((__STATE__) == RCC_LSE_ON) \ + { \ + SET_BIT(RCC->CSR, RCC_CSR_LSEON); \ + } \ + else if ((__STATE__) == RCC_LSE_OFF) \ + { \ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEON); \ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEBYP); \ + } \ + else if ((__STATE__) == RCC_LSE_BYPASS) \ + { \ + SET_BIT(RCC->CSR, RCC_CSR_LSEBYP); \ + SET_BIT(RCC->CSR, RCC_CSR_LSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEON); \ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEBYP); \ + } \ + }while(0U) + +/** + * @} + */ + +/** @defgroup RCC_MSI_Configuration MSI Configuration + * @{ + */ + +/** @brief Macro to enable Internal Multi Speed oscillator (MSI). + * @note After enabling the MSI, the application software should wait on MSIRDY + * flag to be set indicating that MSI clock is stable and can be used as + * system clock source. + */ +#define __HAL_RCC_MSI_ENABLE() (*(__IO uint32_t *) RCC_CR_MSION_BB = ENABLE) + +/** @brief Macro to disable the Internal Multi Speed oscillator (MSI). + * @note The MSI is stopped by hardware when entering STOP and STANDBY modes. + * It is used (enabled by hardware) as system clock source after startup + * from Reset, wakeup from STOP and STANDBY mode, or in case of failure + * of the HSE used directly or indirectly as system clock (if the Clock + * Security System CSS is enabled). + * @note MSI can not be stopped if it is used as system clock source. In this case, + * you have to select another source of the system clock then stop the MSI. + * @note When the MSI is stopped, MSIRDY flag goes low after 6 MSI oscillator + * clock cycles. + */ +#define __HAL_RCC_MSI_DISABLE() (*(__IO uint32_t *) RCC_CR_MSION_BB = DISABLE) + +/** @brief Macro adjusts Internal Multi Speed oscillator (MSI) calibration value. + * @note The calibration is used to compensate for the variations in voltage + * and temperature that influence the frequency of the internal MSI RC. + * @param _MSICALIBRATIONVALUE_ specifies the calibration trimming value. + * (default is RCC_MSICALIBRATION_DEFAULT). + * This parameter must be a number between 0 and 0xFF. + */ +#define __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(_MSICALIBRATIONVALUE_) \ + (MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, (uint32_t)(_MSICALIBRATIONVALUE_) << RCC_ICSCR_MSITRIM_Pos)) + +/* @brief Macro to configures the Internal Multi Speed oscillator (MSI) clock range. + * @note After restart from Reset or wakeup from STANDBY, the MSI clock is + * around 2.097 MHz. The MSI clock does not change after wake-up from + * STOP mode. + * @note The MSI clock range can be modified on the fly. + * @param _MSIRANGEVALUE_ specifies the MSI Clock range. + * This parameter must be one of the following values: + * @arg @ref RCC_MSIRANGE_0 MSI clock is around 65.536 KHz + * @arg @ref RCC_MSIRANGE_1 MSI clock is around 131.072 KHz + * @arg @ref RCC_MSIRANGE_2 MSI clock is around 262.144 KHz + * @arg @ref RCC_MSIRANGE_3 MSI clock is around 524.288 KHz + * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1.048 MHz + * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2.097 MHz (default after Reset or wake-up from STANDBY) + * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4.194 MHz + */ +#define __HAL_RCC_MSI_RANGE_CONFIG(_MSIRANGEVALUE_) (MODIFY_REG(RCC->ICSCR, \ + RCC_ICSCR_MSIRANGE, (uint32_t)(_MSIRANGEVALUE_))) + +/** @brief Macro to get the Internal Multi Speed oscillator (MSI) clock range in run mode + * @retval MSI clock range. + * This parameter must be one of the following values: + * @arg @ref RCC_MSIRANGE_0 MSI clock is around 65.536 KHz + * @arg @ref RCC_MSIRANGE_1 MSI clock is around 131.072 KHz + * @arg @ref RCC_MSIRANGE_2 MSI clock is around 262.144 KHz + * @arg @ref RCC_MSIRANGE_3 MSI clock is around 524.288 KHz + * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1.048 MHz + * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2.097 MHz (default after Reset or wake-up from STANDBY) + * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4.194 MHz + */ +#define __HAL_RCC_GET_MSI_RANGE() (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSIRANGE)) + +/** + * @} + */ + +/** @defgroup RCC_PLL_Configuration PLL Configuration + * @{ + */ + +/** @brief Macro to enable the main PLL. + * @note After enabling the main PLL, the application software should wait on + * PLLRDY flag to be set indicating that PLL clock is stable and can + * be used as system clock source. + * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes. + */ +#define __HAL_RCC_PLL_ENABLE() (*(__IO uint32_t *) RCC_CR_PLLON_BB = ENABLE) + +/** @brief Macro to disable the main PLL. + * @note The main PLL can not be disabled if it is used as system clock source + */ +#define __HAL_RCC_PLL_DISABLE() (*(__IO uint32_t *) RCC_CR_PLLON_BB = DISABLE) + +/** @brief Macro to configure the main PLL clock source, multiplication and division factors. + * @note This function must be used only when the main PLL is disabled. + * + * @param __RCC_PLLSOURCE__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry + * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry + * @param __PLLMUL__ specifies the multiplication factor for PLL VCO output clock + * This parameter can be one of the following values: + * @arg @ref RCC_PLL_MUL3 PLLVCO = PLL clock entry x 3 + * @arg @ref RCC_PLL_MUL4 PLLVCO = PLL clock entry x 4 + * @arg @ref RCC_PLL_MUL6 PLLVCO = PLL clock entry x 6 + * @arg @ref RCC_PLL_MUL8 PLLVCO = PLL clock entry x 8 + * @arg @ref RCC_PLL_MUL12 PLLVCO = PLL clock entry x 12 + * @arg @ref RCC_PLL_MUL16 PLLVCO = PLL clock entry x 16 + * @arg @ref RCC_PLL_MUL24 PLLVCO = PLL clock entry x 24 + * @arg @ref RCC_PLL_MUL32 PLLVCO = PLL clock entry x 32 + * @arg @ref RCC_PLL_MUL48 PLLVCO = PLL clock entry x 48 + * @note The PLL VCO clock frequency must not exceed 96 MHz when the product is in + * Range 1, 48 MHz when the product is in Range 2 and 24 MHz when the product is + * in Range 3. + * + * @param __PLLDIV__ specifies the division factor for PLL VCO input clock + * This parameter can be one of the following values: + * @arg @ref RCC_PLL_DIV2 PLL clock output = PLLVCO / 2 + * @arg @ref RCC_PLL_DIV3 PLL clock output = PLLVCO / 3 + * @arg @ref RCC_PLL_DIV4 PLL clock output = PLLVCO / 4 + * + */ +#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSOURCE__, __PLLMUL__, __PLLDIV__)\ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_PLLSRC|RCC_CFGR_PLLMUL|RCC_CFGR_PLLDIV),((__RCC_PLLSOURCE__) | (__PLLMUL__) | (__PLLDIV__))) + +/** @brief Get oscillator clock selected as PLL input clock + * @retval The clock source used for PLL entry. The returned value can be one + * of the following: + * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL input clock + * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL input clock + */ +#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLSRC))) + +/** + * @} + */ + +/** @defgroup RCC_Get_Clock_source Get Clock source + * @{ + */ + +/** + * @brief Macro to configure the system clock source. + * @param __SYSCLKSOURCE__ specifies the system clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_SYSCLKSOURCE_MSI MSI oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_HSI HSI oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_HSE HSE oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_PLLCLK PLL output is used as system clock source. + */ +#define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__)) + +/** @brief Macro to get the clock source used as system clock. + * @retval The clock source used as system clock. The returned value can be one + * of the following: + * @arg @ref RCC_SYSCLKSOURCE_STATUS_MSI MSI used as system clock + * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSI HSI used as system clock + * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSE HSE used as system clock + * @arg @ref RCC_SYSCLKSOURCE_STATUS_PLLCLK PLL used as system clock + */ +#define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(READ_BIT(RCC->CFGR,RCC_CFGR_SWS))) + +/** + * @} + */ + +/** @defgroup RCCEx_MCOx_Clock_Config RCC Extended MCOx Clock Config + * @{ + */ + +/** @brief Macro to configure the MCO clock. + * @param __MCOCLKSOURCE__ specifies the MCO clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO1SOURCE_NOCLOCK No clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_SYSCLK System Clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_HSI HSI oscillator clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_MSI MSI oscillator clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_HSE HSE oscillator clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_PLLCLK PLL clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO clock + * @param __MCODIV__ specifies the MCO clock prescaler. + * This parameter can be one of the following values: + * @arg @ref RCC_MCODIV_1 MCO clock source is divided by 1 + * @arg @ref RCC_MCODIV_2 MCO clock source is divided by 2 + * @arg @ref RCC_MCODIV_4 MCO clock source is divided by 4 + * @arg @ref RCC_MCODIV_8 MCO clock source is divided by 8 + * @arg @ref RCC_MCODIV_16 MCO clock source is divided by 16 + */ +#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) + +/** + * @} + */ + + /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration + * @{ + */ + +/** @brief Macro to configure the RTC clock (RTCCLK). + * @note As the RTC clock configuration bits are in the Backup domain and write + * access is denied to this domain after reset, you have to enable write + * access using the Power Backup Access macro before to configure + * the RTC clock source (to be done once after reset). + * @note Once the RTC clock is configured it cannot be changed unless the + * Backup domain is reset using @ref __HAL_RCC_BACKUPRESET_FORCE() macro, or by + * a Power On Reset (POR). + * @note RTC prescaler cannot be modified if HSE is enabled (HSEON = 1). + * + * @param __RTC_CLKSOURCE__ specifies the RTC clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV2 HSE divided by 2 selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV4 HSE divided by 4 selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV8 HSE divided by 8 selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV16 HSE divided by 16 selected as RTC clock + * @note If the LSE or LSI is used as RTC clock source, the RTC continues to + * work in STOP and STANDBY modes, and can be used as wakeup source. + * However, when the HSE clock is used as RTC clock source, the RTC + * cannot be used in STOP and STANDBY modes. + * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as + * RTC clock source). + */ +#define __HAL_RCC_RTC_CLKPRESCALER(__RTC_CLKSOURCE__) do { \ + if(((__RTC_CLKSOURCE__) & RCC_CSR_RTCSEL_HSE) == RCC_CSR_RTCSEL_HSE) \ + { \ + MODIFY_REG(RCC->CR, RCC_CR_RTCPRE, ((__RTC_CLKSOURCE__) & RCC_CR_RTCPRE)); \ + } \ + } while (0U) + +#define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) do { \ + __HAL_RCC_RTC_CLKPRESCALER(__RTC_CLKSOURCE__); \ + RCC->CSR |= ((__RTC_CLKSOURCE__) & RCC_CSR_RTCSEL); \ + } while (0U) + +/** @brief Macro to get the RTC clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX HSE divided by X selected as RTC clock (X can be retrieved thanks to @ref __HAL_RCC_GET_RTC_HSE_PRESCALER() + */ +#define __HAL_RCC_GET_RTC_SOURCE() (READ_BIT(RCC->CSR, RCC_CSR_RTCSEL)) + +/** + * @brief Get the RTC and LCD HSE clock divider (RTCCLK / LCDCLK). + * + * @retval Returned value can be one of the following values: + * @arg @ref RCC_RTC_HSE_DIV_2 HSE divided by 2 selected as RTC clock + * @arg @ref RCC_RTC_HSE_DIV_4 HSE divided by 4 selected as RTC clock + * @arg @ref RCC_RTC_HSE_DIV_8 HSE divided by 8 selected as RTC clock + * @arg @ref RCC_RTC_HSE_DIV_16 HSE divided by 16 selected as RTC clock + * + */ +#define __HAL_RCC_GET_RTC_HSE_PRESCALER() ((uint32_t)(READ_BIT(RCC->CR, RCC_CR_RTCPRE))) + +/** @brief Macro to enable the the RTC clock. + * @note These macros must be used only after the RTC clock source was selected. + */ +#define __HAL_RCC_RTC_ENABLE() (*(__IO uint32_t *) RCC_CSR_RTCEN_BB = ENABLE) + +/** @brief Macro to disable the the RTC clock. + * @note These macros must be used only after the RTC clock source was selected. + */ +#define __HAL_RCC_RTC_DISABLE() (*(__IO uint32_t *) RCC_CSR_RTCEN_BB = DISABLE) + +/** @brief Macro to force the Backup domain reset. + * @note This function resets the RTC peripheral (including the backup registers) + * and the RTC clock source selection in RCC_CSR register. + * @note The BKPSRAM is not affected by this reset. + */ +#define __HAL_RCC_BACKUPRESET_FORCE() (*(__IO uint32_t *) RCC_CSR_RTCRST_BB = ENABLE) + +/** @brief Macros to release the Backup domain reset. + */ +#define __HAL_RCC_BACKUPRESET_RELEASE() (*(__IO uint32_t *) RCC_CSR_RTCRST_BB = DISABLE) + +/** + * @} + */ + +/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management + * @brief macros to manage the specified RCC Flags and interrupts. + * @{ + */ + +/** @brief Enable RCC interrupt. + * @param __INTERRUPT__ specifies the RCC interrupt sources to be enabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY main PLL ready interrupt + * @arg @ref RCC_IT_MSIRDY MSI ready interrupt + * @arg @ref RCC_IT_LSECSS LSE CSS interrupt (not available for STM32L100xB || STM32L151xB || STM32L152xB devices) + */ +#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS |= (__INTERRUPT__)) + +/** @brief Disable RCC interrupt. + * @param __INTERRUPT__ specifies the RCC interrupt sources to be disabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY main PLL ready interrupt + * @arg @ref RCC_IT_MSIRDY MSI ready interrupt + * @arg @ref RCC_IT_LSECSS LSE CSS interrupt (not available for STM32L100xB || STM32L151xB || STM32L152xB devices) + */ +#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS &= (uint8_t)(~(__INTERRUPT__))) + +/** @brief Clear the RCC's interrupt pending bits. + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt. + * @arg @ref RCC_IT_LSERDY LSE ready interrupt. + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt. + * @arg @ref RCC_IT_HSERDY HSE ready interrupt. + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt. + * @arg @ref RCC_IT_MSIRDY MSI ready interrupt + * @arg @ref RCC_IT_LSECSS LSE CSS interrupt (not available for STM32L100xB || STM32L151xB || STM32L152xB devices) + * @arg @ref RCC_IT_CSS Clock Security System interrupt + */ +#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE2_ADDRESS = (__INTERRUPT__)) + +/** @brief Check the RCC's interrupt has occurred or not. + * @param __INTERRUPT__ specifies the RCC interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt. + * @arg @ref RCC_IT_LSERDY LSE ready interrupt. + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt. + * @arg @ref RCC_IT_HSERDY HSE ready interrupt. + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt. + * @arg @ref RCC_IT_MSIRDY MSI ready interrupt + * @arg @ref RCC_IT_LSECSS LSE CSS interrupt (not available for STM32L100xB || STM32L151xB || STM32L152xB devices) + * @arg @ref RCC_IT_CSS Clock Security System interrupt + * @retval The new state of __INTERRUPT__ (TRUE or FALSE). + */ +#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIR & (__INTERRUPT__)) == (__INTERRUPT__)) + +/** @brief Set RMVF bit to clear the reset flags. + * The reset flags are RCC_FLAG_PINRST, RCC_FLAG_PORRST, RCC_FLAG_SFTRST, + * RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST, RCC_FLAG_LPWRRST + */ +#define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF) + +/** @brief Check RCC flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready. + * @arg @ref RCC_FLAG_MSIRDY MSI oscillator clock ready. + * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready. + * @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready. + * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready. + * @arg @ref RCC_FLAG_LSECSS CSS on LSE failure Detection (*) + * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready. + * @arg @ref RCC_FLAG_OBLRST Option Byte Load reset + * @arg @ref RCC_FLAG_PINRST Pin reset. + * @arg @ref RCC_FLAG_PORRST POR/PDR reset. + * @arg @ref RCC_FLAG_SFTRST Software reset. + * @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset. + * @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset. + * @arg @ref RCC_FLAG_LPWRRST Low Power reset. + * @note (*) This bit is available in high and medium+ density devices only. + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_RCC_GET_FLAG(__FLAG__) (((((__FLAG__) >> 5U) == CR_REG_INDEX)? RCC->CR :RCC->CSR) & (1U << ((__FLAG__) & RCC_FLAG_MASK))) + +/** + * @} + */ + +/** + * @} + */ + +/* Include RCC HAL Extension module */ +#include "stm32l1xx_hal_rcc_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCC_Exported_Functions + * @{ + */ + +/** @addtogroup RCC_Exported_Functions_Group1 + * @{ + */ + +/* Initialization and de-initialization functions ******************************/ +HAL_StatusTypeDef HAL_RCC_DeInit(void); +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); + +/** + * @} + */ + +/** @addtogroup RCC_Exported_Functions_Group2 + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv); +void HAL_RCC_EnableCSS(void); +/* CSS NMI IRQ handler */ +void HAL_RCC_NMI_IRQHandler(void); +/* User Callbacks in non blocking mode (IT mode) */ +void HAL_RCC_CSSCallback(void); +void HAL_RCC_DisableCSS(void); +uint32_t HAL_RCC_GetSysClockFreq(void); +uint32_t HAL_RCC_GetHCLKFreq(void); +uint32_t HAL_RCC_GetPCLK1Freq(void); +uint32_t HAL_RCC_GetPCLK2Freq(void); +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_RCC_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h new file mode 100644 index 0000000..7339d6d --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_rcc_ex.h @@ -0,0 +1,1027 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_rcc_ex.h + * @author MCD Application Team + * @brief Header file of RCC HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_HAL_RCC_EX_H +#define __STM32L1xx_HAL_RCC_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCCEx + * @{ + */ + +/** @addtogroup RCCEx_Private_Constants + * @{ + */ + +#if defined(STM32L100xBA) || defined(STM32L151xBA) || defined(STM32L152xBA)\ + || defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX)\ + || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +/* Alias word address of LSECSSON bit */ +#define LSECSSON_BITNUMBER RCC_CSR_LSECSSON_Pos +#define CSR_LSECSSON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (LSECSSON_BITNUMBER * 4U))) + +#endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX*/ + +/** + * @} + */ + +/** @addtogroup RCCEx_Private_Macros + * @{ + */ +#if defined(LCD) + +#define IS_RCC_PERIPHCLOCK(__CLK__) ((RCC_PERIPHCLK_RTC <= (__CLK__)) && ((__CLK__) <= RCC_PERIPHCLK_LCD)) + +#else /* Not LCD LINE */ + +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) == RCC_PERIPHCLK_RTC) + +#endif /* LCD */ + +/** + * @} + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Types RCCEx Exported Types + * @{ + */ + +/** + * @brief RCC extended clocks structure definition + */ +typedef struct +{ + uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured. + This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */ + + uint32_t RTCClockSelection; /*!< specifies the RTC clock source. + This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */ + +#if defined(LCD) + + uint32_t LCDClockSelection; /*!< specifies the LCD clock source. + This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */ + +#endif /* LCD */ +} RCC_PeriphCLKInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants + * @{ + */ + +/** @defgroup RCCEx_Periph_Clock_Selection RCCEx Periph Clock Selection + * @{ + */ +#define RCC_PERIPHCLK_RTC (0x00000001U) + +#if defined(LCD) + +#define RCC_PERIPHCLK_LCD (0x00000002U) + +#endif /* LCD */ + +/** + * @} + */ + +#if defined(RCC_LSECSS_SUPPORT) +/** @defgroup RCCEx_EXTI_LINE_LSECSS RCC LSE CSS external interrupt line + * @{ + */ +#define RCC_EXTI_LINE_LSECSS (EXTI_IMR_IM19) /*!< External interrupt line 19 connected to the LSE CSS EXTI Line */ +/** + * @} + */ +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros + * @{ + */ + +/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable RCCEx_Peripheral_Clock_Enable_Disable + * @brief Enables or disables the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\ + || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOEEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOEEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOE_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOEEN)) + +#endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOF_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_GPIOG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOGEN);\ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOF_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOFEN)) +#define __HAL_RCC_GPIOG_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOGEN)) + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_DMA2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_DMA2_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_DMA2EN)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_AES_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_AESEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_AES_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_AESEN)) + +#endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_FSMC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_FSMC_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_FSMCEN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\ + || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\ + || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_LCD_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_LCD_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_LCDEN)) + +#endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +/** @brief Enables or disables the Low Speed APB (APB1) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_TIM5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_TIM5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN)) + +#endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_SPI3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_SPI3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_UART4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_UART5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_UART4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN)) +#define __HAL_RCC_UART5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || (...) || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE)\ + || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\ + || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC) + +#define __HAL_RCC_OPAMP_CLK_ENABLE() __HAL_RCC_COMP_CLK_ENABLE() /* Peripherals COMP and OPAMP share the same clock domain */ +#define __HAL_RCC_OPAMP_CLK_DISABLE() __HAL_RCC_COMP_CLK_DISABLE() /* Peripherals COMP and OPAMP share the same clock domain */ + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || (...) || STM32L162xC || STM32L152xC || STM32L151xC */ + +/** @brief Enables or disables the High Speed APB (APB2) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_SDIO_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDIOEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDIOEN);\ + UNUSED(tmpreg); \ + } while(0U) +#define __HAL_RCC_SDIO_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDIOEN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + + +/** @defgroup RCCEx_Force_Release_Peripheral_Reset RCCEx Force Release Peripheral Reset + * @brief Forces or releases AHB peripheral reset. + * @{ + */ +#if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\ + || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOE_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOERST)) +#define __HAL_RCC_GPIOE_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOERST)) + +#endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOF_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOFRST)) +#define __HAL_RCC_GPIOG_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOGRST)) + +#define __HAL_RCC_GPIOF_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOFRST)) +#define __HAL_RCC_GPIOG_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOGRST)) + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_DMA2_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_DMA2RST)) +#define __HAL_RCC_DMA2_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_DMA2RST)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_AES_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_AESRST)) +#define __HAL_RCC_AES_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_AESRST)) + +#endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_FSMC_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_FSMCRST)) +#define __HAL_RCC_FSMC_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_FSMCRST)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\ + || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\ + || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_LCD_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_LCDRST)) +#define __HAL_RCC_LCD_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_LCDRST)) + +#endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +/** @brief Forces or releases APB1 peripheral reset. + */ +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_TIM5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST)) +#define __HAL_RCC_TIM5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST)) + +#endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_SPI3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST)) +#define __HAL_RCC_SPI3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_UART4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST)) +#define __HAL_RCC_UART5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST)) + +#define __HAL_RCC_UART4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST)) +#define __HAL_RCC_UART5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\ + || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC) + +#define __HAL_RCC_OPAMP_FORCE_RESET() __HAL_RCC_COMP_FORCE_RESET() /* Peripherals COMP and OPAMP share the same clock domain */ +#define __HAL_RCC_OPAMP_RELEASE_RESET() __HAL_RCC_COMP_RELEASE_RESET() /* Peripherals COMP and OPAMP share the same clock domain */ + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */ + +/** @brief Forces or releases APB2 peripheral reset. + */ +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_SDIO_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDIORST)) +#define __HAL_RCC_SDIO_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDIORST)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + +/** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable RCCEx Peripheral Clock Sleep Enable Disable + * @brief Enables or disables the AHB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\ + || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOELPEN)) +#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOELPEN)) + +#endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOFLPEN)) +#define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOGLPEN)) + +#define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOFLPEN)) +#define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOGLPEN)) + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_DMA2LPEN)) +#define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_DMA2LPEN)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_AES_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_AESLPEN)) +#define __HAL_RCC_AES_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_AESLPEN)) + +#endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_FSMC_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_FSMCLPEN)) +#define __HAL_RCC_FSMC_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_FSMCLPEN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\ + || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\ + || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_LCDLPEN)) +#define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_LCDLPEN)) + +#endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +/** @brief Enables or disables the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM5LPEN)) +#define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM5LPEN)) + +#endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI3LPEN)) +#define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI3LPEN)) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART4LPEN)) +#define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART5LPEN)) + +#define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART4LPEN)) +#define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART5LPEN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\ + || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC) + +#define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE() __HAL_RCC_COMP_CLK_SLEEP_ENABLE() /* Peripherals COMP and OPAMP share the same clock domain */ +#define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE() __HAL_RCC_COMP_CLK_SLEEP_DISABLE() /* Peripherals COMP and OPAMP share the same clock domain */ + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */ + +/** @brief Enables or disables the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDIOLPEN)) +#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDIOLPEN)) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + +/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable_Status Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\ + || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOE_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOEEN)) != 0U) +#define __HAL_RCC_GPIOE_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOEEN)) == 0U) + +#endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOF_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOFEN)) != 0U) +#define __HAL_RCC_GPIOG_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOGEN)) != 0U) +#define __HAL_RCC_GPIOF_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOFEN)) == 0U) +#define __HAL_RCC_GPIOG_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOGEN)) == 0U) + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_DMA2_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) != 0U) +#define __HAL_RCC_DMA2_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) == 0U) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_AES_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_AESEN)) != 0U) +#define __HAL_RCC_AES_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_AESEN)) == 0U) + +#endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_FSMC_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) != 0U) +#define __HAL_RCC_FSMC_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\ + || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\ + || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_LCD_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LCDEN)) != 0U) +#define __HAL_RCC_LCD_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LCDEN)) == 0U) + +#endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_TIM5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != 0U) +#define __HAL_RCC_TIM5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == 0U) + +#endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_SPI3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != 0U) +#define __HAL_RCC_SPI3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == 0U) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_UART4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != 0U) +#define __HAL_RCC_UART5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != 0U) +#define __HAL_RCC_UART4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == 0U) +#define __HAL_RCC_UART5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\ + || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC) + +#define __HAL_RCC_OPAMP_IS_CLK_ENABLED() __HAL_RCC_COMP_IS_CLK_ENABLED() +#define __HAL_RCC_OPAMP_IS_CLK_DISABLED() __HAL_RCC_COMP_IS_CLK_DISABLED() + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_SDIO_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDIOEN)) != 0U) +#define __HAL_RCC_SDIO_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDIOEN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + +/** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable_Status Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\ + || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOELPEN)) != 0U) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOELPEN)) == 0U) + +#endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOFLPEN)) != 0U) +#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOGLPEN)) != 0U) +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOFLPEN)) == 0U) +#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOGLPEN)) == 0U) + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA2LPEN)) != 0U) +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA2LPEN)) == 0U) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_AESLPEN)) != 0U) +#define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_AESLPEN)) == 0U) + +#endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_FSMC_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FSMCLPEN)) != 0U) +#define __HAL_RCC_FSMC_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FSMCLPEN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +#if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\ + || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\ + || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LCDLPEN)) != 0U) +#define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LCDLPEN)) == 0U) + +#endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) != 0U) +#define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) == 0U) + +#endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\ + || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\ + || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\ + || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\ + || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) != 0U) +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) == 0U) + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX) + +#define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) != 0U) +#define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) != 0U) +#define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) == 0U) +#define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */ + +#if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\ + || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\ + || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\ + || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC) + +#define __HAL_RCC_OPAMP_IS_CLK_SLEEP_ENABLED() __HAL_RCC_COMP_IS_CLK_SLEEP_ENABLED() +#define __HAL_RCC_OPAMP_IS_CLK_SLEEP_DISABLED() __HAL_RCC_COMP_IS_CLK_SLEEP_DISABLED() + +#endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */ + +#if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD) + +#define __HAL_RCC_SDIO_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDIOLPEN)) != 0U) +#define __HAL_RCC_SDIO_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDIOLPEN)) == 0U) + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD */ + +/** + * @} + */ + + +#if defined(RCC_LSECSS_SUPPORT) + +/** + * @brief Enable interrupt on RCC LSE CSS EXTI Line 19. + * @retval None + */ +#define __HAL_RCC_LSECSS_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS) + +/** + * @brief Disable interrupt on RCC LSE CSS EXTI Line 19. + * @retval None + */ +#define __HAL_RCC_LSECSS_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS) + +/** + * @brief Enable event on RCC LSE CSS EXTI Line 19. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS) + +/** + * @brief Disable event on RCC LSE CSS EXTI Line 19. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS) + + +/** + * @brief RCC LSE CSS EXTI line configuration: set falling edge trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS) + + +/** + * @brief Disable the RCC LSE CSS Extended Interrupt Falling Trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS) + + +/** + * @brief RCC LSE CSS EXTI line configuration: set rising edge trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS) + +/** + * @brief Disable the RCC LSE CSS Extended Interrupt Rising Trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS) + +/** + * @brief RCC LSE CSS EXTI line configuration: set rising & falling edge trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE(); \ + __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Disable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not. + * @retval EXTI RCC LSE CSS Line Status. + */ +#define __HAL_RCC_LSECSS_EXTI_GET_FLAG() (EXTI->PR & (RCC_EXTI_LINE_LSECSS)) + +/** + * @brief Clear the RCC LSE CSS EXTI flag. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_CLEAR_FLAG() (EXTI->PR = (RCC_EXTI_LINE_LSECSS)) + +/** + * @brief Generate a Software interrupt on selected EXTI line. + * @retval None. + */ +#define __HAL_RCC_LSECSS_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER, RCC_EXTI_LINE_LSECSS) + +#endif /* RCC_LSECSS_SUPPORT */ + +#if defined(LCD) + +/** @defgroup RCCEx_LCD_Configuration LCD Configuration + * @brief Macros to configure clock source of LCD peripherals. + * @{ + */ + +/** @brief Macro to configures LCD clock (LCDCLK). + * @note LCD and RTC use the same configuration + * @note LCD can however be used in the Stop low power mode if the LSE or LSI is used as the + * LCD clock source. + * + * @param __LCD_CLKSOURCE__ specifies the LCD clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as LCD clock + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as LCD clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV2 HSE divided by 2 selected as LCD clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV4 HSE divided by 4 selected as LCD clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV8 HSE divided by 8 selected as LCD clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV16 HSE divided by 16 selected as LCD clock + */ +#define __HAL_RCC_LCD_CONFIG(__LCD_CLKSOURCE__) __HAL_RCC_RTC_CONFIG(__LCD_CLKSOURCE__) + +/** @brief Macro to get the LCD clock source. + */ +#define __HAL_RCC_GET_LCD_SOURCE() __HAL_RCC_GET_RTC_SOURCE() + +/** @brief Macro to get the LCD clock pre-scaler. + */ +#define __HAL_RCC_GET_LCD_HSE_PRESCALER() __HAL_RCC_GET_RTC_HSE_PRESCALER() + +/** + * @} + */ + +#endif /* LCD */ + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCCEx_Exported_Functions + * @{ + */ + +/** @addtogroup RCCEx_Exported_Functions_Group1 + * @{ + */ + +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk); + +#if defined(RCC_LSECSS_SUPPORT) + +void HAL_RCCEx_EnableLSECSS(void); +void HAL_RCCEx_DisableLSECSS(void); +void HAL_RCCEx_EnableLSECSS_IT(void); +void HAL_RCCEx_LSECSS_IRQHandler(void); +void HAL_RCCEx_LSECSS_Callback(void); + +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_HAL_RCC_EX_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h new file mode 100644 index 0000000..7b01759 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_hal_spi.h @@ -0,0 +1,749 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_spi.h + * @author MCD Application Team + * @brief Header file of SPI HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L1xx_HAL_SPI_H +#define STM32L1xx_HAL_SPI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal_def.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup SPI + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup SPI_Exported_Types SPI Exported Types + * @{ + */ + +/** + * @brief SPI Configuration Structure definition + */ +typedef struct +{ + uint32_t Mode; /*!< Specifies the SPI operating mode. + This parameter can be a value of @ref SPI_Mode */ + + uint32_t Direction; /*!< Specifies the SPI bidirectional mode state. + This parameter can be a value of @ref SPI_Direction */ + + uint32_t DataSize; /*!< Specifies the SPI data size. + This parameter can be a value of @ref SPI_Data_Size */ + + uint32_t CLKPolarity; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_Clock_Polarity */ + + uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_Clock_Phase */ + + uint32_t NSS; /*!< Specifies whether the NSS signal is managed by + hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_Slave_Select_management */ + + uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be + used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_BaudRate_Prescaler + @note The communication clock is derived from the master + clock. The slave clock does not need to be set. */ + + uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_MSB_LSB_transmission */ + + uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not. + This parameter can be a value of @ref SPI_TI_mode */ + + uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + This parameter can be a value of @ref SPI_CRC_Calculation */ + + uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation. + This parameter must be an odd number between Min_Data = 1 and Max_Data = 65535 */ +} SPI_InitTypeDef; + +/** + * @brief HAL SPI State structure definition + */ +typedef enum +{ + HAL_SPI_STATE_RESET = 0x00U, /*!< Peripheral not Initialized */ + HAL_SPI_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ + HAL_SPI_STATE_BUSY = 0x02U, /*!< an internal process is ongoing */ + HAL_SPI_STATE_BUSY_TX = 0x03U, /*!< Data Transmission process is ongoing */ + HAL_SPI_STATE_BUSY_RX = 0x04U, /*!< Data Reception process is ongoing */ + HAL_SPI_STATE_BUSY_TX_RX = 0x05U, /*!< Data Transmission and Reception process is ongoing */ + HAL_SPI_STATE_ERROR = 0x06U, /*!< SPI error state */ + HAL_SPI_STATE_ABORT = 0x07U /*!< SPI abort is ongoing */ +} HAL_SPI_StateTypeDef; + +/** + * @brief SPI handle Structure definition + */ +typedef struct __SPI_HandleTypeDef +{ + SPI_TypeDef *Instance; /*!< SPI registers base address */ + + SPI_InitTypeDef Init; /*!< SPI communication parameters */ + + const uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */ + + uint16_t TxXferSize; /*!< SPI Tx Transfer size */ + + __IO uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */ + + uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */ + + uint16_t RxXferSize; /*!< SPI Rx Transfer size */ + + __IO uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */ + + void (*RxISR)(struct __SPI_HandleTypeDef *hspi); /*!< function pointer on Rx ISR */ + + void (*TxISR)(struct __SPI_HandleTypeDef *hspi); /*!< function pointer on Tx ISR */ + + DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA Handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA Handle parameters */ + + HAL_LockTypeDef Lock; /*!< Locking object */ + + __IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */ + + __IO uint32_t ErrorCode; /*!< SPI Error code */ + +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + void (* TxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Tx Completed callback */ + void (* RxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Rx Completed callback */ + void (* TxRxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI TxRx Completed callback */ + void (* TxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Tx Half Completed callback */ + void (* RxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Rx Half Completed callback */ + void (* TxRxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI TxRx Half Completed callback */ + void (* ErrorCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Error callback */ + void (* AbortCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Abort callback */ + void (* MspInitCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Msp Init callback */ + void (* MspDeInitCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Msp DeInit callback */ + +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} SPI_HandleTypeDef; + +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) +/** + * @brief HAL SPI Callback ID enumeration definition + */ +typedef enum +{ + HAL_SPI_TX_COMPLETE_CB_ID = 0x00U, /*!< SPI Tx Completed callback ID */ + HAL_SPI_RX_COMPLETE_CB_ID = 0x01U, /*!< SPI Rx Completed callback ID */ + HAL_SPI_TX_RX_COMPLETE_CB_ID = 0x02U, /*!< SPI TxRx Completed callback ID */ + HAL_SPI_TX_HALF_COMPLETE_CB_ID = 0x03U, /*!< SPI Tx Half Completed callback ID */ + HAL_SPI_RX_HALF_COMPLETE_CB_ID = 0x04U, /*!< SPI Rx Half Completed callback ID */ + HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID = 0x05U, /*!< SPI TxRx Half Completed callback ID */ + HAL_SPI_ERROR_CB_ID = 0x06U, /*!< SPI Error callback ID */ + HAL_SPI_ABORT_CB_ID = 0x07U, /*!< SPI Abort callback ID */ + HAL_SPI_MSPINIT_CB_ID = 0x08U, /*!< SPI Msp Init callback ID */ + HAL_SPI_MSPDEINIT_CB_ID = 0x09U /*!< SPI Msp DeInit callback ID */ + +} HAL_SPI_CallbackIDTypeDef; + +/** + * @brief HAL SPI Callback pointer definition + */ +typedef void (*pSPI_CallbackTypeDef)(SPI_HandleTypeDef *hspi); /*!< pointer to an SPI callback function */ + +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SPI_Exported_Constants SPI Exported Constants + * @{ + */ + +/** @defgroup SPI_Error_Code SPI Error Code + * @{ + */ +#define HAL_SPI_ERROR_NONE (0x00000000U) /*!< No error */ +#define HAL_SPI_ERROR_MODF (0x00000001U) /*!< MODF error */ +#define HAL_SPI_ERROR_CRC (0x00000002U) /*!< CRC error */ +#define HAL_SPI_ERROR_OVR (0x00000004U) /*!< OVR error */ +#define HAL_SPI_ERROR_FRE (0x00000008U) /*!< FRE error */ +#define HAL_SPI_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ +#define HAL_SPI_ERROR_FLAG (0x00000020U) /*!< Error on RXNE/TXE/BSY Flag */ +#define HAL_SPI_ERROR_ABORT (0x00000040U) /*!< Error during SPI Abort procedure */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) +#define HAL_SPI_ERROR_INVALID_CALLBACK (0x00000080U) /*!< Invalid Callback error */ +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @defgroup SPI_Mode SPI Mode + * @{ + */ +#define SPI_MODE_SLAVE (0x00000000U) +#define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) +/** + * @} + */ + +/** @defgroup SPI_Direction SPI Direction Mode + * @{ + */ +#define SPI_DIRECTION_2LINES (0x00000000U) +#define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY +#define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE +/** + * @} + */ + +/** @defgroup SPI_Data_Size SPI Data Size + * @{ + */ +#define SPI_DATASIZE_8BIT (0x00000000U) +#define SPI_DATASIZE_16BIT SPI_CR1_DFF +/** + * @} + */ + +/** @defgroup SPI_Clock_Polarity SPI Clock Polarity + * @{ + */ +#define SPI_POLARITY_LOW (0x00000000U) +#define SPI_POLARITY_HIGH SPI_CR1_CPOL +/** + * @} + */ + +/** @defgroup SPI_Clock_Phase SPI Clock Phase + * @{ + */ +#define SPI_PHASE_1EDGE (0x00000000U) +#define SPI_PHASE_2EDGE SPI_CR1_CPHA +/** + * @} + */ + +/** @defgroup SPI_Slave_Select_management SPI Slave Select Management + * @{ + */ +#define SPI_NSS_SOFT SPI_CR1_SSM +#define SPI_NSS_HARD_INPUT (0x00000000U) +#define SPI_NSS_HARD_OUTPUT (SPI_CR2_SSOE << 16U) +/** + * @} + */ + +/** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler + * @{ + */ +#define SPI_BAUDRATEPRESCALER_2 (0x00000000U) +#define SPI_BAUDRATEPRESCALER_4 (SPI_CR1_BR_0) +#define SPI_BAUDRATEPRESCALER_8 (SPI_CR1_BR_1) +#define SPI_BAUDRATEPRESCALER_16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) +#define SPI_BAUDRATEPRESCALER_32 (SPI_CR1_BR_2) +#define SPI_BAUDRATEPRESCALER_64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) +#define SPI_BAUDRATEPRESCALER_128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) +#define SPI_BAUDRATEPRESCALER_256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) +/** + * @} + */ + +/** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB Transmission + * @{ + */ +#define SPI_FIRSTBIT_MSB (0x00000000U) +#define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST +/** + * @} + */ + +/** @defgroup SPI_TI_mode SPI TI Mode + * @brief SPI TI Mode not supported for Category 1 and 2 + * @{ + */ +#define SPI_TIMODE_DISABLE (0x00000000U) +#if defined(SPI_CR2_FRF) +#define SPI_TIMODE_ENABLE SPI_CR2_FRF +#endif /* SPI_CR2_FRF */ +/** + * @} + */ + +/** @defgroup SPI_CRC_Calculation SPI CRC Calculation + * @{ + */ +#define SPI_CRCCALCULATION_DISABLE (0x00000000U) +#define SPI_CRCCALCULATION_ENABLE SPI_CR1_CRCEN +/** + * @} + */ + +/** @defgroup SPI_Interrupt_definition SPI Interrupt Definition + * @{ + */ +#define SPI_IT_TXE SPI_CR2_TXEIE +#define SPI_IT_RXNE SPI_CR2_RXNEIE +#define SPI_IT_ERR SPI_CR2_ERRIE +/** + * @} + */ + +/** @defgroup SPI_Flags_definition SPI Flags Definition + * @{ + */ +#define SPI_FLAG_RXNE SPI_SR_RXNE /* SPI status flag: Rx buffer not empty flag */ +#define SPI_FLAG_TXE SPI_SR_TXE /* SPI status flag: Tx buffer empty flag */ +#define SPI_FLAG_BSY SPI_SR_BSY /* SPI status flag: Busy flag */ +#define SPI_FLAG_CRCERR SPI_SR_CRCERR /* SPI Error flag: CRC error flag */ +#define SPI_FLAG_MODF SPI_SR_MODF /* SPI Error flag: Mode fault flag */ +#define SPI_FLAG_OVR SPI_SR_OVR /* SPI Error flag: Overrun flag */ +#if defined(SPI_CR2_FRF) +#define SPI_FLAG_FRE SPI_SR_FRE /* SPI Error flag: TI mode frame format error flag */ +#define SPI_FLAG_MASK (SPI_SR_RXNE | SPI_SR_TXE | SPI_SR_BSY | SPI_SR_CRCERR\ + | SPI_SR_MODF | SPI_SR_OVR | SPI_SR_FRE) +#else +#define SPI_FLAG_MASK (SPI_SR_RXNE | SPI_SR_TXE | SPI_SR_BSY\ + | SPI_SR_CRCERR | SPI_SR_MODF | SPI_SR_OVR) +#endif /* SPI_CR2_FRF */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup SPI_Exported_Macros SPI Exported Macros + * @{ + */ + +/** @brief Reset SPI handle state. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) +#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) \ + do{ \ + (__HANDLE__)->State = HAL_SPI_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET) +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + +/** @brief Enable the specified SPI interrupts. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @param __INTERRUPT__ specifies the interrupt source to enable. + * This parameter can be one of the following values: + * @arg SPI_IT_TXE: Tx buffer empty interrupt enable + * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable + * @arg SPI_IT_ERR: Error interrupt enable + * @retval None + */ +#define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__)) + +/** @brief Disable the specified SPI interrupts. + * @param __HANDLE__ specifies the SPI handle. + * This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral. + * @param __INTERRUPT__ specifies the interrupt source to disable. + * This parameter can be one of the following values: + * @arg SPI_IT_TXE: Tx buffer empty interrupt enable + * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable + * @arg SPI_IT_ERR: Error interrupt enable + * @retval None + */ +#define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__)) + +/** @brief Check whether the specified SPI interrupt source is enabled or not. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @param __INTERRUPT__ specifies the SPI interrupt source to check. + * This parameter can be one of the following values: + * @arg SPI_IT_TXE: Tx buffer empty interrupt enable + * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable + * @arg SPI_IT_ERR: Error interrupt enable + * @retval The new state of __IT__ (TRUE or FALSE). + */ +#define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2\ + & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Check whether the specified SPI flag is set or not. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg SPI_FLAG_RXNE: Receive buffer not empty flag + * @arg SPI_FLAG_TXE: Transmit buffer empty flag + * @arg SPI_FLAG_CRCERR: CRC error flag + * @arg SPI_FLAG_MODF: Mode fault flag + * @arg SPI_FLAG_OVR: Overrun flag + * @arg SPI_FLAG_BSY: Busy flag + * @arg SPI_FLAG_FRE: Frame format error flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__)) + +/** @brief Clear the SPI CRCERR pending flag. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = (uint16_t)(~SPI_FLAG_CRCERR)) + +/** @brief Clear the SPI MODF pending flag. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) \ + do{ \ + __IO uint32_t tmpreg_modf = 0x00U; \ + tmpreg_modf = (__HANDLE__)->Instance->SR; \ + CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE); \ + UNUSED(tmpreg_modf); \ + } while(0U) + +/** @brief Clear the SPI OVR pending flag. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) \ + do{ \ + __IO uint32_t tmpreg_ovr = 0x00U; \ + tmpreg_ovr = (__HANDLE__)->Instance->DR; \ + tmpreg_ovr = (__HANDLE__)->Instance->SR; \ + UNUSED(tmpreg_ovr); \ + } while(0U) + +/** @brief Clear the SPI FRE pending flag. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__) \ + do{ \ + __IO uint32_t tmpreg_fre = 0x00U; \ + tmpreg_fre = (__HANDLE__)->Instance->SR; \ + UNUSED(tmpreg_fre); \ + } while(0U) + +/** @brief Enable the SPI peripheral. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE) + +/** @brief Disable the SPI peripheral. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define __HAL_SPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE) + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup SPI_Private_Macros SPI Private Macros + * @{ + */ + +/** @brief Set the SPI transmit-only mode. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define SPI_1LINE_TX(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE) + +/** @brief Set the SPI receive-only mode. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define SPI_1LINE_RX(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE) + +/** @brief Reset the CRC calculation of the SPI. + * @param __HANDLE__ specifies the SPI Handle. + * This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral. + * @retval None + */ +#define SPI_RESET_CRC(__HANDLE__) \ + do{ \ + CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN); \ + SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN); \ + } while(0U) + +/** @brief Check whether the specified SPI flag is set or not. + * @param __SR__ copy of SPI SR register. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg SPI_FLAG_RXNE: Receive buffer not empty flag + * @arg SPI_FLAG_TXE: Transmit buffer empty flag + * @arg SPI_FLAG_CRCERR: CRC error flag + * @arg SPI_FLAG_MODF: Mode fault flag + * @arg SPI_FLAG_OVR: Overrun flag + * @arg SPI_FLAG_BSY: Busy flag + * @arg SPI_FLAG_FRE: Frame format error flag + * @retval SET or RESET. + */ +#define SPI_CHECK_FLAG(__SR__, __FLAG__) ((((__SR__) & ((__FLAG__) & SPI_FLAG_MASK)) == \ + ((__FLAG__) & SPI_FLAG_MASK)) ? SET : RESET) + +/** @brief Check whether the specified SPI Interrupt is set or not. + * @param __CR2__ copy of SPI CR2 register. + * @param __INTERRUPT__ specifies the SPI interrupt source to check. + * This parameter can be one of the following values: + * @arg SPI_IT_TXE: Tx buffer empty interrupt enable + * @arg SPI_IT_RXNE: RX buffer not empty interrupt enable + * @arg SPI_IT_ERR: Error interrupt enable + * @retval SET or RESET. + */ +#define SPI_CHECK_IT_SOURCE(__CR2__, __INTERRUPT__) ((((__CR2__) & (__INTERRUPT__)) == \ + (__INTERRUPT__)) ? SET : RESET) + +/** @brief Checks if SPI Mode parameter is in allowed range. + * @param __MODE__ specifies the SPI Mode. + * This parameter can be a value of @ref SPI_Mode + * @retval None + */ +#define IS_SPI_MODE(__MODE__) (((__MODE__) == SPI_MODE_SLAVE) || \ + ((__MODE__) == SPI_MODE_MASTER)) + +/** @brief Checks if SPI Direction Mode parameter is in allowed range. + * @param __MODE__ specifies the SPI Direction Mode. + * This parameter can be a value of @ref SPI_Direction + * @retval None + */ +#define IS_SPI_DIRECTION(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \ + ((__MODE__) == SPI_DIRECTION_2LINES_RXONLY) || \ + ((__MODE__) == SPI_DIRECTION_1LINE)) + +/** @brief Checks if SPI Direction Mode parameter is 2 lines. + * @param __MODE__ specifies the SPI Direction Mode. + * @retval None + */ +#define IS_SPI_DIRECTION_2LINES(__MODE__) ((__MODE__) == SPI_DIRECTION_2LINES) + +/** @brief Checks if SPI Direction Mode parameter is 1 or 2 lines. + * @param __MODE__ specifies the SPI Direction Mode. + * @retval None + */ +#define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \ + ((__MODE__) == SPI_DIRECTION_1LINE)) + +/** @brief Checks if SPI Data Size parameter is in allowed range. + * @param __DATASIZE__ specifies the SPI Data Size. + * This parameter can be a value of @ref SPI_Data_Size + * @retval None + */ +#define IS_SPI_DATASIZE(__DATASIZE__) (((__DATASIZE__) == SPI_DATASIZE_16BIT) || \ + ((__DATASIZE__) == SPI_DATASIZE_8BIT)) + +/** @brief Checks if SPI Serial clock steady state parameter is in allowed range. + * @param __CPOL__ specifies the SPI serial clock steady state. + * This parameter can be a value of @ref SPI_Clock_Polarity + * @retval None + */ +#define IS_SPI_CPOL(__CPOL__) (((__CPOL__) == SPI_POLARITY_LOW) || \ + ((__CPOL__) == SPI_POLARITY_HIGH)) + +/** @brief Checks if SPI Clock Phase parameter is in allowed range. + * @param __CPHA__ specifies the SPI Clock Phase. + * This parameter can be a value of @ref SPI_Clock_Phase + * @retval None + */ +#define IS_SPI_CPHA(__CPHA__) (((__CPHA__) == SPI_PHASE_1EDGE) || \ + ((__CPHA__) == SPI_PHASE_2EDGE)) + +/** @brief Checks if SPI Slave Select parameter is in allowed range. + * @param __NSS__ specifies the SPI Slave Select management parameter. + * This parameter can be a value of @ref SPI_Slave_Select_management + * @retval None + */ +#define IS_SPI_NSS(__NSS__) (((__NSS__) == SPI_NSS_SOFT) || \ + ((__NSS__) == SPI_NSS_HARD_INPUT) || \ + ((__NSS__) == SPI_NSS_HARD_OUTPUT)) + +/** @brief Checks if SPI Baudrate prescaler parameter is in allowed range. + * @param __PRESCALER__ specifies the SPI Baudrate prescaler. + * This parameter can be a value of @ref SPI_BaudRate_Prescaler + * @retval None + */ +#define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__) (((__PRESCALER__) == SPI_BAUDRATEPRESCALER_2) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_4) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_8) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_16) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_32) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_64) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_128) || \ + ((__PRESCALER__) == SPI_BAUDRATEPRESCALER_256)) + +/** @brief Checks if SPI MSB LSB transmission parameter is in allowed range. + * @param __BIT__ specifies the SPI MSB LSB transmission (whether data transfer starts from MSB or LSB bit). + * This parameter can be a value of @ref SPI_MSB_LSB_transmission + * @retval None + */ +#define IS_SPI_FIRST_BIT(__BIT__) (((__BIT__) == SPI_FIRSTBIT_MSB) || \ + ((__BIT__) == SPI_FIRSTBIT_LSB)) + +#if defined(SPI_I2SCFGR_I2SMOD) +/** @brief Checks if SPI TI mode parameter is in allowed range. + * @param __MODE__ specifies the SPI TI mode. + * This parameter can be a value of @ref SPI_TI_mode + * @retval None + */ +#define IS_SPI_TIMODE(__MODE__) (((__MODE__) == SPI_TIMODE_DISABLE) || \ + ((__MODE__) == SPI_TIMODE_ENABLE)) +#else +/** @defgroup SPI_TI_mode SPI TI mode disable + * @brief SPI TI Mode not supported for Category 1 and 2 + * @{ + */ +#define IS_SPI_TIMODE(__MODE__) ((__MODE__) == SPI_TIMODE_DISABLE) + +#endif /* SPI_I2SCFGR_I2SMOD */ +/** @brief Checks if SPI CRC calculation enabled state is in allowed range. + * @param __CALCULATION__ specifies the SPI CRC calculation enable state. + * This parameter can be a value of @ref SPI_CRC_Calculation + * @retval None + */ +#define IS_SPI_CRC_CALCULATION(__CALCULATION__) (((__CALCULATION__) == SPI_CRCCALCULATION_DISABLE) || \ + ((__CALCULATION__) == SPI_CRCCALCULATION_ENABLE)) + +/** @brief Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range. + * @param __POLYNOMIAL__ specifies the SPI polynomial value to be used for the CRC calculation. + * This parameter must be a number between Min_Data = 0 and Max_Data = 65535 + * @retval None + */ +#define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__) (((__POLYNOMIAL__) >= 0x1U) && \ + ((__POLYNOMIAL__) <= 0xFFFFU) && \ + (((__POLYNOMIAL__)&0x1U) != 0U)) + +/** @brief Checks if DMA handle is valid. + * @param __HANDLE__ specifies a DMA Handle. + * @retval None + */ +#define IS_SPI_DMA_HANDLE(__HANDLE__) ((__HANDLE__) != NULL) + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SPI_Exported_Functions + * @{ + */ + +/** @addtogroup SPI_Exported_Functions_Group1 + * @{ + */ +/* Initialization/de-initialization functions ********************************/ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi); +HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi); +void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi); +void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) +HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID, + pSPI_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @addtogroup SPI_Exported_Functions_Group2 + * @{ + */ +/* I/O operation functions ***************************************************/ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size); +HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size); +HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi); +HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi); +HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi); +/* Transfer Abort functions */ +HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi); +HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi); + +void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi); +void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi); +void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi); +/** + * @} + */ + +/** @addtogroup SPI_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State and Error functions ***************************************/ +HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi); +uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L1xx_HAL_SPI_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h new file mode 100644 index 0000000..0d05861 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_bus.h @@ -0,0 +1,1100 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_BUS_H +#define __STM32L1xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHBENR_GPIOAEN +#define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHBENR_GPIOBEN +#define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHBENR_GPIOCEN +#define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHBENR_GPIODEN +#if defined(GPIOE) +#define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHBENR_GPIOEEN +#endif/*GPIOE*/ +#define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHBENR_GPIOHEN +#if defined(GPIOF) +#define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHBENR_GPIOFEN +#endif/*GPIOF*/ +#if defined(GPIOG) +#define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHBENR_GPIOGEN +#endif/*GPIOG*/ +#define LL_AHB1_GRP1_PERIPH_SRAM RCC_AHBLPENR_SRAMLPEN +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN +#define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLITFEN +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN +#if defined(DMA2) +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN +#endif/*DMA2*/ +#if defined(AES) +#define LL_AHB1_GRP1_PERIPH_CRYP RCC_AHBENR_AESEN +#endif/*AES*/ +#if defined(FSMC_Bank1) +#define LL_AHB1_GRP1_PERIPH_FSMC RCC_AHBENR_FSMCEN +#endif/*FSMC_Bank1*/ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN +#if defined(TIM5) +#define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN +#endif /*TIM5*/ +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN +#if defined(LCD) +#define LL_APB1_GRP1_PERIPH_LCD RCC_APB1ENR_LCDEN +#endif /*LCD*/ +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN +#if defined(SPI3) +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN +#endif /*SPI3*/ +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN +#if defined(UART4) +#define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN +#endif /*UART4*/ +#if defined(UART5) +#define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN +#endif /*UART5*/ +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN +#define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR_USBEN +#define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN +#define LL_APB1_GRP1_PERIPH_COMP RCC_APB1ENR_COMPEN +#if defined(OPAMP) +/* Note: Peripherals COMP and OPAMP share the same clock domain */ +#define LL_APB1_GRP1_PERIPH_OPAMP LL_APB1_GRP1_PERIPH_COMP +#endif +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN +#define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN +#define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN +#define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN +#define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN +#if defined(SDIO) +#define LL_APB2_GRP1_PERIPH_SDIO RCC_APB2ENR_SDIOEN +#endif /*SDIO*/ +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIODEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + * AHBENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + * AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_EnableClock\n + * AHBENR AESEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR AESEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->AHBENR, Periphs) == (Periphs)) ? 1UL : 0UL); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIODEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + * AHBENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + * AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_DisableClock\n + * AHBENR AESEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBENR, Periphs); +} + +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHBRSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR CRCRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR FLITFRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR AESRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR FSMCRST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHBRSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR FLITFRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR AESRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR FSMCRST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Enable AHB1 peripherals clock during Low Power (Sleep) mode. + * @rmtoll AHBLPENR GPIOALPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIODLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOELPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR CRCLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR FLITFLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR SRAMLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR DMA1LPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR DMA2LPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR AESLPEN LL_AHB1_GRP1_EnableClockSleep\n + * AHBLPENR FSMCLPEN LL_AHB1_GRP1_EnableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClockSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBLPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBLPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB1 peripherals clock during Low Power (Sleep) mode. + * @rmtoll AHBLPENR GPIOALPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIODLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOELPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR CRCLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR FLITFLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR SRAMLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR DMA1LPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR DMA2LPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR AESLPEN LL_AHB1_GRP1_DisableClockSleep\n + * AHBLPENR FSMCLPEN LL_AHB1_GRP1_DisableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClockSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBLPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR LCDEN LL_APB1_GRP1_EnableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USBEN LL_APB1_GRP1_EnableClock\n + * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n + * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n + * APB1ENR COMPEN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR LCDEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USBEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR COMPEN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APB1ENR, Periphs) == (Periphs)) ? 1UL : 0UL); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR LCDEN LL_APB1_GRP1_DisableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USBEN LL_APB1_GRP1_DisableClock\n + * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n + * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n + * APB1ENR COMPEN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR LCDRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR COMPRST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR LCDRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR COMPRST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Enable APB1 peripherals clock during Low Power (Sleep) mode. + * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR LCDLPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR USBLPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockSleep\n + * APB1LPENR COMPLPEN LL_APB1_GRP1_EnableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClockSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB1 peripherals clock during Low Power (Sleep) mode. + * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR LCDLPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR USBLPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockSleep\n + * APB1LPENR COMPLPEN LL_APB1_GRP1_DisableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_USB + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_COMP + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClockSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1LPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SDIOEN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SDIOEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APB2ENR, Periphs) == (Periphs)) ? 1UL : 0UL); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SDIOEN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADC1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SDIORST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADC1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SDIORST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Enable APB2 peripherals clock during Low Power (Sleep) mode. + * @rmtoll APB2LPENR SYSCFGLPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR TIM9LPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR TIM10LPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR TIM11LPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR ADC1LPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR SDIOLPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR SPI1LPEN LL_APB2_GRP1_EnableClockSleep\n + * APB2LPENR USART1LPEN LL_APB2_GRP1_EnableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClockSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB2 peripherals clock during Low Power (Sleep) mode. + * @rmtoll APB2LPENR SYSCFGLPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR TIM9LPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR TIM10LPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR TIM11LPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR ADC1LPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR SDIOLPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR SPI1LPEN LL_APB2_GRP1_DisableClockSleep\n + * APB2LPENR USART1LPEN LL_APB2_GRP1_DisableClockSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClockSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2LPENR, Periphs); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_BUS_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h new file mode 100644 index 0000000..3fec1a3 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_cortex.h @@ -0,0 +1,637 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by LL_mDelay and LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (+) API to access to MCU info (CPUID register) + (+) API to enable fault handler (SHCSR accesses) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_CORTEX_H +#define __STM32L1xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_FAULT Handler Fault type + * @{ + */ +#define LL_HANDLER_FAULT_USG SCB_SHCSR_USGFAULTENA_Msk /*!< Usage fault */ +#define LL_HANDLER_FAULT_BUS SCB_SHCSR_BUSFAULTENA_Msk /*!< Bus fault */ +#define LL_HANDLER_FAULT_MEM SCB_SHCSR_MEMFAULTENA_Msk /*!< Memory management fault */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_32B (0x04U << MPU_RASR_SIZE_Pos) /*!< 32B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64B (0x05U << MPU_RASR_SIZE_Pos) /*!< 64B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128B (0x06U << MPU_RASR_SIZE_Pos) /*!< 128B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return (READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_HANDLER HANDLER + * @{ + */ + +/** + * @brief Enable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_EnableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_EnableFault(uint32_t Fault) +{ + /* Enable the system handler fault */ + SET_BIT(SCB->SHCSR, Fault); +} + +/** + * @brief Disable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_DisableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_DisableFault(uint32_t Fault) +{ + /* Disable the system handler fault */ + CLEAR_BIT(SCB->SHCSR, Fault); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x1: revision 1, 0x2: revision 2) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Constant number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetConstant + * @retval Value should be equal to 0xF for Cortex-M3 devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetConstant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC23 for Cortex-M3 + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x0: patch 0, 0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return (READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_32B or @ref LL_MPU_REGION_SIZE_64B or @ref LL_MPU_REGION_SIZE_128B or @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | (SubRegionDisable << MPU_RASR_SRD_Pos))); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_CORTEX_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h new file mode 100644 index 0000000..ee30c2b --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_dma.h @@ -0,0 +1,1996 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_DMA_H +#define __STM32L1xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ +static const uint8_t CHANNEL_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE) +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note: The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Channel + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ +/** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMA_WriteReg function + * @{ + */ +#define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ +#define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ +#define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ +#define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ +#define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ +#define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ +#define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ +#define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMA_ReadReg function + * @{ + */ +#define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ +#define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ +#define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ +#define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ +#define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ +#define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ +#define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ +#define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions + * @{ + */ +#define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ +#define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ +#define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_1 0x00000001U /*!< DMA Channel 1 */ +#define LL_DMA_CHANNEL_2 0x00000002U /*!< DMA Channel 2 */ +#define LL_DMA_CHANNEL_3 0x00000003U /*!< DMA Channel 3 */ +#define LL_DMA_CHANNEL_4 0x00000004U /*!< DMA Channel 4 */ +#define LL_DMA_CHANNEL_5 0x00000005U /*!< DMA Channel 5 */ +#define LL_DMA_CHANNEL_6 0x00000006U /*!< DMA Channel 6 */ +#define LL_DMA_CHANNEL_7 0x00000007U /*!< DMA Channel 7 */ +#if defined(USE_FULL_LL_DRIVER) +#define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ +#endif /*USE_FULL_LL_DRIVER*/ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION Transfer Direction + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE Transfer mode + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode + * @{ + */ +#define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY Memory increment mode + * @{ + */ +#define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely + * @{ + */ +/** + * @brief Convert DMAx_Channely into DMAx + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval DMAx + */ +#if defined(DMA2) +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) +#else +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) +#endif + +/** + * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval LL_DMA_CHANNEL_y + */ +#if defined (DMA2) +#if defined (DMA2_Channel6) && defined (DMA2_Channel7) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely + * @param __DMA_INSTANCE__ DMAx + * @param __CHANNEL__ LL_DMA_CHANNEL_y + * @retval DMAx_Channely + */ +#if defined (DMA2) +#if defined (DMA2_Channel6) && defined (DMA2_Channel7) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA2_Channel6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) ? DMA1_Channel7 : \ + DMA2_Channel7) +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA channel. + * @rmtoll CCR EN LL_DMA_EnableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Disable DMA channel. + * @rmtoll CCR EN LL_DMA_DisableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Check if DMA channel is enabled or disabled. + * @rmtoll CCR EN LL_DMA_IsEnabledChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_EN) == (DMA_CCR_EN)); +} + +/** + * @brief Configure all parameters link to DMA transfer. + * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n + * CCR MEM2MEM LL_DMA_ConfigTransfer\n + * CCR CIRC LL_DMA_ConfigTransfer\n + * CCR PINC LL_DMA_ConfigTransfer\n + * CCR MINC LL_DMA_ConfigTransfer\n + * CCR PSIZE LL_DMA_ConfigTransfer\n + * CCR MSIZE LL_DMA_ConfigTransfer\n + * CCR PL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); +} + +/** + * @brief Set DMA mode circular or normal. + * @note The circular buffer mode cannot be used if the memory-to-memory + * data transfer is configured on the selected Channel. + * @rmtoll CCR CIRC LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_CIRC, + Mode); +} + +/** + * @brief Get DMA mode circular or normal. + * @rmtoll CCR CIRC LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_CIRC)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PINC, + PeriphOrM2MSrcIncMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MINC, + MemoryOrM2MDstIncMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PSIZE, + PeriphOrM2MSrcDataSize); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CCR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MSIZE, + MemoryOrM2MDstDataSize); +} + +/** + * @brief Get Memory size. + * @rmtoll CCR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MSIZE)); +} + +/** + * @brief Set Channel priority level. + * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PL, + Priority); +} + +/** + * @brief Get Channel priority level. + * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @note This action has no effect if + * channel is enabled. + * @rmtoll CNDTR NDT LL_DMA_SetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @note Once the channel is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @rmtoll CNDTR NDT LL_DMA_GetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT)); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA channel is enabled. + * @note Each IP using DMA provides an API to get directly the register address (LL_PPP_DMA_GetRegAddr). + * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n + * CMAR MA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, + uint32_t DstAddress, uint32_t Direction) +{ + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, PeriphAddress); +} + +/** + * @brief Get Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CMAR MA LL_DMA_GetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + +/** + * @brief Get Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CPAR PA LL_DMA_GetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Get the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Get the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Channel 1 global interrupt flag. + * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)); +} + +/** + * @brief Get Channel 2 global interrupt flag. + * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)); +} + +/** + * @brief Get Channel 3 global interrupt flag. + * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)); +} + +/** + * @brief Get Channel 4 global interrupt flag. + * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)); +} + +/** + * @brief Get Channel 5 global interrupt flag. + * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)); +} + +/** + * @brief Get Channel 6 global interrupt flag. + * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)); +} + +/** + * @brief Get Channel 7 global interrupt flag. + * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)); +} + +/** + * @brief Get Channel 1 transfer complete flag. + * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)); +} + +/** + * @brief Get Channel 2 transfer complete flag. + * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)); +} + +/** + * @brief Get Channel 3 transfer complete flag. + * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)); +} + +/** + * @brief Get Channel 4 transfer complete flag. + * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)); +} + +/** + * @brief Get Channel 5 transfer complete flag. + * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)); +} + +/** + * @brief Get Channel 6 transfer complete flag. + * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)); +} + +/** + * @brief Get Channel 7 transfer complete flag. + * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)); +} + +/** + * @brief Get Channel 1 half transfer flag. + * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)); +} + +/** + * @brief Get Channel 2 half transfer flag. + * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)); +} + +/** + * @brief Get Channel 3 half transfer flag. + * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)); +} + +/** + * @brief Get Channel 4 half transfer flag. + * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)); +} + +/** + * @brief Get Channel 5 half transfer flag. + * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)); +} + +/** + * @brief Get Channel 6 half transfer flag. + * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)); +} + +/** + * @brief Get Channel 7 half transfer flag. + * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)); +} + +/** + * @brief Get Channel 1 transfer error flag. + * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)); +} + +/** + * @brief Get Channel 2 transfer error flag. + * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)); +} + +/** + * @brief Get Channel 3 transfer error flag. + * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)); +} + +/** + * @brief Get Channel 4 transfer error flag. + * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)); +} + +/** + * @brief Get Channel 5 transfer error flag. + * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)); +} + +/** + * @brief Get Channel 6 transfer error flag. + * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)); +} + +/** + * @brief Get Channel 7 transfer error flag. + * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)); +} + +/** + * @brief Clear Channel 1 global interrupt flag. + * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF1); +} + +/** + * @brief Clear Channel 2 global interrupt flag. + * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF2); +} + +/** + * @brief Clear Channel 3 global interrupt flag. + * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF3); +} + +/** + * @brief Clear Channel 4 global interrupt flag. + * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF4); +} + +/** + * @brief Clear Channel 5 global interrupt flag. + * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF5); +} + +/** + * @brief Clear Channel 6 global interrupt flag. + * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF6); +} + +/** + * @brief Clear Channel 7 global interrupt flag. + * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF7); +} + +/** + * @brief Clear Channel 1 transfer complete flag. + * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF1); +} + +/** + * @brief Clear Channel 2 transfer complete flag. + * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF2); +} + +/** + * @brief Clear Channel 3 transfer complete flag. + * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF3); +} + +/** + * @brief Clear Channel 4 transfer complete flag. + * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF4); +} + +/** + * @brief Clear Channel 5 transfer complete flag. + * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF5); +} + +/** + * @brief Clear Channel 6 transfer complete flag. + * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF6); +} + +/** + * @brief Clear Channel 7 transfer complete flag. + * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF7); +} + +/** + * @brief Clear Channel 1 half transfer flag. + * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF1); +} + +/** + * @brief Clear Channel 2 half transfer flag. + * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF2); +} + +/** + * @brief Clear Channel 3 half transfer flag. + * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF3); +} + +/** + * @brief Clear Channel 4 half transfer flag. + * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF4); +} + +/** + * @brief Clear Channel 5 half transfer flag. + * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF5); +} + +/** + * @brief Clear Channel 6 half transfer flag. + * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF6); +} + +/** + * @brief Clear Channel 7 half transfer flag. + * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF7); +} + +/** + * @brief Clear Channel 1 transfer error flag. + * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF1); +} + +/** + * @brief Clear Channel 2 transfer error flag. + * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF2); +} + +/** + * @brief Clear Channel 3 transfer error flag. + * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF3); +} + +/** + * @brief Clear Channel 4 transfer error flag. + * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF4); +} + +/** + * @brief Clear Channel 5 transfer error flag. + * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF5); +} + +/** + * @brief Clear Channel 6 transfer error flag. + * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF6); +} + +/** + * @brief Clear Channel 7 transfer error flag. + * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF7); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Check if Transfer complete Interrupt is enabled. + * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TCIE) == (DMA_CCR_TCIE)); +} + +/** + * @brief Check if Half transfer Interrupt is enabled. + * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_HTIE) == (DMA_CCR_HTIE)); +} + +/** + * @brief Check if Transfer error Interrupt is enabled. + * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TEIE) == (DMA_CCR_TEIE)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_DMA_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h new file mode 100644 index 0000000..77d8e63 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_exti.h @@ -0,0 +1,1015 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L1xx_LL_EXTI_H +#define STM32L1xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ +#endif +#define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ +#if defined(EXTI_IMR_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ +#endif +#define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ +#if defined(EXTI_IMR_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ +#endif +#if defined(EXTI_IMR_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ +#endif +#if defined(EXTI_IMR_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ +#endif +#define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ +#if defined(EXTI_IMR_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ +#endif +#if defined(EXTI_IMR_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ +#endif +#if defined(EXTI_IMR_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ +#endif +#if defined(EXTI_IMR_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ +#endif +#if defined(EXTI_IMR_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ +#endif +#if defined(EXTI_IMR_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ +#endif +#if defined(EXTI_IMR_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ +#endif +#if defined(EXTI_IMR_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ +#endif +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ + + +#define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); + +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER, ExtiLine); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_IsActiveFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine)); +} + + +/** + * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ReadFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine)); +} + + +/** + * @brief Clear ExtLine Flags for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ClearFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR, ExtiLine); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L1xx_LL_EXTI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h new file mode 100644 index 0000000..2de80e7 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_gpio.h @@ -0,0 +1,987 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_GPIO_H +#define __STM32L1xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) + +/** @defgroup GPIO_LL GPIO + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ + + uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_AF. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 GPIO_BSRR_BS_0 /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 GPIO_BSRR_BS_1 /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 GPIO_BSRR_BS_2 /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 GPIO_BSRR_BS_3 /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 GPIO_BSRR_BS_4 /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 GPIO_BSRR_BS_5 /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 GPIO_BSRR_BS_6 /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 GPIO_BSRR_BS_7 /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 GPIO_BSRR_BS_8 /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 GPIO_BSRR_BS_9 /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 GPIO_BSRR_BS_10 /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 GPIO_BSRR_BS_11 /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 GPIO_BSRR_BS_12 /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 GPIO_BSRR_BS_13 /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 GPIO_BSRR_BS_14 /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 GPIO_BSRR_BS_15 /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (GPIO_BSRR_BS_0 | GPIO_BSRR_BS_1 | GPIO_BSRR_BS_2 | \ + GPIO_BSRR_BS_3 | GPIO_BSRR_BS_4 | GPIO_BSRR_BS_5 | \ + GPIO_BSRR_BS_6 | GPIO_BSRR_BS_7 | GPIO_BSRR_BS_8 | \ + GPIO_BSRR_BS_9 | GPIO_BSRR_BS_10 | GPIO_BSRR_BS_11 | \ + GPIO_BSRR_BS_12 | GPIO_BSRR_BS_13 | GPIO_BSRR_BS_14 | \ + GPIO_BSRR_BS_15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODER0_0 /*!< Select output mode */ +#define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODER0_1 /*!< Select alternate function mode */ +#define LL_GPIO_MODE_ANALOG GPIO_MODER_MODER0 /*!< Select analog mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT_0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDER_OSPEEDR0_0 /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDER_OSPEEDR0_1 /*!< Select I/O fast output speed */ +#define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDER_OSPEEDR0 /*!< Select I/O high output speed */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ +#define LL_GPIO_PULL_UP GPIO_PUPDR_PUPDR0_0 /*!< Select I/O pull up */ +#define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPDR0_1 /*!< Select I/O pull down */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_AF Alternate Function + * @{ + */ +#define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ +#define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ +#define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ +#define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ +#define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ +#define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ +#define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ +#define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ +#define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ +#define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ +#define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ +#define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ +#define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ +#define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ +#define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ +#define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->MODER, + (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) +{ + MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin)); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U)), + (Speed << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, + (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->PUPDR, + (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U)), + (Alternate << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[0], + (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U)), + (Alternate << (POSITION_VAL(Pin >> 8U) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[1], + (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U))) >> (POSITION_VAL(Pin >> 8U) * 4U)); +} + + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + WRITE_REG(GPIOx->LCKR, PinMask); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + /* Read LCKK register. This read is mandatory to complete key lock sequence */ + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->IDR, PinMask) == (PinMask)); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->ODR, PinMask) == (PinMask)); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, PinMask); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BRR BRy LL_GPIO_ResetOutputPin\n + * @rmtoll BSRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ +#if defined(GPIO_BRR_BR_0) + WRITE_REG(GPIOx->BRR, PinMask); +#else + WRITE_REG(GPIOx->BSRR, (PinMask << 16)); +#endif /* GPIO_BRR_BR_0 */ +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + uint32_t odr = READ_REG(GPIOx->ODR); + WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_GPIO_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h new file mode 100644 index 0000000..f7b5742 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_pwr.h @@ -0,0 +1,718 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_PWR_H +#define __STM32L1xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_CR_CSBF PWR_CR_CSBF /*!< Clear standby flag */ +#define LL_PWR_CR_CWUF PWR_CR_CWUF /*!< Clear wakeup flag */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_CSR_WUF PWR_CSR_WUF /*!< Wakeup flag */ +#define LL_PWR_CSR_SBF PWR_CSR_SBF /*!< Standby flag */ +#if defined(PWR_PVD_SUPPORT) +#define LL_PWR_CSR_PVDO PWR_CSR_PVDO /*!< Power voltage detector output flag */ +#endif /* PWR_PVD_SUPPORT */ +#if defined(PWR_CSR_VREFINTRDYF) +#define LL_PWR_CSR_VREFINTRDYF PWR_CSR_VREFINTRDYF /*!< VREFINT ready flag */ +#endif /* PWR_CSR_VREFINTRDYF */ +#define LL_PWR_CSR_VOS PWR_CSR_VOSF /*!< Voltage scaling select flag */ +#define LL_PWR_CSR_REGLPF PWR_CSR_REGLPF /*!< Regulator low power flag */ +#define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP1 /*!< Enable WKUP pin 1 */ +#define LL_PWR_CSR_EWUP2 PWR_CSR_EWUP2 /*!< Enable WKUP pin 2 */ +#if defined(PWR_CSR_EWUP3) +#define LL_PWR_CSR_EWUP3 PWR_CSR_EWUP3 /*!< Enable WKUP pin 3 */ +#endif /* PWR_CSR_EWUP3 */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_VOLTAGE Regulator Voltage + * @{ + */ +#define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR_VOS_0) /*!< 1.8V (range 1) */ +#define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR_VOS_1) /*!< 1.5V (range 2) */ +#define LL_PWR_REGU_VOLTAGE_SCALE3 (PWR_CR_VOS_0 | PWR_CR_VOS_1) /*!< 1.2V (range 3) */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_MODE_PWR Mode Power + * @{ + */ +#define LL_PWR_MODE_STOP 0x00000000U /*!< Enter Stop mode when the CPU enters deepsleep */ +#define LL_PWR_MODE_STANDBY (PWR_CR_PDDS) /*!< Enter Standby mode when the CPU enters deepsleep */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_MODE_LP_MODES Regulator Mode In Low Power Modes + * @{ + */ +#define LL_PWR_REGU_LPMODES_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep/sleep/low-power run mode */ +#define LL_PWR_REGU_LPMODES_LOW_POWER (PWR_CR_LPSDSR) /*!< Voltage Regulator in low-power mode during deepsleep/sleep/low-power run mode */ +/** + * @} + */ +#if defined(PWR_CR_LPDS) +/** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode + * @{ + */ +#define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */ +#define LL_PWR_REGU_DSMODE_LOW_POWER (PWR_CR_LPDS) /*!< Voltage Regulator in low-power mode during deepsleep mode */ +/** + * @} + */ +#endif /* PWR_CR_LPDS */ + +#if defined(PWR_PVD_SUPPORT) +/** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level + * @{ + */ +#define LL_PWR_PVDLEVEL_0 (PWR_CR_PLS_LEV0) /*!< Voltage threshold detected by PVD 1.9 V */ +#define LL_PWR_PVDLEVEL_1 (PWR_CR_PLS_LEV1) /*!< Voltage threshold detected by PVD 2.1 V */ +#define LL_PWR_PVDLEVEL_2 (PWR_CR_PLS_LEV2) /*!< Voltage threshold detected by PVD 2.3 V */ +#define LL_PWR_PVDLEVEL_3 (PWR_CR_PLS_LEV3) /*!< Voltage threshold detected by PVD 2.5 V */ +#define LL_PWR_PVDLEVEL_4 (PWR_CR_PLS_LEV4) /*!< Voltage threshold detected by PVD 2.7 V */ +#define LL_PWR_PVDLEVEL_5 (PWR_CR_PLS_LEV5) /*!< Voltage threshold detected by PVD 2.9 V */ +#define LL_PWR_PVDLEVEL_6 (PWR_CR_PLS_LEV6) /*!< Voltage threshold detected by PVD 3.1 V */ +#define LL_PWR_PVDLEVEL_7 (PWR_CR_PLS_LEV7) /*!< External input analog voltage (Compare internally to VREFINT) */ +/** + * @} + */ +#endif /* PWR_PVD_SUPPORT */ +/** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP1) /*!< WKUP pin 1 : PA0 */ +#define LL_PWR_WAKEUP_PIN2 (PWR_CSR_EWUP2) /*!< WKUP pin 2 : PC13 */ +#if defined(PWR_CSR_EWUP3) +#define LL_PWR_WAKEUP_PIN3 (PWR_CSR_EWUP3) /*!< WKUP pin 3 : PE6 or PA2 according to device */ +#endif /* PWR_CSR_EWUP3 */ +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Switch the Regulator from main mode to low-power mode + * @rmtoll CR LPRUN LL_PWR_EnableLowPowerRunMode + * @note Remind to set the Regulator to low power before enabling + * LowPower run mode (bit @ref LL_PWR_REGU_LPMODES_LOW_POWER). + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void) +{ + SET_BIT(PWR->CR, PWR_CR_LPRUN); +} + +/** + * @brief Switch the Regulator from low-power mode to main mode + * @rmtoll CR LPRUN LL_PWR_DisableLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_LPRUN); +} + +/** + * @brief Check if the Regulator is in low-power mode + * @rmtoll CR LPRUN LL_PWR_IsEnabledLowPowerRunMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void) +{ + return ((READ_BIT(PWR->CR, PWR_CR_LPRUN) == PWR_CR_LPRUN) ? 1UL : 0UL); +} + +/** + * @brief Set voltage Regulator to low-power and switch from + * run main mode to run low-power mode. + * @rmtoll CR LPSDSR LL_PWR_EnterLowPowerRunMode\n + * CR LPRUN LL_PWR_EnterLowPowerRunMode + * @note This "high level" function is introduced to provide functional + * compatibility with other families. Notice that the two registers + * have to be written sequentially, so this function is not atomic. + * To assure atomicity you can call separately the following functions: + * - @ref LL_PWR_SetRegulModeLP(@ref LL_PWR_REGU_LPMODES_LOW_POWER); + * - @ref LL_PWR_EnableLowPowerRunMode(); + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void) +{ + SET_BIT(PWR->CR, PWR_CR_LPSDSR); /* => LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_LOW_POWER) */ + SET_BIT(PWR->CR, PWR_CR_LPRUN); /* => LL_PWR_EnableLowPowerRunMode() */ +} + +/** + * @brief Set voltage Regulator to main and switch from + * run main mode to low-power mode. + * @rmtoll CR LPSDSR LL_PWR_ExitLowPowerRunMode\n + * CR LPRUN LL_PWR_ExitLowPowerRunMode + * @note This "high level" function is introduced to provide functional + * compatibility with other families. Notice that the two registers + * have to be written sequentially, so this function is not atomic. + * To assure atomicity you can call separately the following functions: + * - @ref LL_PWR_DisableLowPowerRunMode(); + * - @ref LL_PWR_SetRegulModeLP(@ref LL_PWR_REGU_LPMODES_MAIN); + * @retval None + */ +__STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_LPRUN); /* => LL_PWR_DisableLowPowerRunMode() */ + CLEAR_BIT(PWR->CR, PWR_CR_LPSDSR); /* => LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_MAIN) */ +} +/** + * @brief Set the main internal Regulator output voltage + * @rmtoll CR VOS LL_PWR_SetRegulVoltageScaling + * @param VoltageScaling This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling) +{ + MODIFY_REG(PWR->CR, PWR_CR_VOS, VoltageScaling); +} + +/** + * @brief Get the main internal Regulator output voltage + * @rmtoll CR VOS LL_PWR_GetRegulVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_VOS)); +} + +/** + * @brief Enable access to the backup domain + * @rmtoll CR DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return ((READ_BIT(PWR->CR, PWR_CR_DBP) == PWR_CR_DBP) ? 1UL : 0UL); +} + +/** + * @brief Set voltage Regulator mode during low power modes + * @rmtoll CR LPSDSR LL_PWR_SetRegulModeLP + * @param RegulMode This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_LPMODES_MAIN + * @arg @ref LL_PWR_REGU_LPMODES_LOW_POWER + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulModeLP(uint32_t RegulMode) +{ + MODIFY_REG(PWR->CR, PWR_CR_LPSDSR, RegulMode); +} + +/** + * @brief Get voltage Regulator mode during low power modes + * @rmtoll CR LPSDSR LL_PWR_GetRegulModeLP + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_LPMODES_MAIN + * @arg @ref LL_PWR_REGU_LPMODES_LOW_POWER + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulModeLP(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPSDSR)); +} + +#if defined(PWR_CR_LPDS) +/** + * @brief Set voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_SetRegulModeDS + * @param RegulMode This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode) +{ + MODIFY_REG(PWR->CR, PWR_CR_LPDS, RegulMode); +} + +/** + * @brief Get voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_GetRegulModeDS + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPDS)); +} +#endif /* PWR_CR_LPDS */ + +/** + * @brief Set Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_SetPowerMode + * @param PDMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP + * @arg @ref LL_PWR_MODE_STANDBY + * @note Set the Regulator to low power (bit @ref LL_PWR_REGU_LPMODES_LOW_POWER) + * before setting MODE_STOP. If the Regulator remains in "main mode", + * it consumes more power without providing any additional feature. + * In MODE_STANDBY the Regulator is automatically off. + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t PDMode) +{ + MODIFY_REG(PWR->CR, PWR_CR_PDDS, PDMode); +} + +/** + * @brief Get Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP + * @arg @ref LL_PWR_MODE_STANDBY + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PDDS)); +} + +#if defined(PWR_PVD_SUPPORT) +/** + * @brief Configure the voltage threshold detected by the Power Voltage Detector + * @rmtoll CR PLS LL_PWR_SetPVDLevel + * @param PVDLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel) +{ + MODIFY_REG(PWR->CR, PWR_CR_PLS, PVDLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR PLS LL_PWR_GetPVDLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PLS)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return ((READ_BIT(PWR->CR, PWR_CR_PVDE) == PWR_CR_PVDE) ? 1UL : 0UL); +} +#endif /* PWR_PVD_SUPPORT */ + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CSR EWUP1 LL_PWR_EnableWakeUpPin\n + * @rmtoll CSR EWUP2 LL_PWR_EnableWakeUpPin\n + * @rmtoll CSR EWUP3 LL_PWR_EnableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * + * (*) not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CSR EWUP1 LL_PWR_DisableWakeUpPin\n + * @rmtoll CSR EWUP2 LL_PWR_DisableWakeUpPin\n + * @rmtoll CSR EWUP3 LL_PWR_DisableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * + * (*) not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CSR EWUP1 LL_PWR_IsEnabledWakeUpPin\n + * @rmtoll CSR EWUP2 LL_PWR_IsEnabledWakeUpPin\n + * @rmtoll CSR EWUP3 LL_PWR_IsEnabledWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * + * (*) not available on all devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return ((READ_BIT(PWR->CSR, WakeUpPin) == WakeUpPin) ? 1UL : 0UL); +} + +/** + * @brief Enable ultra low-power mode by enabling VREFINT switch off in low-power modes + * @rmtoll CR ULP LL_PWR_EnableUltraLowPower + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableUltraLowPower(void) +{ + SET_BIT(PWR->CR, PWR_CR_ULP); +} + +/** + * @brief Disable ultra low-power mode by disabling VREFINT switch off in low-power modes + * @rmtoll CR ULP LL_PWR_DisableUltraLowPower + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableUltraLowPower(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_ULP); +} + +/** + * @brief Check if ultra low-power mode is enabled by checking if VREFINT switch off in low-power modes is enabled + * @rmtoll CR ULP LL_PWR_IsEnabledUltraLowPower + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledUltraLowPower(void) +{ + return ((READ_BIT(PWR->CR, PWR_CR_ULP) == PWR_CR_ULP) ? 1UL : 0UL); +} + +/** + * @brief Enable fast wakeup by ignoring VREFINT startup time when exiting from low-power mode + * @rmtoll CR FWU LL_PWR_EnableFastWakeUp + * @note Works in conjunction with ultra low power mode. + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableFastWakeUp(void) +{ + SET_BIT(PWR->CR, PWR_CR_FWU); +} + +/** + * @brief Disable fast wakeup by waiting VREFINT startup time when exiting from low-power mode + * @rmtoll CR FWU LL_PWR_DisableFastWakeUp + * @note Works in conjunction with ultra low power mode. + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableFastWakeUp(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_FWU); +} + +/** + * @brief Check if fast wakeup is enabled by checking if VREFINT startup time when exiting from low-power mode is ignored + * @rmtoll CR FWU LL_PWR_IsEnabledFastWakeUp + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledFastWakeUp(void) +{ + return ((READ_BIT(PWR->CR, PWR_CR_FWU) == PWR_CR_FWU) ? 1UL : 0UL); +} + + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Wake-up Flag + * @rmtoll CSR WUF LL_PWR_IsActiveFlag_WU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_WUF) == PWR_CSR_WUF) ? 1UL : 0UL); +} + +/** + * @brief Get Standby Flag + * @rmtoll CSR SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_SBF) == PWR_CSR_SBF) ? 1UL : 0UL); +} + +#if defined(PWR_PVD_SUPPORT) +/** + * @brief Indicate whether VDD voltage is below the selected PVD threshold + * @rmtoll CSR PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_PVDO) == PWR_CSR_PVDO) ? 1UL : 0UL); +} +#endif /* PWR_PVD_SUPPORT */ + +#if defined(PWR_CSR_VREFINTRDYF) +/** + * @brief Get Internal Reference VrefInt Flag + * @rmtoll CSR VREFINTRDYF LL_PWR_IsActiveFlag_VREFINTRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VREFINTRDY(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_VREFINTRDYF) == PWR_CSR_VREFINTRDYF) ? 1UL : 0UL); +} +#endif /* PWR_CSR_VREFINTRDYF */ +/** + * @brief Indicate whether the Regulator is ready in the selected voltage range or if its output voltage is still changing to the required voltage level + * @rmtoll CSR VOSF LL_PWR_IsActiveFlag_VOS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_VOSF) == PWR_CSR_VOSF) ? 1UL : 0UL); +} +/** + * @brief Indicate whether the Regulator is ready in main mode or is in low-power mode + * @rmtoll CSR REGLPF LL_PWR_IsActiveFlag_REGLPF + * @note Take care, return value "0" means the Regulator is ready. Return value "1" means the output voltage range is still changing. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void) +{ + return ((READ_BIT(PWR->CSR, PWR_CSR_REGLPF) == PWR_CSR_REGLPF) ? 1UL : 0UL); +} +/** + * @brief Clear Standby Flag + * @rmtoll CR CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + SET_BIT(PWR->CR, PWR_CR_CSBF); +} + +/** + * @brief Clear Wake-up Flags + * @rmtoll CR CWUF LL_PWR_ClearFlag_WU + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU(void) +{ + SET_BIT(PWR->CR, PWR_CR_CWUF); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup PWR_LL_EF_Legacy_Functions PWR legacy functions name + * @{ + */ +/* Old functions name kept for legacy purpose, to be replaced by the */ +/* current functions name. */ +#define LL_PWR_IsActiveFlag_VOSF LL_PWR_IsActiveFlag_VOS +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_PWR_H */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h new file mode 100644 index 0000000..1fdbcd8 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_rcc.h @@ -0,0 +1,1796 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_rcc.h + * @author MCD Application Team + * @brief Header file of RCC LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_RCC_H +#define __STM32L1xx_LL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Exported_Types RCC Exported Types + * @{ + */ + +/** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + * @{ + */ + +/** + * @brief RCC Clocks Frequency Structure + */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ +} LL_RCC_ClocksTypeDef; + +/** + * @} + */ + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + * @brief Defines used to adapt values of different oscillators + * @note These values could be modified in the user environment according to + * HW set-up. + * @{ + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 8000000U /*!< Value of the HSE oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) +#define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ +#endif /* HSI_VALUE */ + +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSI_VALUE) +#define LSI_VALUE 37000U /*!< Value of the LSI oscillator in Hz */ +#endif /* LSI_VALUE */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_RCC_WriteReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC /*!< LSI Ready Interrupt Clear */ +#define LL_RCC_CIR_LSERDYC RCC_CIR_LSERDYC /*!< LSE Ready Interrupt Clear */ +#define LL_RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC /*!< HSI Ready Interrupt Clear */ +#define LL_RCC_CIR_HSERDYC RCC_CIR_HSERDYC /*!< HSE Ready Interrupt Clear */ +#define LL_RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC /*!< PLL Ready Interrupt Clear */ +#define LL_RCC_CIR_MSIRDYC RCC_CIR_MSIRDYC /*!< MSI Ready Interrupt Clear */ +#if defined(RCC_LSECSS_SUPPORT) +#define LL_RCC_CIR_LSECSSC RCC_CIR_LSECSSC /*!< LSE Clock Security System Interrupt Clear */ +#endif /* RCC_LSECSS_SUPPORT */ +#define LL_RCC_CIR_CSSC RCC_CIR_CSSC /*!< Clock Security System Interrupt Clear */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_RCC_ReadReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define LL_RCC_CIR_LSERDYF RCC_CIR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define LL_RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define LL_RCC_CIR_HSERDYF RCC_CIR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define LL_RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define LL_RCC_CIR_MSIRDYF RCC_CIR_MSIRDYF /*!< MSI Ready Interrupt flag */ +#if defined(RCC_LSECSS_SUPPORT) +#define LL_RCC_CIR_LSECSSF RCC_CIR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ +#endif /* RCC_LSECSS_SUPPORT */ +#define LL_RCC_CIR_CSSF RCC_CIR_CSSF /*!< Clock Security System Interrupt flag */ +#define LL_RCC_CSR_OBLRSTF RCC_CSR_OBLRSTF /*!< OBL reset flag */ +#define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define LL_RCC_CSR_PORRSTF RCC_CSR_PORRSTF /*!< POR/PDR reset flag */ +#define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + * @{ + */ +#define LL_RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE /*!< LSI Ready Interrupt Enable */ +#define LL_RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE /*!< LSE Ready Interrupt Enable */ +#define LL_RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE /*!< HSI Ready Interrupt Enable */ +#define LL_RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE /*!< HSE Ready Interrupt Enable */ +#define LL_RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE /*!< PLL Ready Interrupt Enable */ +#define LL_RCC_CIR_MSIRDYIE RCC_CIR_MSIRDYIE /*!< MSI Ready Interrupt Enable */ +#if defined(RCC_LSECSS_SUPPORT) +#define LL_RCC_CIR_LSECSSIE RCC_CIR_LSECSSIE /*!< LSE CSS Interrupt Enable */ +#endif /* RCC_LSECSS_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RTC_HSE_DIV RTC HSE Prescaler + * @{ + */ +#define LL_RCC_RTC_HSE_DIV_2 0x00000000U /*!< HSE is divided by 2 for RTC clock */ +#define LL_RCC_RTC_HSE_DIV_4 RCC_CR_RTCPRE_0 /*!< HSE is divided by 4 for RTC clock */ +#define LL_RCC_RTC_HSE_DIV_8 RCC_CR_RTCPRE_1 /*!< HSE is divided by 8 for RTC clock */ +#define LL_RCC_RTC_HSE_DIV_16 RCC_CR_RTCPRE /*!< HSE is divided by 16 for RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MSIRANGE MSI clock ranges + * @{ + */ +#define LL_RCC_MSIRANGE_0 RCC_ICSCR_MSIRANGE_0 /*!< MSI = 65.536 KHz */ +#define LL_RCC_MSIRANGE_1 RCC_ICSCR_MSIRANGE_1 /*!< MSI = 131.072 KHz*/ +#define LL_RCC_MSIRANGE_2 RCC_ICSCR_MSIRANGE_2 /*!< MSI = 262.144 KHz */ +#define LL_RCC_MSIRANGE_3 RCC_ICSCR_MSIRANGE_3 /*!< MSI = 524.288 KHz */ +#define LL_RCC_MSIRANGE_4 RCC_ICSCR_MSIRANGE_4 /*!< MSI = 1.048 MHz */ +#define LL_RCC_MSIRANGE_5 RCC_ICSCR_MSIRANGE_5 /*!< MSI = 2.097 MHz */ +#define LL_RCC_MSIRANGE_6 RCC_ICSCR_MSIRANGE_6 /*!< MSI = 4.194 MHz */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_MSI RCC_CFGR_SW_MSI /*!< MSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_MSI RCC_CFGR_SWS_MSI /*!< MSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + * @{ + */ +#define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ +#define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ +#define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ +#define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ +#define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ +#define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ +#define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ +#define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ +#define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + * @{ + */ +#define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + * @{ + */ +#define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1SOURCE MCO1 SOURCE selection + * @{ + */ +#define LL_RCC_MCO1SOURCE_NOCLOCK RCC_CFGR_MCOSEL_NOCLOCK /*!< MCO output disabled, no clock on MCO */ +#define LL_RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_SYSCLK /*!< SYSCLK selection as MCO source */ +#define LL_RCC_MCO1SOURCE_HSI RCC_CFGR_MCOSEL_HSI /*!< HSI selection as MCO source */ +#define LL_RCC_MCO1SOURCE_MSI RCC_CFGR_MCOSEL_MSI /*!< MSI selection as MCO source */ +#define LL_RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_HSE /*!< HSE selection as MCO source */ +#define LL_RCC_MCO1SOURCE_LSI RCC_CFGR_MCOSEL_LSI /*!< LSI selection as MCO source */ +#define LL_RCC_MCO1SOURCE_LSE RCC_CFGR_MCOSEL_LSE /*!< LSE selection as MCO source */ +#define LL_RCC_MCO1SOURCE_PLLCLK RCC_CFGR_MCOSEL_PLL /*!< PLLCLK selection as MCO source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1_DIV MCO1 prescaler + * @{ + */ +#define LL_RCC_MCO1_DIV_1 RCC_CFGR_MCOPRE_DIV1 /*!< MCO Clock divided by 1 */ +#define LL_RCC_MCO1_DIV_2 RCC_CFGR_MCOPRE_DIV2 /*!< MCO Clock divided by 2 */ +#define LL_RCC_MCO1_DIV_4 RCC_CFGR_MCOPRE_DIV4 /*!< MCO Clock divided by 4 */ +#define LL_RCC_MCO1_DIV_8 RCC_CFGR_MCOPRE_DIV8 /*!< MCO Clock divided by 8 */ +#define LL_RCC_MCO1_DIV_16 RCC_CFGR_MCOPRE_DIV16 /*!< MCO Clock divided by 16 */ +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + * @{ + */ +#define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ +#define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + + + +/** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + * @{ + */ +#define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSE RCC_CSR_RTCSEL_LSE /*!< LSE oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSI RCC_CSR_RTCSEL_LSI /*!< LSI oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_HSE RCC_CSR_RTCSEL_HSE /*!< HSE oscillator clock divided by a programmable prescaler + (selection through @ref LL_RCC_SetRTC_HSEPrescaler function ) */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLL_MUL PLL Multiplicator factor + * @{ + */ +#define LL_RCC_PLL_MUL_3 RCC_CFGR_PLLMUL3 /*!< PLL input clock * 3 */ +#define LL_RCC_PLL_MUL_4 RCC_CFGR_PLLMUL4 /*!< PLL input clock * 4 */ +#define LL_RCC_PLL_MUL_6 RCC_CFGR_PLLMUL6 /*!< PLL input clock * 6 */ +#define LL_RCC_PLL_MUL_8 RCC_CFGR_PLLMUL8 /*!< PLL input clock * 8 */ +#define LL_RCC_PLL_MUL_12 RCC_CFGR_PLLMUL12 /*!< PLL input clock * 12 */ +#define LL_RCC_PLL_MUL_16 RCC_CFGR_PLLMUL16 /*!< PLL input clock * 16 */ +#define LL_RCC_PLL_MUL_24 RCC_CFGR_PLLMUL24 /*!< PLL input clock * 24 */ +#define LL_RCC_PLL_MUL_32 RCC_CFGR_PLLMUL32 /*!< PLL input clock * 32 */ +#define LL_RCC_PLL_MUL_48 RCC_CFGR_PLLMUL48 /*!< PLL input clock * 48 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLL_DIV PLL division factor + * @{ + */ +#define LL_RCC_PLL_DIV_2 RCC_CFGR_PLLDIV2 /*!< PLL clock output = PLLVCO / 2 */ +#define LL_RCC_PLL_DIV_3 RCC_CFGR_PLLDIV3 /*!< PLL clock output = PLLVCO / 3 */ +#define LL_RCC_PLL_DIV_4 RCC_CFGR_PLLDIV4 /*!< PLL clock output = PLLVCO / 4 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSOURCE PLL SOURCE + * @{ + */ +#define LL_RCC_PLLSOURCE_HSI RCC_CFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE RCC_CFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RCC register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) + +/** + * @brief Read a value in RCC register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +/** + * @} + */ + +/** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies + * @{ + */ + +/** + * @brief Helper macro to calculate the PLLCLK frequency + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE, + * @ref LL_RCC_PLL_GetMultiplicator (), + * @ref LL_RCC_PLL_GetDivider ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLMUL__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_3 + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_12 + * @arg @ref LL_RCC_PLL_MUL_16 + * @arg @ref LL_RCC_PLL_MUL_24 + * @arg @ref LL_RCC_PLL_MUL_32 + * @arg @ref LL_RCC_PLL_MUL_48 + * @param __PLLDIV__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_DIV_2 + * @arg @ref LL_RCC_PLL_DIV_3 + * @arg @ref LL_RCC_PLL_DIV_4 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLMUL__, __PLLDIV__) ((__INPUTFREQ__) * (PLLMulTable[(__PLLMUL__) >> RCC_CFGR_PLLMUL_Pos]) / (((__PLLDIV__) >> RCC_CFGR_PLLDIV_Pos)+1U)) + +/** + * @brief Helper macro to calculate the HCLK frequency + * @note: __AHBPRESCALER__ be retrieved by @ref LL_RCC_GetAHBPrescaler + * ex: __LL_RCC_CALC_HCLK_FREQ(LL_RCC_GetAHBPrescaler()) + * @param __SYSCLKFREQ__ SYSCLK frequency (based on MSI/HSE/HSI/PLLCLK) + * @param __AHBPRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval HCLK clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTable[((__AHBPRESCALER__) & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) + +/** + * @brief Helper macro to calculate the PCLK1 frequency (ABP1) + * @note: __APB1PRESCALER__ be retrieved by @ref LL_RCC_GetAPB1Prescaler + * ex: __LL_RCC_CALC_PCLK1_FREQ(LL_RCC_GetAPB1Prescaler()) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB1PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval PCLK1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB1PRESCALER__) >> RCC_CFGR_PPRE1_Pos]) + +/** + * @brief Helper macro to calculate the PCLK2 frequency (ABP2) + * @note: __APB2PRESCALER__ be retrieved by @ref LL_RCC_GetAPB2Prescaler + * ex: __LL_RCC_CALC_PCLK2_FREQ(LL_RCC_GetAPB2Prescaler()) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB2PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval PCLK2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB2PRESCALER__) >> RCC_CFGR_PPRE2_Pos]) + +/** + * @brief Helper macro to calculate the MSI frequency (in Hz) + * @note: __MSIRANGE__can be retrieved by @ref LL_RCC_MSI_GetRange + * ex: __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_GetRange()) + * @param __MSIRANGE__ This parameter can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + * @retval MSI clock frequency (in Hz) + */ +#define __LL_RCC_CALC_MSI_FREQ(__MSIRANGE__) ((32768U * ( 1UL << (((__MSIRANGE__) >> RCC_ICSCR_MSIRANGE_Pos) + 1U)))) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_LL_EF_HSE HSE + * @{ + */ + +/** + * @brief Enable the Clock Security System. + * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Disable the Clock Security System. + * @note Cannot be disabled in HSE is ready (only by hardware) + * @rmtoll CR CSSON LL_RCC_HSE_DisableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableCSS(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Enable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Disable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Enable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Disable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Check if HSE oscillator Ready + * @rmtoll CR HSERDY LL_RCC_HSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == RCC_CR_HSERDY) ? 1UL : 0UL); +} + +/** + * @brief Configure the RTC prescaler (divider) + * @rmtoll CR RTCPRE LL_RCC_SetRTC_HSEPrescaler + * @param Div This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_HSE_DIV_2 + * @arg @ref LL_RCC_RTC_HSE_DIV_4 + * @arg @ref LL_RCC_RTC_HSE_DIV_8 + * @arg @ref LL_RCC_RTC_HSE_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Div) +{ + MODIFY_REG(RCC->CR, RCC_CR_RTCPRE, Div); +} + +/** + * @brief Get the RTC divider (prescaler) + * @rmtoll CR RTCPRE LL_RCC_GetRTC_HSEPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_HSE_DIV_2 + * @arg @ref LL_RCC_RTC_HSE_DIV_4 + * @arg @ref LL_RCC_RTC_HSE_DIV_8 + * @arg @ref LL_RCC_RTC_HSE_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_RTCPRE)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_HSI HSI + * @{ + */ + +/** + * @brief Enable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Disable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Check if HSI clock is ready + * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RCC_CR_HSIRDY) ? 1UL : 0UL); +} + +/** + * @brief Get HSI Calibration value + * @note When HSITRIM is written, HSICAL is updated with the sum of + * HSITRIM and the factory trim value + * @rmtoll ICSCR HSICAL LL_RCC_HSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSICAL) >> RCC_ICSCR_HSICAL_Pos); +} + +/** + * @brief Set HSI Calibration trimming + * @note user-programmable trimming value that is added to the HSICAL + * @note Default value is 16, which, when added to the HSICAL value, + * should trim the HSI to 16 MHz +/- 1 % + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_SetCalibTrimming + * @param Value between Min_Data = 0x00 and Max_Data = 0x1F + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @brief Get HSI Calibration trimming + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_GetCalibTrimming + * @retval Between Min_Data = 0x00 and Max_Data = 0x1F + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSE LSE + * @{ + */ + +/** + * @brief Enable Low Speed External (LSE) crystal. + * @rmtoll CSR LSEON LL_RCC_LSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSEON); +} + +/** + * @brief Disable Low Speed External (LSE) crystal. + * @rmtoll CSR LSEON LL_RCC_LSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEON); +} + +/** + * @brief Enable external clock source (LSE bypass). + * @rmtoll CSR LSEBYP LL_RCC_LSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSEBYP); +} + +/** + * @brief Disable external clock source (LSE bypass). + * @rmtoll CSR LSEBYP LL_RCC_LSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSEBYP); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Enable Clock security system on LSE. + * @rmtoll CSR LSECSSON LL_RCC_LSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableCSS(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSECSSON); +} + +/** + * @brief Disable Clock security system on LSE. + * @note Clock security system can be disabled only after a LSE + * failure detection. In that case it MUST be disabled by software. + * @rmtoll CSR LSECSSON LL_RCC_LSE_DisableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableCSS(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSECSSON); +} + +#endif /* RCC_LSECSS_SUPPORT */ +/** + * @brief Check if LSE oscillator Ready + * @rmtoll CSR LSERDY LL_RCC_LSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LSERDY) == RCC_CSR_LSERDY) ? 1UL : 0UL); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Check if CSS on LSE failure Detection + * @rmtoll CSR LSECSSD LL_RCC_LSE_IsCSSDetected + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsCSSDetected(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LSECSSD) == RCC_CSR_LSECSSD) ? 1UL : 0UL); +} + +#endif /* RCC_LSECSS_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSI LSI + * @{ + */ + +/** + * @brief Enable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Disable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Check if LSI is Ready + * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MSI MSI + * @{ + */ + +/** + * @brief Enable MSI oscillator + * @rmtoll CR MSION LL_RCC_MSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_MSION); +} + +/** + * @brief Disable MSI oscillator + * @rmtoll CR MSION LL_RCC_MSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_MSION); +} + +/** + * @brief Check if MSI oscillator Ready + * @rmtoll CR MSIRDY LL_RCC_MSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == RCC_CR_MSIRDY) ? 1UL : 0UL); +} + +/** + * @brief Configure the Internal Multi Speed oscillator (MSI) clock range in run mode. + * @rmtoll ICSCR MSIRANGE LL_RCC_MSI_SetRange + * @param Range This parameter can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_SetRange(uint32_t Range) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSIRANGE, Range); +} + +/** + * @brief Get the Internal Multi Speed oscillator (MSI) clock range in run mode. + * @rmtoll ICSCR MSIRANGE LL_RCC_MSI_GetRange + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetRange(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSIRANGE)); +} + +/** + * @brief Get MSI Calibration value + * @note When MSITRIM is written, MSICAL is updated with the sum of + * MSITRIM and the factory trim value + * @rmtoll ICSCR MSICAL LL_RCC_MSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSICAL) >> RCC_ICSCR_MSICAL_Pos); +} + +/** + * @brief Set MSI Calibration trimming + * @note user-programmable trimming value that is added to the MSICAL + * @rmtoll ICSCR MSITRIM LL_RCC_MSI_SetCalibTrimming + * @param Value between Min_Data = 0x00 and Max_Data = 0xFF + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, Value << RCC_ICSCR_MSITRIM_Pos); +} + +/** + * @brief Get MSI Calibration trimming + * @rmtoll ICSCR MSITRIM LL_RCC_MSI_GetCalibTrimming + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSITRIM) >> RCC_ICSCR_MSITRIM_Pos); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_System System + * @{ + */ + +/** + * @brief Configure the system clock source + * @rmtoll CFGR SW LL_RCC_SetSysClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_MSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +} + +/** + * @brief Get the system clock source + * @rmtoll CFGR SWS LL_RCC_GetSysClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_MSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +} + +/** + * @brief Set AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +} + +/** + * @brief Set APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +} + +/** + * @brief Set APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +} + +/** + * @brief Get AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +} + +/** + * @brief Get APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +} + +/** + * @brief Get APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MCO MCO + * @{ + */ + +/** + * @brief Configure MCOx + * @rmtoll CFGR MCOSEL LL_RCC_ConfigMCO\n + * CFGR MCOPRE LL_RCC_ConfigMCO + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1SOURCE_NOCLOCK + * @arg @ref LL_RCC_MCO1SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO1SOURCE_HSI + * @arg @ref LL_RCC_MCO1SOURCE_MSI + * @arg @ref LL_RCC_MCO1SOURCE_HSE + * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK + * @arg @ref LL_RCC_MCO1SOURCE_LSI + * @arg @ref LL_RCC_MCO1SOURCE_LSE + * @param MCOxPrescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1_DIV_1 + * @arg @ref LL_RCC_MCO1_DIV_2 + * @arg @ref LL_RCC_MCO1_DIV_4 + * @arg @ref LL_RCC_MCO1_DIV_8 + * @arg @ref LL_RCC_MCO1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE, MCOxSource | MCOxPrescaler); +} + +/** + * @} + */ + + + +/** @defgroup RCC_LL_EF_RTC RTC + * @{ + */ + +/** + * @brief Set RTC Clock Source + * @note Once the RTC clock source has been selected, it cannot be changed any more unless + * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is + * set). The RTCRST bit can be used to reset them. + * @rmtoll CSR RTCSEL LL_RCC_SetRTCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CSR, RCC_CSR_RTCSEL, Source); +} + +/** + * @brief Get RTC Clock Source + * @rmtoll CSR RTCSEL LL_RCC_GetRTCClockSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_RTCSEL)); +} + +/** + * @brief Enable RTC + * @rmtoll CSR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RTCEN); +} + +/** + * @brief Disable RTC + * @rmtoll CSR RTCEN LL_RCC_DisableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableRTC(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_RTCEN); +} + +/** + * @brief Check if RTC has been enabled or not + * @rmtoll CSR RTCEN LL_RCC_IsEnabledRTC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_RTCEN) == RCC_CSR_RTCEN) ? 1UL : 0UL); +} + +/** + * @brief Force the Backup domain reset + * @rmtoll CSR RTCRST LL_RCC_ForceBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RTCRST); +} + +/** + * @brief Release the Backup domain reset + * @rmtoll CSR RTCRST LL_RCC_ReleaseBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_RTCRST); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_PLL PLL + * @{ + */ + +/** + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Disable PLL + * @note Cannot be disabled if the PLL clock is used as the system clock + * @rmtoll CR PLLON LL_RCC_PLL_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == RCC_CR_PLLRDY) ? 1UL : 0UL); +} + +/** + * @brief Configure PLL used for SYSCLK Domain + * @rmtoll CFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR PLLMUL LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR PLLDIV LL_RCC_PLL_ConfigDomain_SYS + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLMul This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_3 + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_12 + * @arg @ref LL_RCC_PLL_MUL_16 + * @arg @ref LL_RCC_PLL_MUL_24 + * @arg @ref LL_RCC_PLL_MUL_32 + * @arg @ref LL_RCC_PLL_MUL_48 + * @param PLLDiv This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_DIV_2 + * @arg @ref LL_RCC_PLL_DIV_3 + * @arg @ref LL_RCC_PLL_DIV_4 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLMul, uint32_t PLLDiv) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | RCC_CFGR_PLLDIV, Source | PLLMul | PLLDiv); +} + +/** + * @brief Configure PLL clock source + * @rmtoll CFGR PLLSRC LL_RCC_PLL_SetMainSource + * @param PLLSource This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLSRC, PLLSource); +} + +/** + * @brief Get the oscillator used as PLL clock source. + * @rmtoll CFGR PLLSRC LL_RCC_PLL_GetMainSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLSRC)); +} + +/** + * @brief Get PLL multiplication Factor + * @rmtoll CFGR PLLMUL LL_RCC_PLL_GetMultiplicator + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_3 + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_12 + * @arg @ref LL_RCC_PLL_MUL_16 + * @arg @ref LL_RCC_PLL_MUL_24 + * @arg @ref LL_RCC_PLL_MUL_32 + * @arg @ref LL_RCC_PLL_MUL_48 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMultiplicator(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLMUL)); +} + +/** + * @brief Get Division factor for the main PLL and other PLL + * @rmtoll CFGR PLLDIV LL_RCC_PLL_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLL_DIV_2 + * @arg @ref LL_RCC_PLL_DIV_3 + * @arg @ref LL_RCC_PLL_DIV_4 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLDIV)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Clear LSI ready interrupt flag + * @rmtoll CIR LSIRDYC LL_RCC_ClearFlag_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC); +} + +/** + * @brief Clear LSE ready interrupt flag + * @rmtoll CIR LSERDYC LL_RCC_ClearFlag_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYC); +} + +/** + * @brief Clear MSI ready interrupt flag + * @rmtoll CIR MSIRDYC LL_RCC_ClearFlag_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_MSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_MSIRDYC); +} + +/** + * @brief Clear HSI ready interrupt flag + * @rmtoll CIR HSIRDYC LL_RCC_ClearFlag_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYC); +} + +/** + * @brief Clear HSE ready interrupt flag + * @rmtoll CIR HSERDYC LL_RCC_ClearFlag_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYC); +} + +/** + * @brief Clear PLL ready interrupt flag + * @rmtoll CIR PLLRDYC LL_RCC_ClearFlag_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYC); +} + +/** + * @brief Clear Clock security system interrupt flag + * @rmtoll CIR CSSC LL_RCC_ClearFlag_HSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_CSSC); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Clear LSE Clock security system interrupt flag + * @rmtoll CIR LSECSSC LL_RCC_ClearFlag_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSECSS(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSECSSC); +} + +#endif /* RCC_LSECSS_SUPPORT */ +/** + * @brief Check if LSI ready interrupt occurred or not + * @rmtoll CIR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSIRDYF) == RCC_CIR_LSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if LSE ready interrupt occurred or not + * @rmtoll CIR LSERDYF LL_RCC_IsActiveFlag_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSERDYF) == RCC_CIR_LSERDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if MSI ready interrupt occurred or not + * @rmtoll CIR MSIRDYF LL_RCC_IsActiveFlag_MSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_MSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_MSIRDYF) == RCC_CIR_MSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if HSI ready interrupt occurred or not + * @rmtoll CIR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_HSIRDYF) == RCC_CIR_HSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if HSE ready interrupt occurred or not + * @rmtoll CIR HSERDYF LL_RCC_IsActiveFlag_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_HSERDYF) == RCC_CIR_HSERDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if PLL ready interrupt occurred or not + * @rmtoll CIR PLLRDYF LL_RCC_IsActiveFlag_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_PLLRDYF) == RCC_CIR_PLLRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if Clock security system interrupt occurred or not + * @rmtoll CIR CSSF LL_RCC_IsActiveFlag_HSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_CSSF) == RCC_CIR_CSSF) ? 1UL : 0UL); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Check if LSE Clock security system interrupt occurred or not + * @rmtoll CIR LSECSSF LL_RCC_IsActiveFlag_LSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSECSS(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSECSSF) == RCC_CIR_LSECSSF) ? 1UL : 0UL); +} +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @brief Check if RCC flag Independent Watchdog reset is set or not. + * @rmtoll CSR IWDGRSTF LL_RCC_IsActiveFlag_IWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) == RCC_CSR_IWDGRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Low Power reset is set or not. + * @rmtoll CSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) == RCC_CSR_LPWRRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag is set or not. + * @rmtoll CSR OBLRSTF LL_RCC_IsActiveFlag_OBLRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_OBLRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_OBLRSTF) == RCC_CSR_OBLRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Pin reset is set or not. + * @rmtoll CSR PINRSTF LL_RCC_IsActiveFlag_PINRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) == RCC_CSR_PINRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag POR/PDR reset is set or not. + * @rmtoll CSR PORRSTF LL_RCC_IsActiveFlag_PORRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_PORRSTF) == RCC_CSR_PORRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Software reset is set or not. + * @rmtoll CSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) == RCC_CSR_SFTRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Window Watchdog reset is set or not. + * @rmtoll CSR WWDGRSTF LL_RCC_IsActiveFlag_WWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) == RCC_CSR_WWDGRSTF) ? 1UL : 0UL); +} + +/** + * @brief Set RMVF bit to clear the reset flags. + * @rmtoll CSR RMVF LL_RCC_ClearResetFlags + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearResetFlags(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_IT_Management IT Management + * @{ + */ + +/** + * @brief Enable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_EnableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Enable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_EnableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Enable MSI ready interrupt + * @rmtoll CIR MSIRDYIE LL_RCC_EnableIT_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_MSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_MSIRDYIE); +} + +/** + * @brief Enable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_EnableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Enable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_EnableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Enable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_EnableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Enable LSE clock security system interrupt + * @rmtoll CIR LSECSSIE LL_RCC_EnableIT_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSECSS(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSECSSIE); +} +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @brief Disable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_DisableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Disable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_DisableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Disable MSI ready interrupt + * @rmtoll CIR MSIRDYIE LL_RCC_DisableIT_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_MSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_MSIRDYIE); +} + +/** + * @brief Disable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_DisableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Disable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_DisableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Disable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_DisableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Disable LSE clock security system interrupt + * @rmtoll CIR LSECSSIE LL_RCC_DisableIT_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSECSS(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSECSSIE); +} +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @brief Checks if LSI ready interrupt source is enabled or disabled. + * @rmtoll CIR LSIRDYIE LL_RCC_IsEnabledIT_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSIRDYIE) == RCC_CIR_LSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if LSE ready interrupt source is enabled or disabled. + * @rmtoll CIR LSERDYIE LL_RCC_IsEnabledIT_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSERDYIE) == RCC_CIR_LSERDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if MSI ready interrupt source is enabled or disabled. + * @rmtoll CIR MSIRDYIE LL_RCC_IsEnabledIT_MSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_MSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_MSIRDYIE) == RCC_CIR_MSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if HSI ready interrupt source is enabled or disabled. + * @rmtoll CIR HSIRDYIE LL_RCC_IsEnabledIT_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_HSIRDYIE) == RCC_CIR_HSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if HSE ready interrupt source is enabled or disabled. + * @rmtoll CIR HSERDYIE LL_RCC_IsEnabledIT_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_HSERDYIE) == RCC_CIR_HSERDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if PLL ready interrupt source is enabled or disabled. + * @rmtoll CIR PLLRDYIE LL_RCC_IsEnabledIT_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_PLLRDYIE) == RCC_CIR_PLLRDYIE) ? 1UL : 0UL); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Checks if LSECSS interrupt source is enabled or disabled. + * @rmtoll CIR LSECSSIE LL_RCC_IsEnabledIT_LSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSECSS(void) +{ + return ((READ_BIT(RCC->CIR, RCC_CIR_LSECSSIE) == RCC_CIR_LSECSSIE) ? 1UL : 0UL); +} +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_RCC_DeInit(void); +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions + * @{ + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* RCC */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_RCC_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h new file mode 100644 index 0000000..a61f40c --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_spi.h @@ -0,0 +1,2015 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_spi.h + * @author MCD Application Team + * @brief Header file of SPI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L1xx_LL_SPI_H +#define STM32L1xx_LL_SPI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined (SPI1) || defined (SPI2) || defined (SPI3) + +/** @defgroup SPI_LL SPI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_ES_INIT SPI Exported Init structure + * @{ + */ + +/** + * @brief SPI Init structures definition + */ +typedef struct +{ + uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_LL_EC_TRANSFER_MODE. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetTransferDirection().*/ + + uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave). + This parameter can be a value of @ref SPI_LL_EC_MODE. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetMode().*/ + + uint32_t DataWidth; /*!< Specifies the SPI data width. + This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetDataWidth().*/ + + uint32_t ClockPolarity; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_LL_EC_POLARITY. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetClockPolarity().*/ + + uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_LL_EC_PHASE. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetClockPhase().*/ + + uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (NSS pin) + or by software using the SSI bit. + This parameter can be a value of @ref SPI_LL_EC_NSS_MODE. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetNSSMode().*/ + + uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used + to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPRESCALER. + @note The communication clock is derived from the master clock. + The slave clock does not need to be set. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetBaudRatePrescaler().*/ + + uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetTransferBitOrder().*/ + + uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + This parameter can be a value of @ref SPI_LL_EC_CRC_CALCULATION. + + This feature can be modified afterwards using unitary + functions @ref LL_SPI_EnableCRC() and @ref LL_SPI_DisableCRC().*/ + + uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary + function @ref LL_SPI_SetCRCPolynomial().*/ + +} LL_SPI_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Constants SPI Exported Constants + * @{ + */ + +/** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_SPI_ReadReg function + * @{ + */ +#define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag */ +#define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag */ +#define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag */ +#define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag */ +#define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuration */ +#define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_PROTOCOL Serial Protocol + * @brief SPI TI Mode not supported for Category 1 and 2 + * @{ + */ +#define LL_SPI_PROTOCOL_MOTOROLA 0x00000000U /*!< Motorola mode. Used as default value */ +#if defined(SPI_CR2_FRF) +#define LL_SPI_PROTOCOL_TI (SPI_CR2_FRF) /*!< TI mode */ +#endif /* SPI_CR2_FRF */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is the first data capture edge */ +#define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */ +#define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler + * @{ + */ +#define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< BaudRate control equal to fPCLK/2 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/4 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/8 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/16 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< BaudRate control equal to fPCLK/32 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/64 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/128 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/256 */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order + * @{ + */ +#define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/received with the LSB first */ +#define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/received with the MSB first */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode + * @{ + */ +#define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mode. Rx and Tx transfer on 2 lines */ +#define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mode. Rx transfer only on 1 line */ +#define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx mode. Rx transfer on 1 line */ +#define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx mode. Tx transfer on 1 line */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode + * @{ + */ +#define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed internally. NSS pin not used and free */ +#define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in Input. Only used in Master mode */ +#define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in Output. Only used in Slave mode as chip select */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_SPI_DATAWIDTH_8BIT 0x00000000U /*!< Data length for SPI transfer: 8 bits */ +#define LL_SPI_DATAWIDTH_16BIT (SPI_CR1_DFF) /*!< Data length for SPI transfer: 16 bits */ +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation + * @{ + */ +#define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled */ +#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Macros SPI Exported Macros + * @{ + */ + +/** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Functions SPI Exported Functions + * @{ + */ + +/** @defgroup SPI_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable SPI peripheral + * @rmtoll CR1 SPE LL_SPI_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Disable SPI peripheral + * @note When disabling the SPI, follow the procedure described in the Reference Manual. + * @rmtoll CR1 SPE LL_SPI_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Check if SPI peripheral is enabled + * @rmtoll CR1 SPE LL_SPI_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabled(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL); +} + +/** + * @brief Set SPI operation mode to Master or Slave + * @note This bit should not be changed when communication is ongoing. + * @rmtoll CR1 MSTR LL_SPI_SetMode\n + * CR1 SSI LL_SPI_SetMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode); +} + +/** + * @brief Get SPI operation mode (Master or Slave) + * @rmtoll CR1 MSTR LL_SPI_GetMode\n + * CR1 SSI LL_SPI_GetMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + */ +__STATIC_INLINE uint32_t LL_SPI_GetMode(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI)); +} + +#if defined(SPI_CR2_FRF) +/** + * @brief Set serial protocol used. TI Mode not supported for Category 1 and 2. + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR2 FRF LL_SPI_SetStandard + * @param SPIx SPI Instance + * @param Standard This parameter can be one of the following values: + * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + * @arg @ref LL_SPI_PROTOCOL_TI + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_FRF, Standard); +} + +/** + * @brief Get serial protocol used + * @rmtoll CR2 FRF LL_SPI_GetStandard + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + * @arg @ref LL_SPI_PROTOCOL_TI + */ +__STATIC_INLINE uint32_t LL_SPI_GetStandard(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRF)); +} +#endif /* SPI_CR2_FRF */ + +/** + * @brief Set clock phase + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPHA LL_SPI_SetClockPhase + * @param SPIx SPI Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase); +} + +/** + * @brief Get clock phase + * @rmtoll CR1 CPHA LL_SPI_GetClockPhase + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPhase(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA)); +} + +/** + * @brief Set clock polarity + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity); +} + +/** + * @brief Get clock polarity + * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL)); +} + +/** + * @brief Set baud rate prescaler + * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Prescaler. + * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler + * @param SPIx SPI Instance + * @param BaudRate This parameter can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate); +} + +/** + * @brief Get baud rate prescaler + * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + */ +__STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR)); +} + +/** + * @brief Set transfer bit order + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder + * @param SPIx SPI Instance + * @param BitOrder This parameter can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder); +} + +/** + * @brief Get transfer bit order + * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST)); +} + +/** + * @brief Set transfer direction mode + * @note For Half-Duplex mode, Rx Direction is set by default. + * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-Duplex. + * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n + * CR1 BIDIMODE LL_SPI_SetTransferDirection\n + * CR1 BIDIOE LL_SPI_SetTransferDirection + * @param SPIx SPI Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection); +} + +/** + * @brief Get transfer direction mode + * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n + * CR1 BIDIMODE LL_SPI_GetTransferDirection\n + * CR1 BIDIOE LL_SPI_GetTransferDirection + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)); +} + +/** + * @brief Set frame data width + * @rmtoll CR1 DFF LL_SPI_SetDataWidth + * @param SPIx SPI Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_DFF, DataWidth); +} + +/** + * @brief Get frame data width + * @rmtoll CR1 DFF LL_SPI_GetDataWidth + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + */ +__STATIC_INLINE uint32_t LL_SPI_GetDataWidth(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_DFF)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_CRC_Management CRC Management + * @{ + */ + +/** + * @brief Enable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_EnableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Disable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_DisableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Check if CRC is enabled + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL); +} + +/** + * @brief Set CRCNext to transfer CRC on the line + * @note This bit has to be written as soon as the last data is written in the SPIx_DR register. + * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT); +} + +/** + * @brief Set polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial + * @param SPIx SPI Instance + * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly) +{ + WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly); +} + +/** + * @brief Get polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->CRCPR)); +} + +/** + * @brief Get Rx CRC + * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetRxCRC(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->RXCRCR)); +} + +/** + * @brief Get Tx CRC + * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetTxCRC(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->TXCRCR)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management + * @{ + */ + +/** + * @brief Set NSS mode + * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode. + * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_SetNSSMode + * @param SPIx SPI Instance + * @param NSS This parameter can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS); + MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U))); +} + +/** + * @brief Get NSS mode + * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_GetNSSMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + */ +__STATIC_INLINE uint32_t LL_SPI_GetNSSMode(const SPI_TypeDef *SPIx) +{ + uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM)); + uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U); + return (Ssm | Ssoe); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL); +} + +/** + * @brief Get CRC error flag + * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL); +} + +/** + * @brief Get mode fault error flag + * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL); +} + +/** + * @brief Get busy flag + * @note The BSY flag is cleared under any one of the following conditions: + * -When the SPI is correctly disabled + * -When a fault is detected in Master mode (MODF bit set to 1) + * -In Master mode, when it finishes a data transmission and no new data is ready to be + * sent + * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between + * each data transfer. + * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL); +} + +#if defined(SPI_CR2_FRF) +/** + * @brief Get frame format error flag + * @rmtoll SR FRE LL_SPI_IsActiveFlag_FRE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_FRE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_FRE) == (SPI_SR_FRE)) ? 1UL : 0UL); +} +#endif /* SPI_CR2_FRF */ + +/** + * @brief Clear CRC error flag + * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR); +} + +/** + * @brief Clear mode fault error flag + * @note Clearing this flag is done by a read access to the SPIx_SR + * register followed by a write access to the SPIx_CR1 register + * @rmtoll SR MODF LL_SPI_ClearFlag_MODF + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg_sr; + tmpreg_sr = SPIx->SR; + (void) tmpreg_sr; + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Clear overrun error flag + * @note Clearing this flag is done by a read access to the SPIx_DR + * register followed by a read access to the SPIx_SR register + * @rmtoll SR OVR LL_SPI_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_OVR(const SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->DR; + (void) tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @brief Clear frame format error flag + * @note Clearing this flag is done by reading SPIx_SR register + * @rmtoll SR FRE LL_SPI_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_FRE(const SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_IT_Management Interrupt Management + * @{ + */ + +/** + * @brief Enable error interrupt + * @note This bit controls the generation of an interrupt when an error condition + * occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Enable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Enable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Disable error interrupt + * @note This bit controls the generation of an interrupt when an error condition + * occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Disable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Disable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Check if error interrupt is enabled + * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Rx buffer not empty interrupt is enabled + * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DMA_Management DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll DR DR LL_SPI_DMA_GetRegAddr + * @param SPIx SPI Instance + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(const SPI_TypeDef *SPIx) +{ + return (uint32_t) &(SPIx->DR); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DATA_Management DATA Management + * @{ + */ + +/** + * @brief Read 8-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData8 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx) +{ + return (*((__IO uint8_t *)&SPIx->DR)); +} + +/** + * @brief Read 16-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx) +{ + return (uint16_t)(READ_REG(SPIx->DR)); +} + +/** + * @brief Write 8-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData8 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData) +{ +#if defined (__GNUC__) + __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR); + *spidr = TxData; +#else + *((__IO uint8_t *)&SPIx->DR) = TxData; +#endif /* __GNUC__ */ +} + +/** + * @brief Write 16-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ +#if defined (__GNUC__) + __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR); + *spidr = TxData; +#else + SPIx->DR = TxData; +#endif /* __GNUC__ */ +} + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_SPI_DeInit(const SPI_TypeDef *SPIx); +ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct); +void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ +/** + * @} + */ + +/** + * @} + */ + +#if defined(SPI_I2S_SUPPORT) +/** @defgroup I2S_LL I2S + * @{ + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_ES_INIT I2S Exported Init structure + * @{ + */ + +/** + * @brief I2S Init structure definition + */ + +typedef struct +{ + uint32_t Mode; /*!< Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_LL_EC_MODE + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetTransferMode().*/ + + uint32_t Standard; /*!< Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_STANDARD + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetStandard().*/ + + + uint32_t DataFormat; /*!< Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_DATA_FORMAT + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetDataFormat().*/ + + + uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_LL_EC_MCLK_OUTPUT + + This feature can be modified afterwards using unitary functions @ref LL_I2S_EnableMasterClock() or @ref LL_I2S_DisableMasterClock.*/ + + + uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_AUDIO_FREQ + + Audio Frequency can be modified afterwards using Reference manual formulas to calculate Prescaler Linear, Parity + and unitary functions @ref LL_I2S_SetPrescalerLinear() and @ref LL_I2S_SetPrescalerParity() to set it.*/ + + + uint32_t ClockPolarity; /*!< Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_LL_EC_POLARITY + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetClockPolarity().*/ + +} LL_I2S_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Constants I2S Exported Constants + * @{ + */ + +/** @defgroup I2S_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_I2S_ReadReg function + * @{ + */ +#define LL_I2S_SR_RXNE LL_SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_I2S_SR_TXE LL_SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_I2S_SR_BSY LL_SPI_SR_BSY /*!< Busy flag */ +#define LL_I2S_SR_UDR SPI_SR_UDR /*!< Underrun flag */ +#define LL_I2S_SR_OVR LL_SPI_SR_OVR /*!< Overrun flag */ +#define LL_I2S_SR_FRE LL_SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_DATA_FORMAT Data format + * @{ + */ +#define LL_I2S_DATAFORMAT_16B 0x00000000U /*!< Data length 16 bits, Channel length 16bit */ +#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN) /*!< Data length 16 bits, Channel length 32bit */ +#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0) /*!< Data length 24 bits, Channel length 32bit */ +#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1) /*!< Data length 16 bits, Channel length 32bit */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_I2S_POLARITY_LOW 0x00000000U /*!< Clock steady state is low level */ +#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL) /*!< Clock steady state is high level */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_STANDARD I2s Standard + * @{ + */ +#define LL_I2S_STANDARD_PHILIPS 0x00000000U /*!< I2S standard philips */ +#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0) /*!< MSB justified standard (left justified) */ +#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1) /*!< LSB justified standard (right justified) */ +#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1) /*!< PCM standard, short frame synchronization */ +#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC) /*!< PCM standard, long frame synchronization */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_I2S_MODE_SLAVE_TX 0x00000000U /*!< Slave Tx configuration */ +#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0) /*!< Slave Rx configuration */ +#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1) /*!< Master Tx configuration */ +#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1) /*!< Master Rx configuration */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_PRESCALER_FACTOR Prescaler Factor + * @{ + */ +#define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U /*!< Odd factor: Real divider value is = I2SDIV * 2 */ +#define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U) /*!< Odd factor: Real divider value is = (I2SDIV * 2)+1 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup I2S_LL_EC_MCLK_OUTPUT MCLK Output + * @{ + */ +#define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U /*!< Master clock output is disabled */ +#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE) /*!< Master clock output is enabled */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_AUDIO_FREQ Audio Frequency + * @{ + */ + +#define LL_I2S_AUDIOFREQ_192K 192000U /*!< Audio Frequency configuration 192000 Hz */ +#define LL_I2S_AUDIOFREQ_96K 96000U /*!< Audio Frequency configuration 96000 Hz */ +#define LL_I2S_AUDIOFREQ_48K 48000U /*!< Audio Frequency configuration 48000 Hz */ +#define LL_I2S_AUDIOFREQ_44K 44100U /*!< Audio Frequency configuration 44100 Hz */ +#define LL_I2S_AUDIOFREQ_32K 32000U /*!< Audio Frequency configuration 32000 Hz */ +#define LL_I2S_AUDIOFREQ_22K 22050U /*!< Audio Frequency configuration 22050 Hz */ +#define LL_I2S_AUDIOFREQ_16K 16000U /*!< Audio Frequency configuration 16000 Hz */ +#define LL_I2S_AUDIOFREQ_11K 11025U /*!< Audio Frequency configuration 11025 Hz */ +#define LL_I2S_AUDIOFREQ_8K 8000U /*!< Audio Frequency configuration 8000 Hz */ +#define LL_I2S_AUDIOFREQ_DEFAULT 2U /*!< Audio Freq not specified. Register I2SDIV = 2 */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Macros I2S Exported Macros + * @{ + */ + +/** @defgroup I2S_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2S_LL_Exported_Functions I2S Exported Functions + * @{ + */ + +/** @defgroup I2S_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Select I2S mode and Enable I2S peripheral + * @rmtoll I2SCFGR I2SMOD LL_I2S_Enable\n + * I2SCFGR I2SE LL_I2S_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Disable I2S peripheral + * @rmtoll I2SCFGR I2SE LL_I2S_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Check if I2S peripheral is enabled + * @rmtoll I2SCFGR I2SE LL_I2S_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabled(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL); +} + +/** + * @brief Set I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_SetDataFormat\n + * I2SCFGR CHLEN LL_I2S_SetDataFormat + * @param SPIx SPI Instance + * @param DataFormat This parameter can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetDataFormat(SPI_TypeDef *SPIx, uint32_t DataFormat) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN, DataFormat); +} + +/** + * @brief Get I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_GetDataFormat\n + * I2SCFGR CHLEN LL_I2S_GetDataFormat + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + */ +__STATIC_INLINE uint32_t LL_I2S_GetDataFormat(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN)); +} + +/** + * @brief Set I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + SET_BIT(SPIx->I2SCFGR, ClockPolarity); +} + +/** + * @brief Get I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_I2S_GetClockPolarity(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_CKPOL)); +} + +/** + * @brief Set I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_SetStandard\n + * I2SCFGR PCMSYNC LL_I2S_SetStandard + * @param SPIx SPI Instance + * @param Standard This parameter can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC, Standard); +} + +/** + * @brief Get I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_GetStandard\n + * I2SCFGR PCMSYNC LL_I2S_GetStandard + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + */ +__STATIC_INLINE uint32_t LL_I2S_GetStandard(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC)); +} + +/** + * @brief Set I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_SetTransferMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetTransferMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG, Mode); +} + +/** + * @brief Get I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_GetTransferMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + */ +__STATIC_INLINE uint32_t LL_I2S_GetTransferMode(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG)); +} + +/** + * @brief Set I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_SetPrescalerLinear + * @param SPIx SPI Instance + * @param PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerLinear(SPI_TypeDef *SPIx, uint8_t PrescalerLinear) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV, PrescalerLinear); +} + +/** + * @brief Get I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_GetPrescalerLinear + * @param SPIx SPI Instance + * @retval PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerLinear(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_I2SDIV)); +} + +/** + * @brief Set I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_SetPrescalerParity + * @param SPIx SPI Instance + * @param PrescalerParity This parameter can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerParity(SPI_TypeDef *SPIx, uint32_t PrescalerParity) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_ODD, PrescalerParity << 8U); +} + +/** + * @brief Get I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_GetPrescalerParity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerParity(const SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_ODD) >> 8U); +} + +/** + * @brief Enable the master clock output (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_EnableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableMasterClock(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Disable the master clock output (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_DisableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableMasterClock(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Check if the master clock output (Pin MCK) is enabled + * @rmtoll I2SPR MCKOE LL_I2S_IsEnabledMasterClock + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledMasterClock(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE) == (SPI_I2SPR_MCKOE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_FLAG FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_I2S_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_RXNE(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_RXNE(SPIx); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_I2S_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_TXE(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_TXE(SPIx); +} + +/** + * @brief Get busy flag + * @rmtoll SR BSY LL_I2S_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_BSY(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_BSY(SPIx); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_I2S_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_OVR(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_OVR(SPIx); +} + +/** + * @brief Get underrun error flag + * @rmtoll SR UDR LL_I2S_IsActiveFlag_UDR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_UDR(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_UDR) == (SPI_SR_UDR)) ? 1UL : 0UL); +} + +#if defined(SPI_CR2_FRF) +/** + * @brief Get frame format error flag + * @rmtoll SR FRE LL_I2S_IsActiveFlag_FRE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_FRE(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_FRE(SPIx); +} +#endif /* SPI_CR2_FRF */ + +/** + * @brief Get channel side flag. + * @note 0: Channel Left has to be transmitted or has been received\n + * 1: Channel Right has to be transmitted or has been received\n + * It has no significance in PCM mode. + * @rmtoll SR CHSIDE LL_I2S_IsActiveFlag_CHSIDE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_CHSIDE(const SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CHSIDE) == (SPI_SR_CHSIDE)) ? 1UL : 0UL); +} + +/** + * @brief Clear overrun error flag + * @rmtoll SR OVR LL_I2S_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_OVR(SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_OVR(SPIx); +} + +/** + * @brief Clear underrun error flag + * @rmtoll SR UDR LL_I2S_ClearFlag_UDR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_UDR(const SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void)tmpreg; +} + +/** + * @brief Clear frame format error flag + * @rmtoll SR FRE LL_I2S_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_FRE(const SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_FRE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_IT Interrupt Management + * @{ + */ + +/** + * @brief Enable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_ERR(SPIx); +} + +/** + * @brief Enable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_RXNE(SPIx); +} + +/** + * @brief Enable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_TXE(SPIx); +} + +/** + * @brief Disable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_ERR(SPIx); +} + +/** + * @brief Disable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_RXNE(SPIx); +} + +/** + * @brief Disable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_TXE(SPIx); +} + +/** + * @brief Check if ERR IT is enabled + * @rmtoll CR2 ERRIE LL_I2S_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_ERR(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_ERR(SPIx); +} + +/** + * @brief Check if RXNE IT is enabled + * @rmtoll CR2 RXNEIE LL_I2S_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_RXNE(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_RXNE(SPIx); +} + +/** + * @brief Check if TXE IT is enabled + * @rmtoll CR2 TXEIE LL_I2S_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_TXE(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_TXE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DMA DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_RX(SPIx); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_RX(SPIx); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_I2S_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_RX(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_RX(SPIx); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_TX(SPIx); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_TX(SPIx); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_I2S_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_TX(const SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_TX(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DATA DATA Management + * @{ + */ + +/** + * @brief Read 16-Bits in data register + * @rmtoll DR DR LL_I2S_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_I2S_ReceiveData16(SPI_TypeDef *SPIx) +{ + return LL_SPI_ReceiveData16(SPIx); +} + +/** + * @brief Write 16-Bits in data register + * @rmtoll DR DR LL_I2S_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ + LL_SPI_TransmitData16(SPIx, TxData); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_I2S_DeInit(const SPI_TypeDef *SPIx); +ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* SPI_I2S_SUPPORT */ + +#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L1xx_LL_SPI_H */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h new file mode 100644 index 0000000..806a57e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_system.h @@ -0,0 +1,2007 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_system.h + * @author MCD Application Team + * @brief Header file of SYSTEM LL module. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL SYSTEM driver contains a set of generic APIs that can be + used by user: + (+) Some of the FLASH features need to be handled in the SYSTEM file. + (+) Access to DBGCMU registers + (+) Access to SYSCFG registers + (+) Access to Routing Interfaces registers + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_SYSTEM_H +#define __STM32L1xx_LL_SYSTEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +#if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined(RI) + +/** @defgroup SYSTEM_LL SYSTEM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + * @{ + */ + +/** + * @brief Power-down in Run mode Flash key + */ +#define FLASH_PDKEY1 (0x04152637U) /*!< Flash power down key1 */ +#define FLASH_PDKEY2 (0xFAFBFCFDU) /*!< Flash power down key2: used with FLASH_PDKEY1 + to unlock the RUN_PD bit in FLASH_ACR */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + * @{ + */ + +/** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP +* @{ +*/ +#define LL_SYSCFG_REMAP_FLASH (0x00000000U) /*MEMRMP, SYSCFG_MEMRMP_MEM_MODE, Memory); +} + +/** + * @brief Get memory mapping at address 0x00000000 + * @rmtoll SYSCFG_MEMRMP MEM_MODE LL_SYSCFG_GetRemapMemory + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_FLASH + * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH + * @arg @ref LL_SYSCFG_REMAP_SRAM + * @arg @ref LL_SYSCFG_REMAP_FMC (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)); +} + +/** + * @brief Return the boot mode as configured by user. + * @rmtoll SYSCFG_MEMRMP BOOT_MODE LL_SYSCFG_GetBootMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_BOOTMODE_FLASH + * @arg @ref LL_SYSCFG_BOOTMODE_SYSTEMFLASH + * @arg @ref LL_SYSCFG_BOOTMODE_FSMC (*) + * @arg @ref LL_SYSCFG_BOOTMODE_SRAM + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetBootMode(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_BOOT_MODE)); +} + +/** + * @brief Enable internal pull-up on USB DP line. + * @rmtoll SYSCFG_PMC USB_PU LL_SYSCFG_EnableUSBPullUp + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableUSBPullUp(void) +{ + SET_BIT(SYSCFG->PMC, SYSCFG_PMC_USB_PU); +} + +/** + * @brief Disable internal pull-up on USB DP line. + * @rmtoll SYSCFG_PMC USB_PU LL_SYSCFG_DisableUSBPullUp + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableUSBPullUp(void) +{ + CLEAR_BIT(SYSCFG->PMC, SYSCFG_PMC_USB_PU); +} + +#if defined(LCD) +/** + * @brief Enable decoupling capacitance connection. + * @rmtoll SYSCFG_PMC LCD_CAPA LL_SYSCFG_EnableLCDCapacitanceConnection + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_LCDCAPA_PB2 + * @arg @ref LL_SYSCFG_LCDCAPA_PB12 + * @arg @ref LL_SYSCFG_LCDCAPA_PB0 + * @arg @ref LL_SYSCFG_LCDCAPA_PE11 + * @arg @ref LL_SYSCFG_LCDCAPA_PE12 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableLCDCapacitanceConnection(uint32_t Pin) +{ + SET_BIT(SYSCFG->PMC, Pin); +} + +/** + * @brief DIsable decoupling capacitance connection. + * @rmtoll SYSCFG_PMC LCD_CAPA LL_SYSCFG_DisableLCDCapacitanceConnection + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_LCDCAPA_PB2 + * @arg @ref LL_SYSCFG_LCDCAPA_PB12 + * @arg @ref LL_SYSCFG_LCDCAPA_PB0 + * @arg @ref LL_SYSCFG_LCDCAPA_PE11 + * @arg @ref LL_SYSCFG_LCDCAPA_PE12 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableLCDCapacitanceConnection(uint32_t Pin) +{ + CLEAR_BIT(SYSCFG->PMC, Pin); +} +#endif /* LCD */ + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll SYSCFG_EXTICR1 EXTI0 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI1 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI2 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI3 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI4 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI5 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI6 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI7 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI8 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI9 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI10 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI11 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI12 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI13 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI14 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR1 EXTI15 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI0 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI1 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI2 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI3 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI4 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI5 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI6 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI7 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI8 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI9 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI10 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI11 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI12 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI13 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI14 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTI15 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI0 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI1 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI2 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI3 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI4 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI5 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI6 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI7 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI8 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI9 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI10 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI11 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI12 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI13 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI14 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTI15 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI0 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI1 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI2 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI3 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI4 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI5 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI6 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI7 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI8 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI9 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI10 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI11 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI12 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI13 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI14 LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTI15 LL_SYSCFG_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE (*) + * @arg @ref LL_SYSCFG_EXTI_PORTF (*) + * @arg @ref LL_SYSCFG_EXTI_PORTG (*) + * @arg @ref LL_SYSCFG_EXTI_PORTH + * + * (*) value not defined in all devices. + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16), Port << POSITION_VAL((Line >> 16))); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll SYSCFG_EXTICR1 EXTI0 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI1 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI2 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI3 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI4 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI5 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI6 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI7 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI8 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI9 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI10 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI11 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI12 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI13 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI14 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR1 EXTI15 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI0 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI1 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI2 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI3 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI4 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI5 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI6 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI7 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI8 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI9 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI10 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI11 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI12 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI13 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI14 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTI15 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI0 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI1 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI2 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI3 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI4 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI5 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI6 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI7 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI8 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI9 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI10 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI11 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI12 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI13 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI14 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTI15 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI0 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI1 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI2 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI3 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI4 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI5 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI6 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI7 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI8 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI9 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI10 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI11 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI12 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI13 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI14 LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTI15 LL_SYSCFG_GetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE (*) + * @arg @ref LL_SYSCFG_EXTI_PORTF (*) + * @arg @ref LL_SYSCFG_EXTI_PORTG (*) + * @arg @ref LL_SYSCFG_EXTI_PORTH + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line) +{ + return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16)) >> POSITION_VAL(Line >> 16)); +} + +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + * @{ + */ + +/** + * @brief Return the device identifier + * @note 0x416: Cat.1 device\n + * 0x429: Cat.2 device\n + * 0x427: Cat.3 device\n + * 0x436: Cat.4 device or Cat.3 device(1)\n + * 0x437: Cat.5 device\n + * + * (1) Cat.3 devices: STM32L15xxC or STM3216xxC devices with + * RPN ending with letter 'A', in WLCSP64 packages or with more then 100 pin. + * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID)); +} + +/** + * @brief Return the device revision identifier + * @note This field indicates the revision of the device. + For example, it is read as Cat.1 RevA -> 0x1000, Cat.2 Rev Z -> 0x1018... + * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos); +} + +/** + * @brief Enable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Set Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment + * @param PinAssignment This parameter can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment) +{ + MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment); +} + +/** + * @brief Get Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment + * @retval Returned value can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)); +} + +/** + * @brief Freeze APB1 peripherals (group1 peripherals) + * @rmtoll APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB1FZ, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group1 peripherals) + * @rmtoll APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB1FZ, Periphs); +} + +/** + * @brief Freeze APB2 peripherals + * @rmtoll APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB2FZ, Periphs); +} + +/** + * @brief Unfreeze APB2 peripherals + * @rmtoll APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB2FZ, Periphs); +} + +/** + * @} + */ + +#if defined(COMP_CSR_VREFOUTEN) +/** @defgroup SYSTEM_LL_EF_VREFOUT VREFOUT + * @{ + */ + +/** + * @brief Enable the output of internal reference voltage (VrefInt) on I/O pin. + * @note The VrefInt output can be routed to any I/O in group 3: + * - For Cat.1 and Cat.2 devices: CH8 (PB0) or CH9 (PB1). + * - For Cat.3 devices: CH8 (PB0), CH9 (PB1) or CH0b (PB2). + * - For Cat.4 and Cat.5 devices: CH8 (PB0), CH9 (PB1), CH0b (PB2), + * CH1b (PF11) or CH2b (PF12). + * Note: Comparator peripheral clock must be preliminarily enabled. + * Refer to function "LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_COMP)". + * Note: In addition with this macro, VrefInt output buffer must be + * connected to the selected I/O pin. Refer to functions + * "LL_RI_EnableSwitchControlMode()" and "LL_RI_CloseIOSwitchLinkedToADC()". + * @note VrefInt output enable: Internal reference voltage connected to I/O group 3 + * VrefInt output disable: Internal reference voltage disconnected from I/O group 3 + * @rmtoll COMP_CSR VREFOUTEN LL_VREFOUT_Enable + * @retval None + */ +__STATIC_INLINE void LL_VREFOUT_Enable(void) +{ + SET_BIT(COMP->CSR, COMP_CSR_VREFOUTEN); +} + +/** + * @brief Disable the output of internal reference voltage (VrefInt) on I/O pin. + * @rmtoll COMP_CSR VREFOUTEN LL_VREFOUT_Disable + * @retval None + */ +__STATIC_INLINE void LL_VREFOUT_Disable(void) +{ + CLEAR_BIT(COMP->CSR, COMP_CSR_VREFOUTEN); +} + +/** + * @brief Check if output of internal reference voltage (VrefInt) is connected to I/O pin. + * @rmtoll COMP_CSR VREFOUTEN LL_VREFOUT_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_VREFOUT_IsEnabled(void) +{ + return ((READ_BIT(COMP->CSR, COMP_CSR_VREFOUTEN) == COMP_CSR_VREFOUTEN) ? 1UL : 0UL); +} + +/** + * @} + */ +#endif /* COMP_CSR_VREFOUTEN */ + +/** @defgroup SYSTEM_LL_EF_RI RI + * @{ + */ + +/** + * @brief Configures the routing interface to map Input Capture x of TIMx to a selected I/O pin. + * @rmtoll RI_ICR IC1OS LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC2OS LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC3OS LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC4OS LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR TIM LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC1 LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC2 LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC3 LL_RI_SetRemapInputCapture_TIM\n + * RI_ICR IC4 LL_RI_SetRemapInputCapture_TIM + * @param TIM_Select This parameter can be one of the following values: + * @arg @ref LL_RI_TIM_SELECT_NONE + * @arg @ref LL_RI_TIM_SELECT_TIM2 + * @arg @ref LL_RI_TIM_SELECT_TIM3 + * @arg @ref LL_RI_TIM_SELECT_TIM4 + * @param InputCaptureChannel This parameter can be one of the following values: + * @arg @ref LL_RI_INPUTCAPTURE_1 + * @arg @ref LL_RI_INPUTCAPTURE_2 + * @arg @ref LL_RI_INPUTCAPTURE_3 + * @arg @ref LL_RI_INPUTCAPTURE_4 + * @param Input This parameter can be one of the following values: + * @arg @ref LL_RI_INPUTCAPTUREROUTING_0 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_1 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_2 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_3 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_4 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_5 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_6 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_7 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_8 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_9 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_10 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_11 + * @arg @ref LL_RI_INPUTCAPTUREROUTING_12 (*) + * @arg @ref LL_RI_INPUTCAPTUREROUTING_13 (*) + * @arg @ref LL_RI_INPUTCAPTUREROUTING_14 (*) + * @arg @ref LL_RI_INPUTCAPTUREROUTING_15 (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RI_SetRemapInputCapture_TIM(uint32_t TIM_Select, uint32_t InputCaptureChannel, uint32_t Input) +{ + MODIFY_REG(RI->ICR, + RI_ICR_TIM | (InputCaptureChannel & (RI_ICR_IC4 | RI_ICR_IC3 | RI_ICR_IC2 | RI_ICR_IC1)) | (InputCaptureChannel & (RI_ICR_IC4OS | RI_ICR_IC3OS | RI_ICR_IC2OS | RI_ICR_IC1OS)), + TIM_Select | (InputCaptureChannel & (RI_ICR_IC4 | RI_ICR_IC3 | RI_ICR_IC2 | RI_ICR_IC1)) | (Input << POSITION_VAL(InputCaptureChannel))); +} + +/** + * @brief Disable the TIM Input capture remap (select the standard AF) + * @rmtoll RI_ICR IC1 LL_RI_DisableRemapInputCapture_TIM\n + * RI_ICR IC2 LL_RI_DisableRemapInputCapture_TIM\n + * RI_ICR IC3 LL_RI_DisableRemapInputCapture_TIM\n + * RI_ICR IC4 LL_RI_DisableRemapInputCapture_TIM + * @param InputCaptureChannel This parameter can be a combination of the following values: + * @arg @ref LL_RI_INPUTCAPTURE_1 + * @arg @ref LL_RI_INPUTCAPTURE_2 + * @arg @ref LL_RI_INPUTCAPTURE_3 + * @arg @ref LL_RI_INPUTCAPTURE_4 + * @retval None + */ +__STATIC_INLINE void LL_RI_DisableRemapInputCapture_TIM(uint32_t InputCaptureChannel) +{ + CLEAR_BIT(RI->ICR, (InputCaptureChannel & (RI_ICR_IC4 | RI_ICR_IC3 | RI_ICR_IC2 | RI_ICR_IC1))); +} + +/** + * @brief Close the routing interface Input Output switches linked to ADC. + * @rmtoll RI_ASCR1 CH LL_RI_CloseIOSwitchLinkedToADC\n + * RI_ASCR1 VCOMP LL_RI_CloseIOSwitchLinkedToADC + * @param IOSwitch This parameter can be a combination of the following values: + * @arg @ref LL_RI_IOSWITCH_CH0 + * @arg @ref LL_RI_IOSWITCH_CH1 + * @arg @ref LL_RI_IOSWITCH_CH2 + * @arg @ref LL_RI_IOSWITCH_CH3 + * @arg @ref LL_RI_IOSWITCH_CH4 + * @arg @ref LL_RI_IOSWITCH_CH5 + * @arg @ref LL_RI_IOSWITCH_CH6 + * @arg @ref LL_RI_IOSWITCH_CH7 + * @arg @ref LL_RI_IOSWITCH_CH8 + * @arg @ref LL_RI_IOSWITCH_CH9 + * @arg @ref LL_RI_IOSWITCH_CH10 + * @arg @ref LL_RI_IOSWITCH_CH11 + * @arg @ref LL_RI_IOSWITCH_CH12 + * @arg @ref LL_RI_IOSWITCH_CH13 + * @arg @ref LL_RI_IOSWITCH_CH14 + * @arg @ref LL_RI_IOSWITCH_CH15 + * @arg @ref LL_RI_IOSWITCH_CH18 + * @arg @ref LL_RI_IOSWITCH_CH19 + * @arg @ref LL_RI_IOSWITCH_CH20 + * @arg @ref LL_RI_IOSWITCH_CH21 + * @arg @ref LL_RI_IOSWITCH_CH22 + * @arg @ref LL_RI_IOSWITCH_CH23 + * @arg @ref LL_RI_IOSWITCH_CH24 + * @arg @ref LL_RI_IOSWITCH_CH25 + * @arg @ref LL_RI_IOSWITCH_VCOMP + * @arg @ref LL_RI_IOSWITCH_CH27 (*) + * @arg @ref LL_RI_IOSWITCH_CH28 (*) + * @arg @ref LL_RI_IOSWITCH_CH29 (*) + * @arg @ref LL_RI_IOSWITCH_CH30 (*) + * @arg @ref LL_RI_IOSWITCH_CH31 (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RI_CloseIOSwitchLinkedToADC(uint32_t IOSwitch) +{ + SET_BIT(RI->ASCR1, IOSwitch); +} + +/** + * @brief Open the routing interface Input Output switches linked to ADC. + * @rmtoll RI_ASCR1 CH LL_RI_OpenIOSwitchLinkedToADC\n + * RI_ASCR1 VCOMP LL_RI_OpenIOSwitchLinkedToADC + * @param IOSwitch This parameter can be a combination of the following values: + * @arg @ref LL_RI_IOSWITCH_CH0 + * @arg @ref LL_RI_IOSWITCH_CH1 + * @arg @ref LL_RI_IOSWITCH_CH2 + * @arg @ref LL_RI_IOSWITCH_CH3 + * @arg @ref LL_RI_IOSWITCH_CH4 + * @arg @ref LL_RI_IOSWITCH_CH5 + * @arg @ref LL_RI_IOSWITCH_CH6 + * @arg @ref LL_RI_IOSWITCH_CH7 + * @arg @ref LL_RI_IOSWITCH_CH8 + * @arg @ref LL_RI_IOSWITCH_CH9 + * @arg @ref LL_RI_IOSWITCH_CH10 + * @arg @ref LL_RI_IOSWITCH_CH11 + * @arg @ref LL_RI_IOSWITCH_CH12 + * @arg @ref LL_RI_IOSWITCH_CH13 + * @arg @ref LL_RI_IOSWITCH_CH14 + * @arg @ref LL_RI_IOSWITCH_CH15 + * @arg @ref LL_RI_IOSWITCH_CH18 + * @arg @ref LL_RI_IOSWITCH_CH19 + * @arg @ref LL_RI_IOSWITCH_CH20 + * @arg @ref LL_RI_IOSWITCH_CH21 + * @arg @ref LL_RI_IOSWITCH_CH22 + * @arg @ref LL_RI_IOSWITCH_CH23 + * @arg @ref LL_RI_IOSWITCH_CH24 + * @arg @ref LL_RI_IOSWITCH_CH25 + * @arg @ref LL_RI_IOSWITCH_VCOMP + * @arg @ref LL_RI_IOSWITCH_CH27 (*) + * @arg @ref LL_RI_IOSWITCH_CH28 (*) + * @arg @ref LL_RI_IOSWITCH_CH29 (*) + * @arg @ref LL_RI_IOSWITCH_CH30 (*) + * @arg @ref LL_RI_IOSWITCH_CH31 (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RI_OpenIOSwitchLinkedToADC(uint32_t IOSwitch) +{ + CLEAR_BIT(RI->ASCR1, IOSwitch); +} + +/** + * @brief Enable the switch control mode. + * @rmtoll RI_ASCR1 SCM LL_RI_EnableSwitchControlMode + * @retval None + */ +__STATIC_INLINE void LL_RI_EnableSwitchControlMode(void) +{ + SET_BIT(RI->ASCR1, RI_ASCR1_SCM); +} + +/** + * @brief Disable the switch control mode. + * @rmtoll RI_ASCR1 SCM LL_RI_DisableSwitchControlMode + * @retval None + */ +__STATIC_INLINE void LL_RI_DisableSwitchControlMode(void) +{ + CLEAR_BIT(RI->ASCR1, RI_ASCR1_SCM); +} + +/** + * @brief Close the routing interface Input Output switches not linked to ADC. + * @rmtoll RI_ASCR2 GR10_1 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_2 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_3 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_4 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_1 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_2 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_1 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_2 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_3 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_1 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_2 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_3 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_4 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH0b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH1b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH2b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH3b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH6b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH7b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH8b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH9b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH10b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH11b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH12b LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_3 LL_RI_CloseIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_4 LL_RI_CloseIOSwitchNotLinkedToADC + * @param IOSwitch This parameter can be a combination of the following values: + * @arg @ref LL_RI_IOSWITCH_GR10_1 + * @arg @ref LL_RI_IOSWITCH_GR10_2 + * @arg @ref LL_RI_IOSWITCH_GR10_3 + * @arg @ref LL_RI_IOSWITCH_GR10_4 + * @arg @ref LL_RI_IOSWITCH_GR6_1 + * @arg @ref LL_RI_IOSWITCH_GR6_2 + * @arg @ref LL_RI_IOSWITCH_GR5_1 + * @arg @ref LL_RI_IOSWITCH_GR5_2 + * @arg @ref LL_RI_IOSWITCH_GR5_3 + * @arg @ref LL_RI_IOSWITCH_GR4_1 + * @arg @ref LL_RI_IOSWITCH_GR4_2 + * @arg @ref LL_RI_IOSWITCH_GR4_3 + * @arg @ref LL_RI_IOSWITCH_CH0b (*) + * @arg @ref LL_RI_IOSWITCH_CH1b (*) + * @arg @ref LL_RI_IOSWITCH_CH2b (*) + * @arg @ref LL_RI_IOSWITCH_CH3b (*) + * @arg @ref LL_RI_IOSWITCH_CH6b (*) + * @arg @ref LL_RI_IOSWITCH_CH7b (*) + * @arg @ref LL_RI_IOSWITCH_CH8b (*) + * @arg @ref LL_RI_IOSWITCH_CH9b (*) + * @arg @ref LL_RI_IOSWITCH_CH10b (*) + * @arg @ref LL_RI_IOSWITCH_CH11b (*) + * @arg @ref LL_RI_IOSWITCH_CH12b (*) + * @arg @ref LL_RI_IOSWITCH_GR6_3 + * @arg @ref LL_RI_IOSWITCH_GR6_4 + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RI_CloseIOSwitchNotLinkedToADC(uint32_t IOSwitch) +{ + SET_BIT(RI->ASCR2, IOSwitch); +} + +/** + * @brief Open the routing interface Input Output switches not linked to ADC. + * @rmtoll RI_ASCR2 GR10_1 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_2 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_3 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR10_4 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_1 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_2 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_1 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_2 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR5_3 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_1 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_2 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_3 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR4_4 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH0b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH1b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH2b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH3b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH6b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH7b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH8b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH9b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH10b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH11b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 CH12b LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_3 LL_RI_OpenIOSwitchNotLinkedToADC\n + * RI_ASCR2 GR6_4 LL_RI_OpenIOSwitchNotLinkedToADC + * @param IOSwitch This parameter can be a combination of the following values: + * @arg @ref LL_RI_IOSWITCH_GR10_1 + * @arg @ref LL_RI_IOSWITCH_GR10_2 + * @arg @ref LL_RI_IOSWITCH_GR10_3 + * @arg @ref LL_RI_IOSWITCH_GR10_4 + * @arg @ref LL_RI_IOSWITCH_GR6_1 + * @arg @ref LL_RI_IOSWITCH_GR6_2 + * @arg @ref LL_RI_IOSWITCH_GR5_1 + * @arg @ref LL_RI_IOSWITCH_GR5_2 + * @arg @ref LL_RI_IOSWITCH_GR5_3 + * @arg @ref LL_RI_IOSWITCH_GR4_1 + * @arg @ref LL_RI_IOSWITCH_GR4_2 + * @arg @ref LL_RI_IOSWITCH_GR4_3 + * @arg @ref LL_RI_IOSWITCH_CH0b (*) + * @arg @ref LL_RI_IOSWITCH_CH1b (*) + * @arg @ref LL_RI_IOSWITCH_CH2b (*) + * @arg @ref LL_RI_IOSWITCH_CH3b (*) + * @arg @ref LL_RI_IOSWITCH_CH6b (*) + * @arg @ref LL_RI_IOSWITCH_CH7b (*) + * @arg @ref LL_RI_IOSWITCH_CH8b (*) + * @arg @ref LL_RI_IOSWITCH_CH9b (*) + * @arg @ref LL_RI_IOSWITCH_CH10b (*) + * @arg @ref LL_RI_IOSWITCH_CH11b (*) + * @arg @ref LL_RI_IOSWITCH_CH12b (*) + * @arg @ref LL_RI_IOSWITCH_GR6_3 + * @arg @ref LL_RI_IOSWITCH_GR6_4 + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RI_OpenIOSwitchNotLinkedToADC(uint32_t IOSwitch) +{ + CLEAR_BIT(RI->ASCR2, IOSwitch); +} + +/** + * @brief Enable Hysteresis of the input schmitt trigger of the port X + * @rmtoll RI_HYSCR1 PA LL_RI_EnableHysteresis\n + * RI_HYSCR1 PB LL_RI_EnableHysteresis\n + * RI_HYSCR1 PC LL_RI_EnableHysteresis\n + * RI_HYSCR1 PD LL_RI_EnableHysteresis\n + * RI_HYSCR1 PE LL_RI_EnableHysteresis\n + * RI_HYSCR1 PF LL_RI_EnableHysteresis\n + * RI_HYSCR1 PG LL_RI_EnableHysteresis\n + * RI_HYSCR2 PA LL_RI_EnableHysteresis\n + * RI_HYSCR2 PB LL_RI_EnableHysteresis\n + * RI_HYSCR2 PC LL_RI_EnableHysteresis\n + * RI_HYSCR2 PD LL_RI_EnableHysteresis\n + * RI_HYSCR2 PE LL_RI_EnableHysteresis\n + * RI_HYSCR2 PF LL_RI_EnableHysteresis\n + * RI_HYSCR2 PG LL_RI_EnableHysteresis\n + * RI_HYSCR3 PA LL_RI_EnableHysteresis\n + * RI_HYSCR3 PB LL_RI_EnableHysteresis\n + * RI_HYSCR3 PC LL_RI_EnableHysteresis\n + * RI_HYSCR3 PD LL_RI_EnableHysteresis\n + * RI_HYSCR3 PE LL_RI_EnableHysteresis\n + * RI_HYSCR3 PF LL_RI_EnableHysteresis\n + * RI_HYSCR3 PG LL_RI_EnableHysteresis\n + * RI_HYSCR4 PA LL_RI_EnableHysteresis\n + * RI_HYSCR4 PB LL_RI_EnableHysteresis\n + * RI_HYSCR4 PC LL_RI_EnableHysteresis\n + * RI_HYSCR4 PD LL_RI_EnableHysteresis\n + * RI_HYSCR4 PE LL_RI_EnableHysteresis\n + * RI_HYSCR4 PF LL_RI_EnableHysteresis\n + * RI_HYSCR4 PG LL_RI_EnableHysteresis + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_HSYTERESIS_PORT_A + * @arg @ref LL_RI_HSYTERESIS_PORT_B + * @arg @ref LL_RI_HSYTERESIS_PORT_C + * @arg @ref LL_RI_HSYTERESIS_PORT_D + * @arg @ref LL_RI_HSYTERESIS_PORT_E (*) + * @arg @ref LL_RI_HSYTERESIS_PORT_F (*) + * @arg @ref LL_RI_HSYTERESIS_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_EnableHysteresis(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->HYSCR1) + (Port >> 1U)); + CLEAR_BIT(*reg, Pin << (16U * (Port & 1U))); +} + +/** + * @brief Disable Hysteresis of the input schmitt trigger of the port X + * @rmtoll RI_HYSCR1 PA LL_RI_DisableHysteresis\n + * RI_HYSCR1 PB LL_RI_DisableHysteresis\n + * RI_HYSCR1 PC LL_RI_DisableHysteresis\n + * RI_HYSCR1 PD LL_RI_DisableHysteresis\n + * RI_HYSCR1 PE LL_RI_DisableHysteresis\n + * RI_HYSCR1 PF LL_RI_DisableHysteresis\n + * RI_HYSCR1 PG LL_RI_DisableHysteresis\n + * RI_HYSCR2 PA LL_RI_DisableHysteresis\n + * RI_HYSCR2 PB LL_RI_DisableHysteresis\n + * RI_HYSCR2 PC LL_RI_DisableHysteresis\n + * RI_HYSCR2 PD LL_RI_DisableHysteresis\n + * RI_HYSCR2 PE LL_RI_DisableHysteresis\n + * RI_HYSCR2 PF LL_RI_DisableHysteresis\n + * RI_HYSCR2 PG LL_RI_DisableHysteresis\n + * RI_HYSCR3 PA LL_RI_DisableHysteresis\n + * RI_HYSCR3 PB LL_RI_DisableHysteresis\n + * RI_HYSCR3 PC LL_RI_DisableHysteresis\n + * RI_HYSCR3 PD LL_RI_DisableHysteresis\n + * RI_HYSCR3 PE LL_RI_DisableHysteresis\n + * RI_HYSCR3 PF LL_RI_DisableHysteresis\n + * RI_HYSCR3 PG LL_RI_DisableHysteresis\n + * RI_HYSCR4 PA LL_RI_DisableHysteresis\n + * RI_HYSCR4 PB LL_RI_DisableHysteresis\n + * RI_HYSCR4 PC LL_RI_DisableHysteresis\n + * RI_HYSCR4 PD LL_RI_DisableHysteresis\n + * RI_HYSCR4 PE LL_RI_DisableHysteresis\n + * RI_HYSCR4 PF LL_RI_DisableHysteresis\n + * RI_HYSCR4 PG LL_RI_DisableHysteresis + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_HSYTERESIS_PORT_A + * @arg @ref LL_RI_HSYTERESIS_PORT_B + * @arg @ref LL_RI_HSYTERESIS_PORT_C + * @arg @ref LL_RI_HSYTERESIS_PORT_D + * @arg @ref LL_RI_HSYTERESIS_PORT_E (*) + * @arg @ref LL_RI_HSYTERESIS_PORT_F (*) + * @arg @ref LL_RI_HSYTERESIS_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_DisableHysteresis(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->HYSCR1) + ((Port >> 1U) << 2U)); + SET_BIT(*reg, Pin << (16U * (Port & 1U))); +} + +#if defined(RI_ASMR1_PA) +/** + * @brief Control analog switches of port X through the ADC interface or RI_ASCRx registers. + * @rmtoll RI_ASMR1 PA LL_RI_ControlSwitchByADC\n + * RI_ASMR1 PB LL_RI_ControlSwitchByADC\n + * RI_ASMR1 PC LL_RI_ControlSwitchByADC\n + * RI_ASMR1 PF LL_RI_ControlSwitchByADC\n + * RI_ASMR1 PG LL_RI_ControlSwitchByADC\n + * RI_ASMR2 PA LL_RI_ControlSwitchByADC\n + * RI_ASMR2 PB LL_RI_ControlSwitchByADC\n + * RI_ASMR2 PC LL_RI_ControlSwitchByADC\n + * RI_ASMR2 PF LL_RI_ControlSwitchByADC\n + * RI_ASMR2 PG LL_RI_ControlSwitchByADC\n + * RI_ASMR3 PA LL_RI_ControlSwitchByADC\n + * RI_ASMR3 PB LL_RI_ControlSwitchByADC\n + * RI_ASMR3 PC LL_RI_ControlSwitchByADC\n + * RI_ASMR3 PF LL_RI_ControlSwitchByADC\n + * RI_ASMR3 PG LL_RI_ControlSwitchByADC\n + * RI_ASMR4 PA LL_RI_ControlSwitchByADC\n + * RI_ASMR4 PB LL_RI_ControlSwitchByADC\n + * RI_ASMR4 PC LL_RI_ControlSwitchByADC\n + * RI_ASMR4 PF LL_RI_ControlSwitchByADC\n + * RI_ASMR4 PG LL_RI_ControlSwitchByADC\n + * RI_ASMR5 PA LL_RI_ControlSwitchByADC\n + * RI_ASMR5 PB LL_RI_ControlSwitchByADC\n + * RI_ASMR5 PC LL_RI_ControlSwitchByADC\n + * RI_ASMR5 PF LL_RI_ControlSwitchByADC\n + * RI_ASMR5 PG LL_RI_ControlSwitchByADC + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_ControlSwitchByADC(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->ASMR1) + ((Port * 3U) << 2)); + CLEAR_BIT(*reg, Pin); +} +#endif /* RI_ASMR1_PA */ + +#if defined(RI_ASMR1_PA) +/** + * @brief Control analog switches of port X by the timer OC. + * @rmtoll RI_ASMR1 PA LL_RI_ControlSwitchByTIM\n + * RI_ASMR1 PB LL_RI_ControlSwitchByTIM\n + * RI_ASMR1 PC LL_RI_ControlSwitchByTIM\n + * RI_ASMR1 PF LL_RI_ControlSwitchByTIM\n + * RI_ASMR1 PG LL_RI_ControlSwitchByTIM\n + * RI_ASMR2 PA LL_RI_ControlSwitchByTIM\n + * RI_ASMR2 PB LL_RI_ControlSwitchByTIM\n + * RI_ASMR2 PC LL_RI_ControlSwitchByTIM\n + * RI_ASMR2 PF LL_RI_ControlSwitchByTIM\n + * RI_ASMR2 PG LL_RI_ControlSwitchByTIM\n + * RI_ASMR3 PA LL_RI_ControlSwitchByTIM\n + * RI_ASMR3 PB LL_RI_ControlSwitchByTIM\n + * RI_ASMR3 PC LL_RI_ControlSwitchByTIM\n + * RI_ASMR3 PF LL_RI_ControlSwitchByTIM\n + * RI_ASMR3 PG LL_RI_ControlSwitchByTIM\n + * RI_ASMR4 PA LL_RI_ControlSwitchByTIM\n + * RI_ASMR4 PB LL_RI_ControlSwitchByTIM\n + * RI_ASMR4 PC LL_RI_ControlSwitchByTIM\n + * RI_ASMR4 PF LL_RI_ControlSwitchByTIM\n + * RI_ASMR4 PG LL_RI_ControlSwitchByTIM\n + * RI_ASMR5 PA LL_RI_ControlSwitchByTIM\n + * RI_ASMR5 PB LL_RI_ControlSwitchByTIM\n + * RI_ASMR5 PC LL_RI_ControlSwitchByTIM\n + * RI_ASMR5 PF LL_RI_ControlSwitchByTIM\n + * RI_ASMR5 PG LL_RI_ControlSwitchByTIM + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_ControlSwitchByTIM(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->ASMR1) + ((Port * 3U) << 2)); + SET_BIT(*reg, Pin); +} +#endif /* RI_ASMR1_PA */ + +#if defined(RI_CMR1_PA) +/** + * @brief Mask the input of port X during the capacitive sensing acquisition. + * @rmtoll RI_CMR1 PA LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR1 PB LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR1 PC LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR1 PF LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR1 PG LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR2 PA LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR2 PB LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR2 PC LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR2 PF LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR2 PG LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR3 PA LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR3 PB LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR3 PC LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR3 PF LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR3 PG LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR4 PA LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR4 PB LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR4 PC LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR4 PF LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR4 PG LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR5 PA LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR5 PB LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR5 PC LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR5 PF LL_RI_MaskChannelDuringAcquisition\n + * RI_CMR5 PG LL_RI_MaskChannelDuringAcquisition + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_MaskChannelDuringAcquisition(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->CMR1) + ((Port * 3U) << 2)); + CLEAR_BIT(*reg, Pin); +} +#endif /* RI_CMR1_PA */ + +#if defined(RI_CMR1_PA) +/** + * @brief Unmask the input of port X during the capacitive sensing acquisition. + * @rmtoll RI_CMR1 PA LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR1 PB LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR1 PC LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR1 PF LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR1 PG LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR2 PA LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR2 PB LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR2 PC LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR2 PF LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR2 PG LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR3 PA LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR3 PB LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR3 PC LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR3 PF LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR3 PG LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR4 PA LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR4 PB LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR4 PC LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR4 PF LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR4 PG LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR5 PA LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR5 PB LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR5 PC LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR5 PF LL_RI_UnmaskChannelDuringAcquisition\n + * RI_CMR5 PG LL_RI_UnmaskChannelDuringAcquisition + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_UnmaskChannelDuringAcquisition(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->CMR1) + ((Port * 3U) << 2)); + SET_BIT(*reg, Pin); +} +#endif /* RI_CMR1_PA */ + +#if defined(RI_CICR1_PA) +/** + * @brief Identify channel for timer input capture + * @rmtoll RI_CICR1 PA LL_RI_IdentifyChannelIO\n + * RI_CICR1 PB LL_RI_IdentifyChannelIO\n + * RI_CICR1 PC LL_RI_IdentifyChannelIO\n + * RI_CICR1 PF LL_RI_IdentifyChannelIO\n + * RI_CICR1 PG LL_RI_IdentifyChannelIO\n + * RI_CICR2 PA LL_RI_IdentifyChannelIO\n + * RI_CICR2 PB LL_RI_IdentifyChannelIO\n + * RI_CICR2 PC LL_RI_IdentifyChannelIO\n + * RI_CICR2 PF LL_RI_IdentifyChannelIO\n + * RI_CICR2 PG LL_RI_IdentifyChannelIO\n + * RI_CICR3 PA LL_RI_IdentifyChannelIO\n + * RI_CICR3 PB LL_RI_IdentifyChannelIO\n + * RI_CICR3 PC LL_RI_IdentifyChannelIO\n + * RI_CICR3 PF LL_RI_IdentifyChannelIO\n + * RI_CICR3 PG LL_RI_IdentifyChannelIO\n + * RI_CICR4 PA LL_RI_IdentifyChannelIO\n + * RI_CICR4 PB LL_RI_IdentifyChannelIO\n + * RI_CICR4 PC LL_RI_IdentifyChannelIO\n + * RI_CICR4 PF LL_RI_IdentifyChannelIO\n + * RI_CICR4 PG LL_RI_IdentifyChannelIO\n + * RI_CICR5 PA LL_RI_IdentifyChannelIO\n + * RI_CICR5 PB LL_RI_IdentifyChannelIO\n + * RI_CICR5 PC LL_RI_IdentifyChannelIO\n + * RI_CICR5 PF LL_RI_IdentifyChannelIO\n + * RI_CICR5 PG LL_RI_IdentifyChannelIO + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_IdentifyChannelIO(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->CICR1) + ((Port * 3U) << 2)); + CLEAR_BIT(*reg, Pin); +} +#endif /* RI_CICR1_PA */ + +#if defined(RI_CICR1_PA) +/** + * @brief Identify sampling capacitor for timer input capture + * @rmtoll RI_CICR1 PA LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR1 PB LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR1 PC LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR1 PF LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR1 PG LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR2 PA LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR2 PB LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR2 PC LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR2 PF LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR2 PG LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR3 PA LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR3 PB LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR3 PC LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR3 PF LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR3 PG LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR4 PA LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR4 PB LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR4 PC LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR4 PF LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR4 PG LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR5 PA LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR5 PB LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR5 PC LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR5 PF LL_RI_IdentifySamplingCapacitorIO\n + * RI_CICR5 PG LL_RI_IdentifySamplingCapacitorIO + * @param Port This parameter can be one of the following values: + * @arg @ref LL_RI_PORT_A + * @arg @ref LL_RI_PORT_B + * @arg @ref LL_RI_PORT_C + * @arg @ref LL_RI_PORT_F (*) + * @arg @ref LL_RI_PORT_G (*) + * + * (*) value not defined in all devices. + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_RI_PIN_0 + * @arg @ref LL_RI_PIN_1 + * @arg @ref LL_RI_PIN_2 + * @arg @ref LL_RI_PIN_3 + * @arg @ref LL_RI_PIN_4 + * @arg @ref LL_RI_PIN_5 + * @arg @ref LL_RI_PIN_6 + * @arg @ref LL_RI_PIN_7 + * @arg @ref LL_RI_PIN_8 + * @arg @ref LL_RI_PIN_9 + * @arg @ref LL_RI_PIN_10 + * @arg @ref LL_RI_PIN_11 + * @arg @ref LL_RI_PIN_12 + * @arg @ref LL_RI_PIN_13 + * @arg @ref LL_RI_PIN_14 + * @arg @ref LL_RI_PIN_15 + * @arg @ref LL_RI_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_RI_IdentifySamplingCapacitorIO(uint32_t Port, uint32_t Pin) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)((uint32_t)(&RI->CICR1) + ((Port * 3U) << 2)); + SET_BIT(*reg, Pin); +} +#endif /* RI_CICR1_PA */ + +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EF_FLASH FLASH + * @{ + */ + +/** + * @brief Set FLASH Latency + * @note Latetency can be modified only when ACC64 is set. (through function @ref LL_FLASH_Enable64bitAccess) + * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency + * @param Latency This parameter can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); +} + +/** + * @brief Get FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency + * @retval Returned value can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + */ +__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) +{ + return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); +} + +/** + * @brief Enable Prefetch + * @note Prefetch can be enabled only when ACC64 is set. (through function @ref LL_FLASH_Enable64bitAccess) + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_EnablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnablePrefetch(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Disable Prefetch + * @note Prefetch can be disabled only when ACC64 is set. (through function @ref LL_FLASH_Enable64bitAccess) + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_DisablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisablePrefetch(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Check if Prefetch buffer is enabled + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_IsPrefetchEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void) +{ + return ((READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == FLASH_ACR_PRFTEN) ? 1UL : 0UL); +} + +/** + * @brief Enable 64-bit access + * @rmtoll FLASH_ACR ACC64 LL_FLASH_Enable64bitAccess + * @retval None + */ +__STATIC_INLINE void LL_FLASH_Enable64bitAccess(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ACC64); +} + +/** + * @brief Disable 64-bit access + * @rmtoll FLASH_ACR ACC64 LL_FLASH_Disable64bitAccess + * @retval None + */ +__STATIC_INLINE void LL_FLASH_Disable64bitAccess(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ACC64); +} + +/** + * @brief Check if 64-bit access is enabled + * @rmtoll FLASH_ACR ACC64 LL_FLASH_Is64bitAccessEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_Is64bitAccessEnabled(void) +{ + return ((READ_BIT(FLASH->ACR, FLASH_ACR_ACC64) == FLASH_ACR_ACC64) ? 1UL : 0UL); +} + + +/** + * @brief Enable Flash Power-down mode during run mode or Low-power run mode + * @note Flash memory can be put in power-down mode only when the code is executed + * from RAM + * @note Flash must not be accessed when power down is enabled + * @note Flash must not be put in power-down while a program or an erase operation + * is on-going + * @rmtoll FLASH_ACR RUN_PD LL_FLASH_EnableRunPowerDown\n + * FLASH_PDKEYR PDKEY1 LL_FLASH_EnableRunPowerDown\n + * FLASH_PDKEYR PDKEY2 LL_FLASH_EnableRunPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableRunPowerDown(void) +{ + /* Following values must be written consecutively to unlock the RUN_PD bit in + FLASH_ACR */ + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1); + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2); + SET_BIT(FLASH->ACR, FLASH_ACR_RUN_PD); +} + +/** + * @brief Disable Flash Power-down mode during run mode or Low-power run mode + * @rmtoll FLASH_ACR RUN_PD LL_FLASH_DisableRunPowerDown\n + * FLASH_PDKEYR PDKEY1 LL_FLASH_DisableRunPowerDown\n + * FLASH_PDKEYR PDKEY2 LL_FLASH_DisableRunPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableRunPowerDown(void) +{ + /* Following values must be written consecutively to unlock the RUN_PD bit in + FLASH_ACR */ + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1); + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2); + CLEAR_BIT(FLASH->ACR, FLASH_ACR_RUN_PD); +} + +/** + * @brief Enable Flash Power-down mode during Sleep or Low-power sleep mode + * @note Flash must not be put in power-down while a program or an erase operation + * is on-going + * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_EnableSleepPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableSleepPowerDown(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD); +} + +/** + * @brief Disable Flash Power-down mode during Sleep or Low-power sleep mode + * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_DisableSleepPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableSleepPowerDown(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined(RI) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_SYSTEM_H */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h new file mode 100644 index 0000000..262bdf1 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Inc/stm32l1xx_ll_utils.h @@ -0,0 +1,270 @@ +/** + ****************************************************************************** + * @file stm32l1xx_ll_utils.h + * @author MCD Application Team + * @brief Header file of UTILS LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL UTILS driver contains a set of generic APIs that can be + used by user: + (+) Device electronic signature + (+) Timing functions + (+) PLL configuration functions + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_LL_UTILS_H +#define __STM32L1xx_LL_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx.h" + +/** @addtogroup STM32L1xx_LL_Driver + * @{ + */ + +/** @defgroup UTILS_LL UTILS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + * @{ + */ + +/* Max delay can be used in LL_mDelay */ +#define LL_MAX_DELAY 0xFFFFFFFFU + +/** + * @brief Unique device ID register base address + */ +#define UID_BASE_ADDRESS UID_BASE + +/** + * @brief Flash size data register base address + */ +#define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + * @{ + */ +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + * @{ + */ +/** + * @brief UTILS PLL structure definition + */ +typedef struct +{ + uint32_t PLLMul; /*!< Multiplication factor for PLL VCO input clock. + This parameter can be a value of @ref RCC_LL_EC_PLL_MUL + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLDiv; /*!< Division factor for PLL VCO output clock. + This parameter can be a value of @ref RCC_LL_EC_PLL_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ +} LL_UTILS_PLLInitTypeDef; + +/** + * @brief UTILS System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAHBPrescaler(). */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB1Prescaler(). */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB2_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB2Prescaler(). */ + +} LL_UTILS_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + * @{ + */ + +/** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + * @{ + */ +#define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */ +#define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + * @{ + */ + +/** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + * @{ + */ + +/** + * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + * @retval UID[31:0] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word0(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); +} + +/** + * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + * @retval UID[63:32] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word1(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 0x04U)))); +} + +/** + * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + * @retval UID[95:64] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word2(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 0x14U)))); +} + +/** + * @brief Get Flash memory size + * @note For DEV_ID = 0x416 or 0x427 or 0x429 or 0x437, this field value indicates the Flash memory + * size of the device in Kbytes.\n + * Example: 0x0080 = 128 Kbytes.\n + * For DEV_ID = 0x436, the field value can be '0' or '1', with '0' for 384 Kbytes and '1' for 256 Kbytes. + * @note For DEV_ID = 0x429, only LSB part of F_SIZE: F_SIZE[7:0] is valid. The MSB part + * F_SIZE[15:8] is reserved and must be ignored. + * @retval FLASH_SIZE[15:0]: Flash memory size + */ +__STATIC_INLINE uint32_t LL_GetFlashSize(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)) & 0xFFFFU); +} + + +/** + * @} + */ + +/** @defgroup UTILS_LL_EF_DELAY DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source of the time base. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @note When a RTOS is used, it is recommended to avoid changing the SysTick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Frequency of Ticks (Hz) + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + +void LL_Init1msTick(uint32_t HCLKFrequency); +void LL_mDelay(uint32_t Delay); + +/** + * @} + */ + +/** @defgroup UTILS_EF_SYSTEM SYSTEM + * @{ + */ + +void LL_SetSystemCoreClock(uint32_t HCLKFrequency); +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +#if defined(FLASH_ACR_LATENCY) +ErrorStatus LL_SetFlashLatency(uint32_t Frequency); +#endif /* FLASH_ACR_LATENCY */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L1xx_LL_UTILS_H */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/LICENSE.txt b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/LICENSE.txt new file mode 100644 index 0000000..3edc4d1 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/License.md b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/License.md new file mode 100644 index 0000000..f8a5385 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/License.md @@ -0,0 +1,3 @@ +# Copyright (c) 2017 STMicroelectronics + +This software component is licensed by STMicroelectronics under the **BSD 3-Clause** license. You may not use this file except in compliance with this license. You may obtain a copy of the license [here](https://opensource.org/licenses/BSD-3-Clause). \ No newline at end of file diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c new file mode 100644 index 0000000..cf8ec0d --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal.c @@ -0,0 +1,570 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal.c + * @author MCD Application Team + * @brief HAL module driver. + * This is the common part of the HAL initialization + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The common HAL driver contains a set of generic and common APIs that can be + used by the PPP peripheral drivers and the user to start using the HAL. + [..] + The HAL contains two APIs categories: + (+) Common HAL APIs + (+) Services HAL APIs + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup HAL HAL + * @brief HAL module driver. + * @{ + */ + +#ifdef HAL_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup HAL_Private_Defines HAL Private Defines + * @{ + */ + +/** + * @brief STM32L1xx HAL Driver version number + */ +#define __STM32L1xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L1xx_HAL_VERSION_SUB1 (0x04) /*!< [23:16] sub1 version */ +#define __STM32L1xx_HAL_VERSION_SUB2 (0x06) /*!< [15:8] sub2 version */ +#define __STM32L1xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L1xx_HAL_VERSION ((__STM32L1xx_HAL_VERSION_MAIN << 24)\ + |(__STM32L1xx_HAL_VERSION_SUB1 << 16)\ + |(__STM32L1xx_HAL_VERSION_SUB2 << 8 )\ + |(__STM32L1xx_HAL_VERSION_RC)) + +#define IDCODE_DEVID_MASK (0x00000FFFU) + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/* Exported variables --------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Variables + * @{ + */ +__IO uint32_t uwTick; +uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid priority */ +uint32_t uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup HAL_Exported_Functions HAL Exported Functions + * @{ + */ + +/** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Initialize the Flash interface, the NVIC allocation and initial clock + configuration. It initializes the source of time base also when timeout + is needed and the backup domain when enabled. + (+) De-initialize common part of the HAL. + (+) Configure the time base source to have 1ms time base with a dedicated + Tick interrupt priority. + (++) SysTick timer is used by default as source of time base, but user + can eventually implement his proper time base source (a general purpose + timer for example or other time source), keeping in mind that Time base + duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and + handled in milliseconds basis. + (++) Time base configuration function (HAL_InitTick ()) is called automatically + at the beginning of the program after reset by HAL_Init() or at any time + when clock is configured, by HAL_RCC_ClockConfig(). + (++) Source of time base is configured to generate interrupts at regular + time intervals. Care must be taken if HAL_Delay() is called from a + peripheral ISR process, the Tick interrupt line must have higher priority + (numerically lower) than the peripheral interrupt. Otherwise the caller + ISR process will be blocked. + (++) functions affecting time base configurations are declared as __weak + to make override possible in case of other implementations in user file. + +@endverbatim + * @{ + */ + +/** + * @brief This function configures the Flash prefetch, + * configures time base source, NVIC and Low level hardware + * @note This function is called at the beginning of program after reset and before + * the clock configuration + * @note The time base configuration is based on MSI clock when exiting from Reset. + * Once done, time base tick start incrementing. + * In the default implementation,Systick is used as source of time base. + * the tick variable is incremented each 1ms in its ISR. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Configure Flash prefetch */ +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + { + status = HAL_ERROR; + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + } + + /* Return function status */ + return status; +} + +/** + * @brief This function de-initializes common part of the HAL and stops the source + * of time base. + * @note This function is optional. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DeInit(void) +{ + /* Reset of all peripherals */ + __HAL_RCC_APB1_FORCE_RESET(); + __HAL_RCC_APB1_RELEASE_RESET(); + + __HAL_RCC_APB2_FORCE_RESET(); + __HAL_RCC_APB2_RELEASE_RESET(); + + __HAL_RCC_AHB_FORCE_RESET(); + __HAL_RCC_AHB_RELEASE_RESET(); + + /* De-Init the low level hardware */ + HAL_MspDeInit(); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Initialize the MSP. + * @retval None + */ +__weak void HAL_MspInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitialize the MSP. + * @retval None + */ +__weak void HAL_MspDeInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief This function configures the source of the time base: + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program after + * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig(). + * @note In the default implementation, SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals. + * Care must be taken if HAL_Delay() is called from a peripheral ISR process, + * The SysTick interrupt must have higher priority (numerically lower) + * than the peripheral interrupt. Otherwise the caller ISR process will be blocked. + * The function is declared as __weak to be overwritten in case of other + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (uwTickFreq != 0U) + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U) + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + uwTickPrio = TickPriority; + } + else + { + status = HAL_ERROR; + } + } + else + { + status = HAL_ERROR; + } + } + else + { + status = HAL_ERROR; + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group2 HAL Control functions + * @brief HAL Control functions + * +@verbatim + =============================================================================== + ##### HAL Control functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Provide a tick value in millisecond + (+) Provide a blocking delay in millisecond + (+) Suspend the time base source interrupt + (+) Resume the time base source interrupt + (+) Get the HAL API driver version + (+) Get the device identifier + (+) Get the device revision identifier + (+) Get the unique device identifier + +@endverbatim + * @{ + */ + +/** + * @brief This function is called to increment a global variable "uwTick" + * used as application time base. + * @note In the default implementation, this variable is incremented each 1ms + * in SysTick ISR. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + uwTick += uwTickFreq; +} + +/** + * @brief Provide a tick value in millisecond. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + return uwTick; +} + +/** + * @brief This function returns a tick priority. + * @retval tick priority + */ +uint32_t HAL_GetTickPrio(void) +{ + return uwTickPrio; +} + +/** + * @brief Set new tick Freq. + * @param Freq tick frequency + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SetTickFreq(uint32_t Freq) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t prevTickFreq; + + assert_param(IS_TICKFREQ(Freq)); + + if (uwTickFreq != Freq) + { + /* Back up uwTickFreq frequency */ + prevTickFreq = uwTickFreq; + + /* Update uwTickFreq global variable used by HAL_InitTick() */ + uwTickFreq = Freq; + + /* Apply the new tick Freq */ + status = HAL_InitTick(uwTickPrio); + + if (status != HAL_OK) + { + /* Restore previous tick frequency */ + uwTickFreq = prevTickFreq; + } + } + + return status; +} + +/** + * @brief Return tick frequency. + * @retval Tick frequency. + * Value of @ref HAL_TickFreqTypeDef. + */ +uint32_t HAL_GetTickFreq(void) +{ + return uwTickFreq; +} + +/** + * @brief This function provides minimum delay (in milliseconds) based + * on variable incremented. + * @note In the default implementation , SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals where uwTick + * is incremented. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + uint32_t tickstart = HAL_GetTick(); + uint32_t wait = Delay; + + /* Add a period to guaranty minimum wait */ + if (wait < HAL_MAX_DELAY) + { + wait += (uint32_t)(uwTickFreq); + } + + while((HAL_GetTick() - tickstart) < wait) + { + } +} + +/** + * @brief Suspend the Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_SuspendTick() + * is called, the SysTick interrupt will be disabled and so Tick increment + * is suspended. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_SuspendTick(void) +{ + /* Disable SysTick Interrupt */ + CLEAR_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Resume the Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_ResumeTick() + * is called, the SysTick interrupt will be enabled and so Tick increment + * is resumed. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_ResumeTick(void) +{ + /* Enable SysTick Interrupt */ + SET_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Return the HAL revision + * @retval version: 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t HAL_GetHalVersion(void) +{ + return __STM32L1xx_HAL_VERSION; +} + +/** + * @brief Return the device revision identifier. + * @retval Device revision identifier + */ +uint32_t HAL_GetREVID(void) +{ + return((DBGMCU->IDCODE) >> 16U); +} + +/** + * @brief Return the device identifier. + * @retval Device identifier + */ +uint32_t HAL_GetDEVID(void) +{ + return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK); +} + +/** + * @brief Return the first word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier 31:0 bits + */ +uint32_t HAL_GetUIDw0(void) +{ + return(READ_REG(*((uint32_t *)UID_BASE))); +} + +/** + * @brief Return the second word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier 63:32 bits + */ +uint32_t HAL_GetUIDw1(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 0x4U)))); +} + +/** + * @brief Return the third word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier 95:64 bits + */ +uint32_t HAL_GetUIDw2(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 0x14U)))); +} + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group3 DBGMCU Peripheral Control functions + * @brief DBGMCU Peripheral Control functions + * +@verbatim + =============================================================================== + ##### DBGMCU Peripheral Control functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Enable/Disable Debug module during SLEEP mode + (+) Enable/Disable Debug module during STOP mode + (+) Enable/Disable Debug module during STANDBY mode + +@endverbatim + * @{ + */ + +/** + * @brief Enable the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c new file mode 100644 index 0000000..37fb751 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c @@ -0,0 +1,537 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_cortex.c + * @author MCD Application Team + * @brief CORTEX HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the CORTEX: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + * @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + + [..] + *** How to configure Interrupts using Cortex HAL driver *** + =========================================================== + [..] + This section provide functions allowing to configure the NVIC interrupts (IRQ). + The Cortex-M3 exceptions are managed by CMSIS functions. + + (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping() function + + (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority() + + (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ() + + + -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ pre-emption is no more possible. + The pending IRQ priority will be managed only by the sub priority. + + -@- IRQ priority order (sorted by highest to lowest priority): + (+@) Lowest pre-emption priority + (+@) Lowest sub priority + (+@) Lowest hardware priority (IRQ number) + + [..] + *** How to configure Systick using Cortex HAL driver *** + ======================================================== + [..] + Setup SysTick Timer for 1 msec interrupts. + + (+) The HAL_SYSTICK_Config()function calls the SysTick_Config() function which + is a CMSIS function that: + (++) Configures the SysTick Reload register with value passed as function parameter. + (++) Configures the SysTick IRQ priority to the lowest value (0x0F). + (++) Resets the SysTick Counter register. + (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK). + (++) Enables the SysTick Interrupt. + (++) Starts the SysTick Counter. + + (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro + __HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the + HAL_SYSTICK_Config() function call. The __HAL_CORTEX_SYSTICKCLK_CONFIG() macro is defined + inside the stm32l1xx_hal_cortex.h file. + + (+) You can change the SysTick IRQ priority by calling the + HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function + call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function. + + (+) To adjust the SysTick time base, use the following formula: + + Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s) + (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function + (++) Reload Value should not exceed 0xFFFFFF + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* + Additional Tables: CORTEX_NVIC_Priority_Table + The table below gives the allowed values of the pre-emption priority and subpriority according + to the Priority Grouping configuration performed by HAL_NVIC_SetPriorityGrouping() function. + ========================================================================================================================== + NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description + ========================================================================================================================== + NVIC_PRIORITYGROUP_0 | 0 | 0-15 | 0 bits for pre-emption priority + | | | 4 bits for subpriority + -------------------------------------------------------------------------------------------------------------------------- + NVIC_PRIORITYGROUP_1 | 0-1 | 0-7 | 1 bits for pre-emption priority + | | | 3 bits for subpriority + -------------------------------------------------------------------------------------------------------------------------- + NVIC_PRIORITYGROUP_2 | 0-3 | 0-3 | 2 bits for pre-emption priority + | | | 2 bits for subpriority + -------------------------------------------------------------------------------------------------------------------------- + NVIC_PRIORITYGROUP_3 | 0-7 | 0-1 | 3 bits for pre-emption priority + | | | 1 bits for subpriority + -------------------------------------------------------------------------------------------------------------------------- + NVIC_PRIORITYGROUP_4 | 0-15 | 0 | 4 bits for pre-emption priority + | | | 0 bits for subpriority + ========================================================================================================================== +*/ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup CORTEX CORTEX + * @brief CORTEX HAL module driver + * @{ + */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions + * @{ + */ + + +/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and de-initialization functions ##### + ============================================================================== + [..] + This section provide the Cortex HAL driver functions allowing to configure Interrupts + Systick functionalities + +@endverbatim + * @{ + */ + + +/** + * @brief Sets the priority grouping field (pre-emption priority and subpriority) + * using the required unlock sequence. + * @param PriorityGroup The priority grouping bits length. + * This parameter can be one of the following values: + * @arg NVIC_PRIORITYGROUP_0: 0 bits for pre-emption priority + * 4 bits for subpriority + * @arg NVIC_PRIORITYGROUP_1: 1 bits for pre-emption priority + * 3 bits for subpriority + * @arg NVIC_PRIORITYGROUP_2: 2 bits for pre-emption priority + * 2 bits for subpriority + * @arg NVIC_PRIORITYGROUP_3: 3 bits for pre-emption priority + * 1 bits for subpriority + * @arg NVIC_PRIORITYGROUP_4: 4 bits for pre-emption priority + * 0 bits for subpriority + * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); +} + +/** + * @brief Sets the priority of an interrupt. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @param PreemptPriority The pre-emption priority for the IRQn channel. + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority + * @param SubPriority the subpriority level for the IRQ channel. + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t prioritygroup = 0x00; + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); +} + +/** + * @brief Enables a device specific interrupt in the NVIC interrupt controller. + * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig() + * function should be called before. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); +} + +/** + * @brief Disables a device specific interrupt in the NVIC interrupt controller. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @retval None + */ +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Disable interrupt */ + NVIC_DisableIRQ(IRQn); +} + +/** + * @brief Initiates a system reset request to reset the MCU. + * @retval None + */ +void HAL_NVIC_SystemReset(void) +{ + /* System Reset */ + NVIC_SystemReset(); +} + +/** + * @brief Initializes the System Timer and its interrupt, and starts the System Tick Timer. + * Counter is in free running mode to generate periodic interrupts. + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + return SysTick_Config(TicksNumb); +} +/** + * @} + */ + +/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions + * @brief Cortex control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control the CORTEX + (NVIC, SYSTICK, MPU) functionalities. + + +@endverbatim + * @{ + */ + +#if (__MPU_PRESENT == 1) +/** + * @brief Enable the MPU. + * @param MPU_Control Specifies the control mode of the MPU during hard fault, + * NMI, FAULTMASK and privileged accessto the default memory + * This parameter can be one of the following values: + * @arg MPU_HFNMI_PRIVDEF_NONE + * @arg MPU_HARDFAULT_NMI + * @arg MPU_PRIVILEGED_DEFAULT + * @arg MPU_HFNMI_PRIVDEF + * @retval None + */ +void HAL_MPU_Enable(uint32_t MPU_Control) +{ + /* Enable the MPU */ + MPU->CTRL = (MPU_Control | MPU_CTRL_ENABLE_Msk); + + /* Ensure MPU setting take effects */ + __DSB(); + __ISB(); +} + +/** + * @brief Disable the MPU. + * @retval None + */ +void HAL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + + /* Disable the MPU and clear the control register*/ + MPU->CTRL = 0; +} + +/** + * @brief Enable the MPU Region. + * @retval None + */ +void HAL_MPU_EnableRegion(uint32_t RegionNumber) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + + /* Set the Region number */ + MPU->RNR = RegionNumber; + + /* Enable the Region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Disable the MPU Region. + * @retval None + */ +void HAL_MPU_DisableRegion(uint32_t RegionNumber) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + + /* Set the Region number */ + MPU->RNR = RegionNumber; + + /* Disable the Region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Initialize and configure the Region and the memory to be protected. + * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains + * the initialization and configuration information. + * @retval None + */ +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number)); + assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable)); + assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec)); + assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission)); + assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField)); + assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable)); + assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable)); + assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable)); + assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable)); + assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size)); + + /* Set the Region number */ + MPU->RNR = MPU_Init->Number; + + /* Disable the Region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); + + /* Apply configuration */ + MPU->RBAR = MPU_Init->BaseAddress; + MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | + ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | + ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | + ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | + ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | + ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | + ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos); +} +#endif /* __MPU_PRESENT */ + +/** + * @brief Gets the priority grouping field from the NVIC Interrupt Controller. + * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field) + */ +uint32_t HAL_NVIC_GetPriorityGrouping(void) +{ + /* Get the PRIGROUP[10:8] field value */ + return NVIC_GetPriorityGrouping(); +} + +/** + * @brief Gets the priority of an interrupt. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @param PriorityGroup the priority grouping bits length. + * This parameter can be one of the following values: + * @arg NVIC_PRIORITYGROUP_0: 0 bits for pre-emption priority + * 4 bits for subpriority + * @arg NVIC_PRIORITYGROUP_1: 1 bits for pre-emption priority + * 3 bits for subpriority + * @arg NVIC_PRIORITYGROUP_2: 2 bits for pre-emption priority + * 2 bits for subpriority + * @arg NVIC_PRIORITYGROUP_3: 3 bits for pre-emption priority + * 1 bits for subpriority + * @arg NVIC_PRIORITYGROUP_4: 4 bits for pre-emption priority + * 0 bits for subpriority + * @param pPreemptPriority Pointer on the Preemptive priority value (starting from 0). + * @param pSubPriority Pointer on the Subpriority value (starting from 0). + * @retval None + */ +void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + /* Get priority for Cortex-M system or device specific interrupts */ + NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority); +} + +/** + * @brief Sets Pending bit of an external interrupt. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @retval None + */ +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + /* Set interrupt pending */ + NVIC_SetPendingIRQ(IRQn); +} + +/** + * @brief Gets Pending Interrupt (reads the pending register in the NVIC + * and returns the pending bit for the specified interrupt). + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @retval status: - 0 Interrupt status is not pending. + * - 1 Interrupt status is pending. + */ +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + /* Return 1 if pending else 0 */ + return NVIC_GetPendingIRQ(IRQn); +} + +/** + * @brief Clears the pending bit of an external interrupt. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @retval None + */ +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + /* Clear pending interrupt */ + NVIC_ClearPendingIRQ(IRQn); +} + +/** + * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit). + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32l1xxxx.h)) + * @retval status: - 0 Interrupt status is not pending. + * - 1 Interrupt status is pending. + */ +uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn) +{ + /* Return 1 if active else 0 */ + return NVIC_GetActive(IRQn); +} + +/** + * @brief Configures the SysTick clock source. + * @param CLKSource specifies the SysTick clock source. + * This parameter can be one of the following values: + * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source. + * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source. + * @retval None + */ +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource) +{ + /* Check the parameters */ + assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource)); + if (CLKSource == SYSTICK_CLKSOURCE_HCLK) + { + SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK; + } + else + { + SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK; + } +} + +/** + * @brief This function handles SYSTICK interrupt request. + * @retval None + */ +void HAL_SYSTICK_IRQHandler(void) +{ + HAL_SYSTICK_Callback(); +} + +/** + * @brief SYSTICK callback. + * @retval None + */ +__weak void HAL_SYSTICK_Callback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_SYSTICK_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_CORTEX_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c new file mode 100644 index 0000000..2c476a4 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_dma.c @@ -0,0 +1,909 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_dma.c + * @author MCD Application Team + * @brief DMA HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Direct Memory Access (DMA) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and errors functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable and configure the peripheral to be connected to the DMA Channel + (except for internal SRAM / FLASH memories: no initialization is + necessary). Please refer to the Reference manual for connection between peripherals + and DMA requests. + + (#) For a given Channel, program the required configuration through the following parameters: + Channel request, Transfer Direction, Source and Destination data formats, + Circular or Normal mode, Channel Priority level, Source and Destination Increment mode + using HAL_DMA_Init() function. + + (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error + detection. + + (#) Use HAL_DMA_Abort() function to abort the current transfer + + -@- In Memory-to-Memory transfer mode, Circular mode is not allowed. + *** Polling mode IO operation *** + ================================= + [..] + (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source + address and destination address and the Length of data to be transferred + (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this + case a fixed Timeout can be configured by User depending from his application. + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority() + (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ() + (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of + Source address and destination address and the Length of data to be transferred. + In this case the DMA interrupt is configured + (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine + (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can + add his own function to register callbacks with HAL_DMA_RegisterCallback(). + + *** DMA HAL driver macros list *** + ============================================= + [..] + Below the list of macros in DMA HAL driver. + + (+) __HAL_DMA_ENABLE: Enable the specified DMA Channel. + (+) __HAL_DMA_DISABLE: Disable the specified DMA Channel. + (+) __HAL_DMA_GET_FLAG: Get the DMA Channel pending flags. + (+) __HAL_DMA_CLEAR_FLAG: Clear the DMA Channel pending flags. + (+) __HAL_DMA_ENABLE_IT: Enable the specified DMA Channel interrupts. + (+) __HAL_DMA_DISABLE_IT: Disable the specified DMA Channel interrupts. + (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Channel interrupt is enabled or not. + + [..] + (@) You can refer to the DMA HAL driver header file for more useful macros + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup DMA DMA + * @brief DMA HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup DMA_Private_Functions DMA Private Functions + * @{ + */ + +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to initialize the DMA Channel source + and destination addresses, incrementation and data sizes, transfer direction, + circular/normal mode selection, memory-to-memory mode selection and Channel priority value. + [..] + The HAL_DMA_Init() function follows the DMA configuration procedures as described in + reference manual. + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the DMA according to the specified + * parameters in the DMA_InitTypeDef and initialize the associated handle. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) +{ + uint32_t tmp; + + /* Check the DMA handle allocation */ + if(hdma == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + assert_param(IS_DMA_MODE(hdma->Init.Mode)); + assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + +#if defined (DMA2) + /* Compute the channel index */ + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + { + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; + } + else + { + /* DMA2 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA2; + } +#else + /* calculation of the channel index */ + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; +#endif + + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Get the CR register value */ + tmp = hdma->Instance->CCR; + + /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR and MEM2MEM bits */ + tmp &= ((uint32_t)~(DMA_CCR_PL | DMA_CCR_MSIZE | DMA_CCR_PSIZE | + DMA_CCR_MINC | DMA_CCR_PINC | DMA_CCR_CIRC | + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); + + /* Prepare the DMA Channel configuration */ + tmp |= hdma->Init.Direction | + hdma->Init.PeriphInc | hdma->Init.MemInc | + hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + hdma->Init.Mode | hdma->Init.Priority; + + /* Write to DMA Channel CR register */ + hdma->Instance->CCR = tmp; + + /* Initialise the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Initialize the DMA state*/ + hdma->State = HAL_DMA_STATE_READY; + + /* Allocate lock resource and initialize it */ + hdma->Lock = HAL_UNLOCKED; + + return HAL_OK; +} + +/** + * @brief DeInitialize the DMA peripheral. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) +{ + + /* Check the DMA handle allocation */ + if (NULL == hdma ) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + /* Disable the selected DMA Channelx */ + __HAL_DMA_DISABLE(hdma); + +#if defined (DMA2) + /* Compute the channel index */ + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + { + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; + } + else + { + /* DMA2 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA2; + } +#else + /* calculation of the channel index */ + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; +#endif + + /* Reset DMA Channel CR register */ + hdma->Instance->CCR = 0U; + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Clean callbacks */ + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + + /* Initialise the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Initialize the DMA state */ + hdma->State = HAL_DMA_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup DMA_Exported_Functions_Group2 Input and Output operation functions + * @brief Input and Output operation functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure the source, destination address and data length and Start DMA transfer + (+) Configure the source, destination address and data length and + Start DMA transfer with interrupt + (+) Abort DMA transfer + (+) Poll for transfer complete + (+) Handle DMA interrupt request + +@endverbatim + * @{ + */ + +/** + * @brief Start the DMA Transfer. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Disable the peripheral */ + __HAL_DMA_DISABLE(hdma); + + /* Configure the source, destination address and the data length & clear flags*/ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + status = HAL_BUSY; + } + return status; +} + +/** + * @brief Start the DMA Transfer with interrupt enabled. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Disable the peripheral */ + __HAL_DMA_DISABLE(hdma); + + /* Configure the source, destination address and the data length & clear flags*/ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the transfer complete interrupt */ + /* Enable the transfer Error interrupt */ + if(NULL != hdma->XferHalfCpltCallback ) + { + /* Enable the Half transfer complete interrupt as well */ + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + } + else + { + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); + } + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + /* Remain BUSY */ + status = HAL_BUSY; + } + return status; +} + +/** + * @brief Abort the DMA Transfer. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the DMA peripheral state */ + if(hdma->State != HAL_DMA_STATE_BUSY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + else + { + /* Disable DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* Disable the channel */ + __HAL_DMA_DISABLE(hdma); + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return status; + } +} + +/** + * @brief Aborts the DMA Transfer in Interrupt mode. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) +{ + HAL_StatusTypeDef status = HAL_OK; + + if(HAL_DMA_STATE_BUSY != hdma->State) + { + /* no transfer ongoing */ + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + + status = HAL_ERROR; + } + else + { + /* Disable DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* Disable the channel */ + __HAL_DMA_DISABLE(hdma); + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + /* Call User Abort callback */ + if(hdma->XferAbortCallback != NULL) + { + hdma->XferAbortCallback(hdma); + } + } + return status; +} + +/** + * @brief Polling for transfer complete. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CompleteLevel Specifies the DMA level complete. + * @param Timeout Timeout duration. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout) +{ + uint32_t temp; + uint32_t tickstart; + + if(HAL_DMA_STATE_BUSY != hdma->State) + { + /* no transfer ongoing */ + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + __HAL_UNLOCK(hdma); + return HAL_ERROR; + } + + /* Polling mode not supported in circular mode */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) != 0U) + { + hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + return HAL_ERROR; + } + + /* Get the level transfer complete flag */ + if (HAL_DMA_FULL_TRANSFER == CompleteLevel) + { + /* Transfer Complete flag */ + temp = DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU); + } + else + { + /* Half Transfer Complete flag */ + temp = DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU); + } + + /* Get tick */ + tickstart = HAL_GetTick(); + + while((hdma->DmaBaseAddress->ISR & temp) == 0U) + { + if((hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex& 0x1CU))) != 0U) + { + /* When a DMA transfer error occurs */ + /* A hardware clear of its EN bits is performed */ + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TE; + + /* Change the DMA state */ + hdma->State= HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + /* Check for the Timeout */ + if(Timeout != HAL_MAX_DELAY) + { + if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + } + } + + if(HAL_DMA_FULL_TRANSFER == CompleteLevel) + { + /* Clear the transfer complete flag */ + hdma->DmaBaseAddress->IFCR = (DMA_FLAG_TC1 << (hdma->ChannelIndex& 0x1CU)); + + /* The selected Channelx EN bit is cleared (DMA is disabled and + all transfers are complete) */ + hdma->State = HAL_DMA_STATE_READY; + } + else + { + /* Clear the half transfer complete flag */ + hdma->DmaBaseAddress->IFCR = (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU)); + } + + /* Process unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_OK; +} + +/** + * @brief Handle DMA interrupt request. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval None + */ +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) +{ + uint32_t flag_it = hdma->DmaBaseAddress->ISR; + uint32_t source_it = hdma->Instance->CCR; + + /* Half Transfer Complete Interrupt management ******************************/ + if (((flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_HT) != 0U)) + { + /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ + if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + { + /* Disable the half transfer interrupt */ + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + } + /* Clear the half transfer complete flag */ + hdma->DmaBaseAddress->IFCR = DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x1CU); + + /* DMA peripheral state is not updated in Half Transfer */ + /* but in Transfer Complete case */ + + if(hdma->XferHalfCpltCallback != NULL) + { + /* Half transfer callback */ + hdma->XferHalfCpltCallback(hdma); + } + } + + /* Transfer Complete Interrupt management ***********************************/ + else if (((flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TC) != 0U)) + { + + if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + { + /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */ + /* Disable the transfer complete and error interrupt */ + /* if the DMA mode is not CIRCULAR */ + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + } + /* Clear the transfer complete flag */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_TCIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + if(hdma->XferCpltCallback != NULL) + { + /* Transfer complete callback */ + hdma->XferCpltCallback(hdma); + } + } + + /* Transfer Error Interrupt management **************************************/ + else if (((flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TE) != 0U)) + { + /* When a DMA transfer error occurs */ + /* A hardware clear of its EN bits is performed */ + /* Disable ALL DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TE; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + if (hdma->XferErrorCallback != NULL) + { + /* Transfer error callback */ + hdma->XferErrorCallback(hdma); + } + } + else + { + /* Nothing To Do */ + } + return; +} + +/** + * @brief Register callbacks + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CallbackID User Callback identifier + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @param pCallback pointer to private callback function which has pointer to + * a DMA_HandleTypeDef structure as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)( DMA_HandleTypeDef * _hdma)) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = pCallback; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = pCallback; + break; + + default: + status = HAL_ERROR; + break; + } + } + else + { + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @brief UnRegister callbacks + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CallbackID User Callback identifier + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = NULL; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = NULL; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = NULL; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = NULL; + break; + + case HAL_DMA_XFER_ALL_CB_ID: + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + break; + + default: + status = HAL_ERROR; + break; + } + } + else + { + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @} + */ + + + +/** @defgroup DMA_Exported_Functions_Group3 Peripheral State and Errors functions + * @brief Peripheral State and Errors functions + * +@verbatim + =============================================================================== + ##### Peripheral State and Errors functions ##### + =============================================================================== + [..] + This subsection provides functions allowing to + (+) Check the DMA state + (+) Get error code + +@endverbatim + * @{ + */ + +/** + * @brief Return the DMA handle state. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL state + */ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) +{ + /* Return DMA handle state */ + return hdma->State; +} + +/** + * @brief Return the DMA error code. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval DMA Error Code + */ +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) +{ + return hdma->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup DMA_Private_Functions + * @{ + */ + +/** + * @brief Sets the DMA Transfer parameter. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Configure DMA Channel data length */ + hdma->Instance->CNDTR = DataLength; + + /* Memory to Peripheral */ + if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + { + /* Configure DMA Channel destination address */ + hdma->Instance->CPAR = DstAddress; + + /* Configure DMA Channel source address */ + hdma->Instance->CMAR = SrcAddress; + } + /* Peripheral to Memory */ + else + { + /* Configure DMA Channel source address */ + hdma->Instance->CPAR = SrcAddress; + + /* Configure DMA Channel destination address */ + hdma->Instance->CMAR = DstAddress; + } +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_DMA_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c new file mode 100644 index 0000000..a28531e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_exti.c @@ -0,0 +1,547 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_exti.c + * @author MCD Application Team + * @brief EXTI HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Extended Interrupts and events controller (EXTI) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### EXTI Peripheral features ##### + ============================================================================== + [..] + (+) Each Exti line can be configured within this driver. + + (+) Exti line can be configured in 3 different modes + (++) Interrupt + (++) Event + (++) Both of them + + (+) Configurable Exti lines can be configured with 3 different triggers + (++) Rising + (++) Falling + (++) Both of them + + (+) When set in interrupt mode, configurable Exti lines have two different + interrupts pending registers which allow to distinguish which transition + occurs: + (++) Rising edge pending interrupt + (++) Falling + + (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can + be selected through multiplexer. + + ##### How to use this driver ##### + ============================================================================== + [..] + + (#) Configure the EXTI line using HAL_EXTI_SetConfigLine(). + (++) Choose the interrupt line number by setting "Line" member from + EXTI_ConfigTypeDef structure. + (++) Configure the interrupt and/or event mode using "Mode" member from + EXTI_ConfigTypeDef structure. + (++) For configurable lines, configure rising and/or falling trigger + "Trigger" member from EXTI_ConfigTypeDef structure. + (++) For Exti lines linked to gpio, choose gpio port using "GPIOSel" + member from GPIO_InitTypeDef structure. + + (#) Get current Exti configuration of a dedicated line using + HAL_EXTI_GetConfigLine(). + (++) Provide exiting handle as parameter. + (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter. + + (#) Clear Exti configuration of a dedicated line using HAL_EXTI_ClearConfigLine(). + (++) Provide exiting handle as parameter. + + (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback(). + (++) Provide exiting handle as first parameter. + (++) Provide which callback will be registered using one value from + EXTI_CallbackIDTypeDef. + (++) Provide callback function pointer. + + (#) Get interrupt pending bit using HAL_EXTI_GetPending(). + + (#) Clear interrupt pending bit using HAL_EXTI_ClearPending(). + + (#) Generate software interrupt using HAL_EXTI_GenerateSWI(). + + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup EXTI + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rule: + * Rule-18.1_b - Medium: Array `EXTICR' 1st subscript interval [0,7] may be out + * of bounds [0,3] in following API : + * HAL_EXTI_SetConfigLine + * HAL_EXTI_GetConfigLine + * HAL_EXTI_ClearConfigLine + */ + +#ifdef HAL_EXTI_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines -----------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup EXTI_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_Exported_Functions_Group1 + * @brief Configuration functions + * +@verbatim + =============================================================================== + ##### Configuration functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Set configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on EXTI configuration to be set. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check parameters */ + assert_param(IS_EXTI_LINE(pExtiConfig->Line)); + assert_param(IS_EXTI_MODE(pExtiConfig->Mode)); + + /* Assign line number to handle */ + hexti->Line = pExtiConfig->Line; + + /* Compute line mask */ + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* Configure triggers for configurable lines */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger)); + + /* Configure rising trigger */ + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u) + { + EXTI->RTSR |= maskline; + } + else + { + EXTI->RTSR &= ~maskline; + } + + /* Configure falling trigger */ + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u) + { + EXTI->FTSR |= maskline; + } + else + { + EXTI->FTSR &= ~maskline; + } + + + /* Configure gpio port selection in case of gpio exti line */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel)); + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + SYSCFG->EXTICR[linepos >> 2u] = regval; + } + } + + /* Configure interrupt mode : read current mode */ + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u) + { + EXTI->IMR |= maskline; + } + else + { + EXTI->IMR &= ~maskline; + } + + /* Configure event mode : read current mode */ + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u) + { + EXTI->EMR |= maskline; + } + else + { + EXTI->EMR &= ~maskline; + } + + return HAL_OK; +} + +/** + * @brief Get configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on structure to store Exti configuration. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* Store handle line number to configuration structure */ + pExtiConfig->Line = hexti->Line; + + /* Compute line mask */ + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Get core mode : interrupt */ + + /* Check if selected line is enable */ + if ((EXTI->IMR & maskline) != 0x00u) + { + pExtiConfig->Mode = EXTI_MODE_INTERRUPT; + } + else + { + pExtiConfig->Mode = EXTI_MODE_NONE; + } + + /* Get event mode */ + /* Check if selected line is enable */ + if ((EXTI->EMR & maskline) != 0x00u) + { + pExtiConfig->Mode |= EXTI_MODE_EVENT; + } + + /* Get default Trigger and GPIOSel configuration */ + pExtiConfig->Trigger = EXTI_TRIGGER_NONE; + pExtiConfig->GPIOSel = 0x00u; + + /* 2] Get trigger for configurable lines : rising */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + /* Check if configuration of selected line is enable */ + if ((EXTI->RTSR & maskline) != 0x00u) + { + pExtiConfig->Trigger = EXTI_TRIGGER_RISING; + } + + /* Get falling configuration */ + /* Check if configuration of selected line is enable */ + if ((EXTI->FTSR & maskline) != 0x00u) + { + pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING; + } + + /* Get Gpio port selection for gpio lines */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EXTICR1_EXTI0; + } + } + + return HAL_OK; +} + +/** + * @brief Clear whole configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* compute line mask */ + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Clear interrupt mode */ + EXTI->IMR = (EXTI->IMR & ~maskline); + + /* 2] Clear event mode */ + EXTI->EMR = (EXTI->EMR & ~maskline); + + /* 3] Clear triggers in case of configurable lines */ + if ((hexti->Line & EXTI_CONFIG) != 0x00u) + { + EXTI->RTSR = (EXTI->RTSR & ~maskline); + EXTI->FTSR = (EXTI->FTSR & ~maskline); + + /* Get Gpio port selection for gpio lines */ + if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + SYSCFG->EXTICR[linepos >> 2u] = regval; + } + } + + return HAL_OK; +} + +/** + * @brief Register callback for a dedicated Exti line. + * @param hexti Exti handle. + * @param CallbackID User callback identifier. + * This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values. + * @param pPendingCbfn function pointer to be stored as callback. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)) +{ + HAL_StatusTypeDef status = HAL_OK; + + switch (CallbackID) + { + case HAL_EXTI_COMMON_CB_ID: + hexti->PendingCallback = pPendingCbfn; + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Store line number as handle private field. + * @param hexti Exti handle. + * @param ExtiLine Exti line number. + * This parameter can be from 0 to @ref EXTI_LINE_NB. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(ExtiLine)); + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + else + { + /* Store line number as handle private field */ + hexti->Line = ExtiLine; + + return HAL_OK; + } +} + +/** + * @} + */ + +/** @addtogroup EXTI_Exported_Functions_Group2 + * @brief EXTI IO functions. + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Handle EXTI interrupt request. + * @param hexti Exti handle. + * @retval none. + */ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti) +{ + uint32_t regval; + uint32_t maskline; + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Get pending bit */ + regval = (EXTI->PR & maskline); + if (regval != 0x00u) + { + /* Clear pending bit */ + EXTI->PR = maskline; + + /* Call callback */ + if (hexti->PendingCallback != NULL) + { + hexti->PendingCallback(); + } + } +} + +/** + * @brief Get interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be checked. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING_FALLING + * This parameter is kept for compatibility with other series. + * @retval 1 if interrupt is pending else 0. + */ +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* Compute line mask */ + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* return 1 if bit is set else 0 */ + regval = ((EXTI->PR & maskline) >> linepos); + return regval; +} + +/** + * @brief Clear interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be clear. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING_FALLING + * This parameter is kept for compatibility with other series. + * @retval None. + */ +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Clear Pending bit */ + EXTI->PR = maskline; +} + +/** + * @brief Generate a software interrupt for a dedicated line. + * @param hexti Exti handle. + * @retval None. + */ +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti) +{ + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Generate Software interrupt */ + EXTI->SWIER = maskline; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_EXTI_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c new file mode 100644 index 0000000..daae63e --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash.c @@ -0,0 +1,723 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash.c + * @author MCD Application Team + * @brief FLASH HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the internal FLASH memory: + * + Program operations functions + * + Memory Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### FLASH peripheral features ##### + ============================================================================== + [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses + to the Flash memory. It implements the erase and program Flash memory operations + and the read and write protection mechanisms. + + [..] The Flash memory interface accelerates code execution with a system of instruction + prefetch. + + [..] The FLASH main features are: + (+) Flash memory read operations + (+) Flash memory program/erase operations + (+) Read / write protections + (+) Prefetch on I-Code + (+) Option Bytes programming + + + ##### How to use this driver ##### + ============================================================================== + [..] + This driver provides functions and macros to configure and program the FLASH + memory of all STM32L1xx devices. + + (#) FLASH Memory I/O Programming functions: this group includes all needed + functions to erase and program the main memory: + (++) Lock and Unlock the FLASH interface + (++) Erase function: Erase page + (++) Program functions: Fast Word and Half Page(should be + executed from internal SRAM). + + (#) DATA EEPROM Programming functions: this group includes all + needed functions to erase and program the DATA EEPROM memory: + (++) Lock and Unlock the DATA EEPROM interface. + (++) Erase function: Erase Byte, erase HalfWord, erase Word, erase + Double Word (should be executed from internal SRAM). + (++) Program functions: Fast Program Byte, Fast Program Half-Word, + FastProgramWord, Program Byte, Program Half-Word, + Program Word and Program Double-Word (should be executed + from internal SRAM). + + (#) FLASH Option Bytes Programming functions: this group includes all needed + functions to manage the Option Bytes: + (++) Lock and Unlock the Option Bytes + (++) Set/Reset the write protection + (++) Set the Read protection Level + (++) Program the user Option Bytes + (++) Launch the Option Bytes loader + (++) Set/Get the Read protection Level. + (++) Set/Get the BOR level. + (++) Get the Write protection. + (++) Get the user option bytes. + + (#) Interrupts and flags management functions : this group + includes all needed functions to: + (++) Handle FLASH interrupts + (++) Wait for last FLASH operation according to its status + (++) Get error flag status + + (#) FLASH Interface configuration functions: this group includes + the management of following features: + (++) Enable/Disable the RUN PowerDown mode. + (++) Enable/Disable the SLEEP PowerDown mode. + + (#) FLASH Peripheral State methods: this group includes + the management of following features: + (++) Wait for the FLASH operation + (++) Get the specific FLASH error flag + + [..] In addition to these function, this driver includes a set of macros allowing + to handle the following operations: + + (+) Set/Get the latency + (+) Enable/Disable the prefetch buffer + (+) Enable/Disable the 64 bit Read Access. + (+) Enable/Disable the Flash power-down + (+) Enable/Disable the FLASH interrupts + (+) Monitor the FLASH flags status + + ##### Programming operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the FLASH + program operations. + + [..] The FLASH Memory Programming functions, includes the following functions: + (+) HAL_FLASH_Unlock(void); + (+) HAL_FLASH_Lock(void); + (+) HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) + (+) HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data) + + [..] Any operation of erase or program should follow these steps: + (#) Call the HAL_FLASH_Unlock() function to enable the flash control register and + program memory access. + (#) Call the desired function to erase page or program data. + (#) Call the HAL_FLASH_Lock() to disable the flash program memory access + (recommended to protect the FLASH memory against possible unwanted operation). + + ##### Option Bytes Programming functions ##### + ============================================================================== + + [..] The FLASH_Option Bytes Programming_functions, includes the following functions: + (+) HAL_FLASH_OB_Unlock(void); + (+) HAL_FLASH_OB_Lock(void); + (+) HAL_FLASH_OB_Launch(void); + (+) HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); + (+) HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit); + + [..] Any operation of erase or program should follow these steps: + (#) Call the HAL_FLASH_OB_Unlock() function to enable the Flash option control + register access. + (#) Call the following functions to program the desired option bytes. + (++) HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); + (#) Once all needed option bytes to be programmed are correctly written, call the + HAL_FLASH_OB_Launch(void) function to launch the Option Bytes programming process. + (#) Call the HAL_FLASH_OB_Lock() to disable the Flash option control register access (recommended + to protect the option Bytes against possible unwanted operations). + + [..] Proprietary code Read Out Protection (PcROP): + (#) The PcROP sector is selected by using the same option bytes as the Write + protection. As a result, these 2 options are exclusive each other. + (#) To activate PCROP mode for Flash sectors(s), you need to follow the sequence below: + (++) Use this function HAL_FLASHEx_AdvOBProgram with PCROPState = OB_PCROP_STATE_ENABLE. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/** @defgroup FLASH FLASH + * @brief FLASH HAL module driver + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup FLASH_Private_Constants FLASH Private Constants + * @{ + */ +/** + * @} + */ + +/* Private macro ---------------------------- ---------------------------------*/ +/** @defgroup FLASH_Private_Macros FLASH Private Macros + * @{ + */ + +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/** @defgroup FLASH_Private_Variables FLASH Private Variables + * @{ + */ +/* Variables used for Erase pages under interruption*/ +FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup FLASH_Private_Functions FLASH Private Functions + * @{ + */ +static void FLASH_SetErrorCode(void); +extern void FLASH_PageErase(uint32_t PageAddress); +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Functions FLASH Exported Functions + * @{ + */ + +/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions + * @brief Programming operation functions + * +@verbatim +@endverbatim + * @{ + */ + +/** + * @brief Program word at a specified address + * @note To correctly run this function, the HAL_FLASH_Unlock() function + * must be called before. + * Call the HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation). + * + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address Specifie the address to be programmed. + * @param Data Specifie the data to be programmed + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) +{ + HAL_StatusTypeDef status; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /*Program word (32-bit) at a specified address.*/ + *(__IO uint32_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Program word at a specified address with interrupt enabled. + * + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address Specifie the address to be programmed. + * @param Data Specifie the data to be programmed + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); + + /* Enable End of FLASH Operation and Error source interrupts */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); + + pFlash.Address = Address; + pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + if(TypeProgram == FLASH_TYPEPROGRAM_WORD) + { + /* Program word (32-bit) at a specified address. */ + *(__IO uint32_t *)Address = Data; + } + return status; +} + +/** + * @brief This function handles FLASH interrupt request. + * @retval None + */ +void HAL_FLASH_IRQHandler(void) +{ + uint32_t addresstmp = 0U; + + /* Check FLASH operation error flags */ + if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || +#if defined(FLASH_SR_RDERR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || +#endif /* FLASH_SR_RDERR */ +#if defined(FLASH_SR_OPTVERRUSR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERRUSR) || +#endif /* FLASH_SR_OPTVERRUSR */ + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) ) + { + if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE) + { + /* Return the faulty sector */ + addresstmp = pFlash.Page; + pFlash.Page = 0xFFFFFFFFU; + } + else + { + /* Return the faulty address */ + addresstmp = pFlash.Address; + } + /* Save the Error code */ + FLASH_SetErrorCode(); + + /* FLASH error interrupt user callback */ + HAL_FLASH_OperationErrorCallback(addresstmp); + + /* Stop the procedure ongoing */ + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + } + + /* Check FLASH End of Operation flag */ + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) + { + /* Clear FLASH End of Operation pending bit */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + + /* Process can continue only if no error detected */ + if(pFlash.ProcedureOnGoing != FLASH_PROC_NONE) + { + if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE) + { + /* Nb of pages to erased can be decreased */ + pFlash.NbPagesToErase--; + + /* Check if there are still pages to erase */ + if(pFlash.NbPagesToErase != 0U) + { + addresstmp = pFlash.Page; + /*Indicate user which sector has been erased */ + HAL_FLASH_EndOfOperationCallback(addresstmp); + + /*Increment sector number*/ + addresstmp = pFlash.Page + FLASH_PAGE_SIZE; + pFlash.Page = addresstmp; + + /* If the erase operation is completed, disable the ERASE Bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); + + FLASH_PageErase(addresstmp); + } + else + { + /* No more pages to Erase, user callback can be called. */ + /* Reset Sector and stop Erase pages procedure */ + pFlash.Page = addresstmp = 0xFFFFFFFFU; + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + /* FLASH EOP interrupt user callback */ + HAL_FLASH_EndOfOperationCallback(addresstmp); + } + } + else + { + /* If the program operation is completed, disable the PROG Bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Program ended. Return the selected address */ + /* FLASH EOP interrupt user callback */ + HAL_FLASH_EndOfOperationCallback(pFlash.Address); + + /* Reset Address and stop Program procedure */ + pFlash.Address = 0xFFFFFFFFU; + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + } + } + } + + + if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) + { + /* Operation is completed, disable the PROG and ERASE */ + CLEAR_BIT(FLASH->PECR, (FLASH_PECR_ERASE | FLASH_PECR_PROG)); + + /* Disable End of FLASH Operation and Error source interrupts */ + __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } +} + +/** + * @brief FLASH end of operation interrupt callback + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * - Pages Erase: Address of the page which has been erased + * (if 0xFFFFFFFF, it means that all the selected pages have been erased) + * - Program: Address which was selected for data program + * @retval none + */ +__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_FLASH_EndOfOperationCallback could be implemented in the user file + */ +} + +/** + * @brief FLASH operation error interrupt callback + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * - Pages Erase: Address of the page which returned an error + * - Program: Address which was selected for data program + * @retval none + */ +__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_FLASH_OperationErrorCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the FLASH + memory operations. + +@endverbatim + * @{ + */ + +/** + * @brief Unlock the FLASH control register access + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Unlock(void) +{ + if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) + { + /* Unlocking FLASH_PECR register access*/ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); + + /* Verify that PELOCK is unlocked */ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + return HAL_ERROR; + } + } + + /* Unlocking the program memory access */ + WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY1); + WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2); + + /* Verify that PRGLOCK is unlocked */ + if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) + { + return HAL_ERROR; + } + } + + return HAL_OK; +} + +/** + * @brief Locks the FLASH control register access + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Lock(void) +{ + /* Set the PRGLOCK Bit to lock the FLASH Registers access */ + SET_BIT(FLASH->PECR, FLASH_PECR_PRGLOCK); + + return HAL_OK; +} + +/** + * @brief Unlock the FLASH Option Control Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) +{ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_OPTLOCK)) + { + /* Unlocking FLASH_PECR register access*/ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + /* Unlocking FLASH_PECR register access*/ + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); + + /* Verify that PELOCK is unlocked */ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + return HAL_ERROR; + } + } + + /* Unlocking the option bytes block access */ + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1); + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); + + /* Verify that OPTLOCK is unlocked */ + if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_OPTLOCK)) + { + return HAL_ERROR; + } + } + + return HAL_OK; +} + +/** + * @brief Lock the FLASH Option Control Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) +{ + /* Set the OPTLOCK Bit to lock the option bytes block access */ + SET_BIT(FLASH->PECR, FLASH_PECR_OPTLOCK); + + return HAL_OK; +} + +/** + * @brief Launch the option byte loading. + * @note This function will reset automatically the MCU. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) +{ + /* Set the OBL_Launch bit to launch the option byte loading */ + SET_BIT(FLASH->PECR, FLASH_PECR_OBL_LAUNCH); + + /* Wait for last operation to be completed */ + return(FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE)); +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group3 Peripheral errors functions + * @brief Peripheral errors functions + * +@verbatim + =============================================================================== + ##### Peripheral Errors functions ##### + =============================================================================== + [..] + This subsection permit to get in run-time errors of the FLASH peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Get the specific FLASH error flag. + * @retval FLASH_ErrorCode The returned value can be: + * @ref FLASH_Error_Codes + */ +uint32_t HAL_FLASH_GetError(void) +{ + return pFlash.ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup FLASH_Private_Functions + * @{ + */ + +/** + * @brief Wait for a FLASH operation to complete. + * @param Timeout maximum flash operation timeout + * @retval HAL Status + */ +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) +{ + /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. + Even if the FLASH operation fails, the BUSY flag will be reset and an error + flag will be set */ + + uint32_t tickstart = HAL_GetTick(); + + while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) + { + if (Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout)) + { + return HAL_TIMEOUT; + } + } + } + + /* Check FLASH End of Operation flag */ + if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) + { + /* Clear FLASH End of Operation pending bit */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || +#if defined(FLASH_SR_RDERR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || +#endif /* FLASH_SR_RDERR */ +#if defined(FLASH_SR_OPTVERRUSR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERRUSR) || +#endif /* FLASH_SR_OPTVERRUSR */ + __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) + { + /*Save the error code*/ + FLASH_SetErrorCode(); + return HAL_ERROR; + } + + /* There is no error flag set */ + return HAL_OK; +} + + +/** + * @brief Set the specific FLASH error flag. + * @retval None + */ +static void FLASH_SetErrorCode(void) +{ + uint32_t flags = 0U; + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; + flags |= FLASH_FLAG_WRPERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; + flags |= FLASH_FLAG_PGAERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; + flags |= FLASH_FLAG_OPTVERR; + } + +#if defined(FLASH_SR_RDERR) + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + flags |= FLASH_FLAG_RDERR; + } +#endif /* FLASH_SR_RDERR */ +#if defined(FLASH_SR_OPTVERRUSR) + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERRUSR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTVUSR; + flags |= FLASH_FLAG_OPTVERRUSR; + } +#endif /* FLASH_SR_OPTVERRUSR */ + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; + flags |= FLASH_FLAG_SIZERR; + } + /* Clear FLASH error pending bits */ + __HAL_FLASH_CLEAR_FLAG(flags); +} +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c new file mode 100644 index 0000000..d698393 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ex.c @@ -0,0 +1,1870 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash_ex.c + * @author MCD Application Team + * @brief Extended FLASH HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the internal FLASH memory: + * + FLASH Interface configuration + * + FLASH Memory Erasing + * + DATA EEPROM Programming/Erasing + * + Option Bytes Programming + * + Interrupts management + * + @verbatim + ============================================================================== + ##### Flash peripheral Extended features ##### + ============================================================================== + + [..] Comparing to other products, the FLASH interface for STM32L1xx + devices contains the following additional features + (+) Erase functions + (+) DATA_EEPROM memory management + (+) BOOT option bit configuration + (+) PCROP protection for all sectors + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to configure and program the FLASH memory + of all STM32L1xx. It includes: + (+) Full DATA_EEPROM erase and program management + (+) Boot activation + (+) PCROP protection configuration and control for all pages + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ +#ifdef HAL_FLASH_MODULE_ENABLED + +/** @addtogroup FLASH + * @{ + */ +/** @addtogroup FLASH_Private_Variables + * @{ + */ +/* Variables used for Erase pages under interruption*/ +extern FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup FLASHEx FLASHEx + * @brief FLASH HAL Extension module driver + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup FLASHEx_Private_Constants FLASHEx Private Constants + * @{ + */ +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros + * @{ + */ +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions + * @{ + */ +void FLASH_PageErase(uint32_t PageAddress); +static HAL_StatusTypeDef FLASH_OB_WRPConfig(FLASH_OBProgramInitTypeDef *pOBInit, FunctionalState NewState); +static void FLASH_OB_WRPConfigWRP1OrPCROP1(uint32_t WRP1OrPCROP1, FunctionalState NewState); +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xCA) \ + || defined(STM32L152xD) || defined(STM32L152xDX) || defined(STM32L162xCA) || defined(STM32L162xD) \ + || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) +static void FLASH_OB_WRPConfigWRP2OrPCROP2(uint32_t WRP2OrPCROP2, FunctionalState NewState); +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || (...) || STM32L151xE || STM32L152xE || STM32L162xE */ +#if defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) \ + || defined(STM32L162xE) +static void FLASH_OB_WRPConfigWRP3(uint32_t WRP3, FunctionalState NewState); +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) +static void FLASH_OB_WRPConfigWRP4(uint32_t WRP4, FunctionalState NewState); +#endif /* STM32L151xE || STM32L152xE || STM32L151xDX || ... */ +#if defined(FLASH_OBR_SPRMOD) +static HAL_StatusTypeDef FLASH_OB_PCROPConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit, FunctionalState NewState); +#endif /* FLASH_OBR_SPRMOD */ +#if defined(FLASH_OBR_nRST_BFB2) +static HAL_StatusTypeDef FLASH_OB_BootConfig(uint8_t OB_BOOT); +#endif /* FLASH_OBR_nRST_BFB2 */ +static HAL_StatusTypeDef FLASH_OB_RDPConfig(uint8_t OB_RDP); +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY); +static HAL_StatusTypeDef FLASH_OB_BORConfig(uint8_t OB_BOR); +static uint8_t FLASH_OB_GetRDP(void); +static uint8_t FLASH_OB_GetUser(void); +static uint8_t FLASH_OB_GetBOR(void); +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramByte(uint32_t Address, uint8_t Data); +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramHalfWord(uint32_t Address, uint16_t Data); +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramWord(uint32_t Address, uint32_t Data); +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramWord(uint32_t Address, uint32_t Data); +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramHalfWord(uint32_t Address, uint16_t Data); +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramByte(uint32_t Address, uint8_t Data); +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ +/** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions + * @{ + */ + +/** @defgroup FLASHEx_Exported_Functions_Group1 FLASHEx Memory Erasing functions + * @brief FLASH Memory Erasing functions + * +@verbatim + ============================================================================== + ##### FLASH Erasing Programming functions ##### + ============================================================================== + + [..] The FLASH Memory Erasing functions, includes the following functions: + (+) HAL_FLASHEx_Erase: return only when erase has been done + (+) HAL_FLASHEx_Erase_IT: end of erase is done when HAL_FLASH_EndOfOperationCallback + is called with parameter 0xFFFFFFFF + + [..] Any operation of erase should follow these steps: + (#) Call the HAL_FLASH_Unlock() function to enable the flash control register and + program memory access. + (#) Call the desired function to erase page. + (#) Call the HAL_FLASH_Lock() to disable the flash program memory access + (recommended to protect the FLASH memory against possible unwanted operation). + +@endverbatim + * @{ + */ + +/** + * @brief Erase the specified FLASH memory Pages + * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function + * must be called before. + * Call the @ref HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation) + * @note For STM32L151xDX/STM32L152xDX/STM32L162xDX, as memory is not continuous between + * 2 banks, user should perform pages erase by bank only. + * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * + * @param[out] PageError pointer to variable that + * contains the configuration information on faulty page in case of error + * (0xFFFFFFFF means that all the pages have been correctly erased) + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) +{ + HAL_StatusTypeDef status; + uint32_t address = 0U; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status == HAL_OK) + { + /*Initialization of PageError variable*/ + *PageError = 0xFFFFFFFFU; + + /* Check the parameters */ + assert_param(IS_NBPAGES(pEraseInit->NbPages)); + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); + assert_param(IS_FLASH_PROGRAM_ADDRESS((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U)); + +#if defined(STM32L151xDX) || defined(STM32L152xDX) || defined(STM32L162xDX) + /* Check on which bank belongs the 1st address to erase */ + if (pEraseInit->PageAddress < FLASH_BANK2_BASE) + { + /* BANK1 */ + /* Check that last page to erase still belongs to BANK1 */ + if (((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U) > FLASH_BANK1_END) + { + /* Last page does not belong to BANK1, erase procedure cannot be performed because memory is not + continuous */ + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return HAL_ERROR; + } + } + else + { + /* BANK2 */ + /* Check that last page to erase still belongs to BANK2 */ + if (((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U) > FLASH_BANK2_END) + { + /* Last page does not belong to BANK2, erase procedure cannot be performed because memory is not + continuous */ + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return HAL_ERROR; + } + } +#endif /* STM32L151xDX || STM32L152xDX || STM32L162xDX */ + + /* Erase page by page to be done*/ + for(address = pEraseInit->PageAddress; + address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); + address += FLASH_PAGE_SIZE) + { + FLASH_PageErase(address); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the erase operation is completed, disable the ERASE Bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); + + if (status != HAL_OK) + { + /* In case of error, stop erase procedure and return the faulty address */ + *PageError = address; + break; + } + } + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Perform a page erase of the specified FLASH memory pages with interrupt enabled + * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function + * must be called before. + * Call the @ref HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation) + * End of erase is done when @ref HAL_FLASH_EndOfOperationCallback is called with parameter + * 0xFFFFFFFF + * @note For STM32L151xDX/STM32L152xDX/STM32L162xDX, as memory is not continuous between + * 2 banks, user should perform pages erase by bank only. + * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) +{ + HAL_StatusTypeDef status; + + /* If procedure already ongoing, reject the next one */ + if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_NBPAGES(pEraseInit->NbPages)); + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); + assert_param(IS_FLASH_PROGRAM_ADDRESS((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + +#if defined(STM32L151xDX) || defined(STM32L152xDX) || defined(STM32L162xDX) + /* Check on which bank belongs the 1st address to erase */ + if (pEraseInit->PageAddress < FLASH_BANK2_BASE) + { + /* BANK1 */ + /* Check that last page to erase still belongs to BANK1 */ + if (((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U) > FLASH_BANK1_END) + { + /* Last page does not belong to BANK1, erase procedure cannot be performed because memory is not + continuous */ + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return HAL_ERROR; + } + } + else + { + /* BANK2 */ + /* Check that last page to erase still belongs to BANK2 */ + if (((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1U) > FLASH_BANK2_END) + { + /* Last page does not belong to BANK2, erase procedure cannot be performed because memory is not + continuous */ + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return HAL_ERROR; + } + } +#endif /* STM32L151xDX || STM32L152xDX || STM32L162xDX */ + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status == HAL_OK) + { + /* Enable End of FLASH Operation and Error source interrupts */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); + + pFlash.ProcedureOnGoing = FLASH_PROC_PAGEERASE; + pFlash.NbPagesToErase = pEraseInit->NbPages; + pFlash.Page = pEraseInit->PageAddress; + + /*Erase 1st page and wait for IT*/ + FLASH_PageErase(pEraseInit->PageAddress); + } + else + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } + + return status; +} + +/** + * @} + */ + +/** @defgroup FLASHEx_Exported_Functions_Group2 Option Bytes Programming functions + * @brief Option Bytes Programming functions + * +@verbatim + ============================================================================== + ##### Option Bytes Programming functions ##### + ============================================================================== + + [..] Any operation of erase or program should follow these steps: + (#) Call the HAL_FLASH_OB_Unlock() function to enable the Flash option control + register access. + (#) Call following function to program the desired option bytes. + (++) HAL_FLASHEx_OBProgram: + - To Enable/Disable the desired sector write protection. + - To set the desired read Protection Level. + - To configure the user option Bytes: IWDG, STOP and the Standby. + - To Set the BOR level. + (#) Once all needed option bytes to be programmed are correctly written, call the + HAL_FLASH_OB_Launch(void) function to launch the Option Bytes programming process. + (#) Call the HAL_FLASH_OB_Lock() to disable the Flash option control register access (recommended + to protect the option Bytes against possible unwanted operations). + + [..] Proprietary code Read Out Protection (PcROP): + (#) The PcROP sector is selected by using the same option bytes as the Write + protection (nWRPi bits). As a result, these 2 options are exclusive each other. + (#) In order to activate the PcROP (change the function of the nWRPi option bits), + the SPRMOD option bit must be activated. + (#) The active value of nWRPi bits is inverted when PCROP mode is active, this + means: if SPRMOD = 1 and nWRPi = 1 (default value), then the user sector "i" + is read/write protected. + (#) To activate PCROP mode for Flash sector(s), you need to call the following function: + (++) HAL_FLASHEx_AdvOBProgram in selecting sectors to be read/write protected + (++) HAL_FLASHEx_OB_SelectPCROP to enable the read/write protection + (#) PcROP is available only in STM32L151xBA, STM32L152xBA, STM32L151xC, STM32L152xC & STM32L162xC devices. + +@endverbatim + * @{ + */ + +/** + * @brief Program option bytes + * @param pOBInit pointer to an FLASH_OBInitStruct structure that + * contains the configuration information for the programming. + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); + + /*Write protection configuration*/ + if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP) + { + assert_param(IS_WRPSTATE(pOBInit->WRPState)); + if (pOBInit->WRPState == OB_WRPSTATE_ENABLE) + { + /* Enable of Write protection on the selected Sector*/ + status = FLASH_OB_WRPConfig(pOBInit, ENABLE); + } + else + { + /* Disable of Write protection on the selected Sector*/ + status = FLASH_OB_WRPConfig(pOBInit, DISABLE); + } + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return status; + } + } + + /* Read protection configuration*/ + if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP) + { + status = FLASH_OB_RDPConfig(pOBInit->RDPLevel); + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return status; + } + } + + /* USER configuration*/ + if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER) + { + status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_IWDG_SW, + pOBInit->USERConfig & OB_STOP_NORST, + pOBInit->USERConfig & OB_STDBY_NORST); + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return status; + } + } + + /* BOR Level configuration*/ + if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR) + { + status = FLASH_OB_BORConfig(pOBInit->BORLevel); + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + return status; + } + } + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Get the Option byte configuration + * @param pOBInit pointer to an FLASH_OBInitStruct structure that + * contains the configuration information for the programming. + * + * @retval None + */ +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) +{ + pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER | OPTIONBYTE_BOR; + + /*Get WRP1*/ + pOBInit->WRPSector0To31 = (uint32_t)(FLASH->WRPR1); + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xCA) \ + || defined(STM32L152xD) || defined(STM32L152xDX) || defined(STM32L162xCA) || defined(STM32L162xD) \ + || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) + + /*Get WRP2*/ + pOBInit->WRPSector32To63 = (uint32_t)(FLASH->WRPR2); + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || (...) || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) \ + || defined(STM32L162xE) + + /*Get WRP3*/ + pOBInit->WRPSector64To95 = (uint32_t)(FLASH->WRPR3); + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) + + /*Get WRP4*/ + pOBInit->WRPSector96To127 = (uint32_t)(FLASH->WRPR4); + +#endif /* STM32L151xE || STM32L152xE || STM32L162xE || STM32L151xDX || ... */ + + /*Get RDP Level*/ + pOBInit->RDPLevel = FLASH_OB_GetRDP(); + + /*Get USER*/ + pOBInit->USERConfig = FLASH_OB_GetUser(); + + /*Get BOR Level*/ + pOBInit->BORLevel = FLASH_OB_GetBOR(); +} + +#if defined(FLASH_OBR_SPRMOD) || defined(FLASH_OBR_nRST_BFB2) + +/** + * @brief Program option bytes + * @note This function can be used only for Cat2 & Cat3 devices for PCROP and Cat4 & Cat5 for BFB2. + * @param pAdvOBInit pointer to an FLASH_AdvOBProgramInitTypeDef structure that + * contains the configuration information for the programming. + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_AdvOBProgram (FLASH_AdvOBProgramInitTypeDef *pAdvOBInit) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Check the parameters */ + assert_param(IS_OBEX(pAdvOBInit->OptionType)); + +#if defined(FLASH_OBR_SPRMOD) + + /* Program PCROP option byte*/ + if ((pAdvOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP) + { + /* Check the parameters */ + assert_param(IS_PCROPSTATE(pAdvOBInit->PCROPState)); + if (pAdvOBInit->PCROPState == OB_PCROP_STATE_ENABLE) + { + /*Enable of Write protection on the selected Sector*/ + status = FLASH_OB_PCROPConfig(pAdvOBInit, ENABLE); + if (status != HAL_OK) + { + return status; + } + } + else + { + /* Disable of Write protection on the selected Sector*/ + status = FLASH_OB_PCROPConfig(pAdvOBInit, DISABLE); + if (status != HAL_OK) + { + return status; + } + } + } + +#endif /* FLASH_OBR_SPRMOD */ + +#if defined(FLASH_OBR_nRST_BFB2) + + /* Program BOOT config option byte */ + if ((pAdvOBInit->OptionType & OPTIONBYTE_BOOTCONFIG) == OPTIONBYTE_BOOTCONFIG) + { + status = FLASH_OB_BootConfig(pAdvOBInit->BootConfig); + } + +#endif /* FLASH_OBR_nRST_BFB2 */ + + return status; +} + +/** + * @brief Get the OBEX byte configuration + * @note This function can be used only for Cat2 & Cat3 devices for PCROP and Cat4 & Cat5 for BFB2. + * @param pAdvOBInit pointer to an FLASH_AdvOBProgramInitTypeDef structure that + * contains the configuration information for the programming. + * + * @retval None + */ +void HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit) +{ + pAdvOBInit->OptionType = 0U; + +#if defined(FLASH_OBR_SPRMOD) + + pAdvOBInit->OptionType |= OPTIONBYTE_PCROP; + + /*Get PCROP state */ + pAdvOBInit->PCROPState = (FLASH->OBR & FLASH_OBR_SPRMOD) >> POSITION_VAL(FLASH_OBR_SPRMOD); + + /*Get PCROP protected sector from 0 to 31 */ + pAdvOBInit->PCROPSector0To31 = FLASH->WRPR1; + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) + + /*Get PCROP protected sector from 32 to 63 */ + pAdvOBInit->PCROPSector32To63 = FLASH->WRPR2; + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */ +#endif /* FLASH_OBR_SPRMOD */ + +#if defined(FLASH_OBR_nRST_BFB2) + + pAdvOBInit->OptionType |= OPTIONBYTE_BOOTCONFIG; + + /* Get Boot config OB */ + pAdvOBInit->BootConfig = (FLASH->OBR & FLASH_OBR_nRST_BFB2) >> 16U; + +#endif /* FLASH_OBR_nRST_BFB2 */ +} + +#endif /* FLASH_OBR_SPRMOD || FLASH_OBR_nRST_BFB2 */ + +#if defined(FLASH_OBR_SPRMOD) + +/** + * @brief Select the Protection Mode (SPRMOD). + * @note This function can be used only for STM32L151xBA, STM32L152xBA, STM32L151xC, STM32L152xC & STM32L162xC devices + * @note Once SPRMOD bit is active, unprotection of a protected sector is not possible + * @note Read a protected sector will set RDERR Flag and write a protected sector will set WRPERR Flag + * @retval HAL status + */ +HAL_StatusTypeDef HAL_FLASHEx_OB_SelectPCROP(void) +{ + HAL_StatusTypeDef status = HAL_OK; + uint16_t tmp1 = 0U; + uint32_t tmp2 = 0U; + uint8_t optiontmp = 0U; + uint16_t optiontmp2 = 0U; + + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* Mask RDP Byte */ + optiontmp = (uint8_t)(*(__IO uint8_t *)(OB_BASE)); + + /* Update Option Byte */ + optiontmp2 = (uint16_t)(OB_PCROP_SELECTED | optiontmp); + + /* calculate the option byte to write */ + tmp1 = (uint16_t)(~(optiontmp2 )); + tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* program PCRop */ + OB->RDP = tmp2; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the Read protection operation Status */ + return status; +} + +/** + * @brief Deselect the Protection Mode (SPRMOD). + * @note This function can be used only for STM32L151xBA, STM32L152xBA, STM32L151xC, STM32L152xC & STM32L162xC devices + * @note Once SPRMOD bit is active, unprotection of a protected sector is not possible + * @note Read a protected sector will set RDERR Flag and write a protected sector will set WRPERR Flag + * @retval HAL status + */ +HAL_StatusTypeDef HAL_FLASHEx_OB_DeSelectPCROP(void) +{ + HAL_StatusTypeDef status = HAL_OK; + uint16_t tmp1 = 0U; + uint32_t tmp2 = 0U; + uint8_t optiontmp = 0U; + uint16_t optiontmp2 = 0U; + + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* Mask RDP Byte */ + optiontmp = (uint8_t)(*(__IO uint8_t *)(OB_BASE)); + + /* Update Option Byte */ + optiontmp2 = (uint16_t)(OB_PCROP_DESELECTED | optiontmp); + + /* calculate the option byte to write */ + tmp1 = (uint16_t)(~(optiontmp2 )); + tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* program PCRop */ + OB->RDP = tmp2; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the Read protection operation Status */ + return status; +} + +#endif /* FLASH_OBR_SPRMOD */ + +/** + * @} + */ + +/** @defgroup FLASHEx_Exported_Functions_Group3 DATA EEPROM Programming functions + * @brief DATA EEPROM Programming functions + * +@verbatim + =============================================================================== + ##### DATA EEPROM Programming functions ##### + =============================================================================== + + [..] Any operation of erase or program should follow these steps: + (#) Call the HAL_FLASHEx_DATAEEPROM_Unlock() function to enable the data EEPROM access + and Flash program erase control register access. + (#) Call the desired function to erase or program data. + (#) Call the HAL_FLASHEx_DATAEEPROM_Lock() to disable the data EEPROM access + and Flash program erase control register access(recommended + to protect the DATA_EEPROM against possible unwanted operation). + +@endverbatim + * @{ + */ + +/** + * @brief Unlocks the data memory and FLASH_PECR register access. + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Unlock(void) +{ + if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) + { + /* Unlocking the Data memory and FLASH_PECR register access*/ + FLASH->PEKEYR = FLASH_PEKEY1; + FLASH->PEKEYR = FLASH_PEKEY2; + } + else + { + return HAL_ERROR; + } + return HAL_OK; +} + +/** + * @brief Locks the Data memory and FLASH_PECR register access. + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Lock(void) +{ + /* Set the PELOCK Bit to lock the data memory and FLASH_PECR register access */ + SET_BIT(FLASH->PECR, FLASH_PECR_PELOCK); + + return HAL_OK; +} + +/** + * @brief Erase a word in data memory. + * @param Address specifies the address to be erased. + * @param TypeErase Indicate the way to erase at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @note To correctly run this function, the @ref HAL_FLASHEx_DATAEEPROM_Unlock() function + * must be called before. + * Call the @ref HAL_FLASHEx_DATAEEPROM_Lock() to the data EEPROM access + * and Flash program erase control register access(recommended to protect + * the DATA_EEPROM against possible unwanted operation). + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Erase(uint32_t TypeErase, uint32_t Address) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TYPEERASEDATA(TypeErase)); + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + if(TypeErase == FLASH_TYPEERASEDATA_WORD) + { + /* Write 00000000h to valid address in the data memory */ + *(__IO uint32_t *) Address = 0x00000000U; + } + + if(TypeErase == FLASH_TYPEERASEDATA_HALFWORD) + { + /* Write 0000h to valid address in the data memory */ + *(__IO uint16_t *) Address = (uint16_t)0x0000; + } + + if(TypeErase == FLASH_TYPEERASEDATA_BYTE) + { + /* Write 00h to valid address in the data memory */ + *(__IO uint8_t *) Address = (uint8_t)0x00; + } + + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the erase status */ + return status; +} + +/** + * @brief Program word at a specified address + * @note To correctly run this function, the @ref HAL_FLASHEx_DATAEEPROM_Unlock() function + * must be called before. + * Call the @ref HAL_FLASHEx_DATAEEPROM_Unlock() to he data EEPROM access + * and Flash program erase control register access(recommended to protect + * the DATA_EEPROM against possible unwanted operation). + * @note The function @ref HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram() can be called before + * this function to configure the Fixed Time Programming. + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASHEx_Type_Program_Data + * @param Address specifie the address to be programmed. + * @param Data specifie the data to be programmed + * + * @retval HAL_StatusTypeDef HAL Status + */ + +HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) +{ + HAL_StatusTypeDef status; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_TYPEPROGRAMDATA(TypeProgram)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + if(TypeProgram == FLASH_TYPEPROGRAMDATA_WORD) + { + /* Program word (32-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_ProgramWord(Address, (uint32_t) Data); + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_HALFWORD) + { + /* Program halfword (16-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_ProgramHalfWord(Address, (uint16_t) Data); + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_BYTE) + { + /* Program byte (8-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_ProgramByte(Address, (uint8_t) Data); + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_FASTBYTE) + { + /*Program word (8-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_FastProgramByte(Address, (uint8_t) Data); + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_FASTHALFWORD) + { + /* Program halfword (16-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_FastProgramHalfWord(Address, (uint16_t) Data); + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_FASTWORD) + { + /* Program word (32-bit) at a specified address.*/ + status = FLASH_DATAEEPROM_FastProgramWord(Address, (uint32_t) Data); + } + else + { + status = HAL_ERROR; + } + + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Enable DATA EEPROM fixed Time programming (2*Tprog). + * @retval None + */ +void HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram(void) +{ + SET_BIT(FLASH->PECR, FLASH_PECR_FTDW); +} + +/** + * @brief Disables DATA EEPROM fixed Time programming (2*Tprog). + * @retval None + */ +void HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram(void) +{ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FTDW); +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup FLASHEx_Private_Functions + * @{ + */ + +/* +============================================================================== + OPTIONS BYTES +============================================================================== +*/ +/** + * @brief Enables or disables the read out protection. + * @note To correctly run this function, the @ref HAL_FLASH_OB_Unlock() function + * must be called before. + * @param OB_RDP specifies the read protection level. + * This parameter can be: + * @arg @ref OB_RDP_LEVEL_0 No protection + * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory + * @arg @ref OB_RDP_LEVEL_2 Chip protection + * + * !!!Warning!!! When enabling OB_RDP_LEVEL_2 it's no more possible to go back to level 1 or 0 + * + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_RDPConfig(uint8_t OB_RDP) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp1 = 0U, tmp2 = 0U, tmp3 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_RDP(OB_RDP)); + + tmp1 = (uint32_t)(OB->RDP & FLASH_OBR_RDPRT); + + /* According to errata sheet, DocID022054 Rev 5, par2.1.5 + Before setting Level0 in the RDP register, check that the current level is not equal to Level0. + If the current level is not equal to Level0, Level0 can be activated. + If the current level is Level0 then the RDP register must not be written again with Level0. */ + + if ((tmp1 == OB_RDP_LEVEL_0) && (OB_RDP == OB_RDP_LEVEL_0)) + { + /*current level is Level0 then the RDP register must not be written again with Level0. */ + status = HAL_ERROR; + } + else + { +#if defined(FLASH_OBR_SPRMOD) + /* Mask SPRMOD bit */ + tmp3 = (uint32_t)(OB->RDP & FLASH_OBR_SPRMOD); +#endif + + /* calculate the option byte to write */ + tmp1 = (~((uint32_t)(OB_RDP | tmp3))); + tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)(OB_RDP | tmp3))); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* program read protection level */ + OB->RDP = tmp2; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + } + + /* Return the Read protection operation Status */ + return status; +} + +/** + * @brief Programs the FLASH brownout reset threshold level Option Byte. + * @param OB_BOR Selects the brownout reset threshold level. + * This parameter can be one of the following values: + * @arg @ref OB_BOR_OFF BOR is disabled at power down, the reset is asserted when the VDD + * power supply reaches the PDR(Power Down Reset) threshold (1.5V) + * @arg @ref OB_BOR_LEVEL1 BOR Reset threshold levels for 1.7V - 1.8V VDD power supply + * @arg @ref OB_BOR_LEVEL2 BOR Reset threshold levels for 1.9V - 2.0V VDD power supply + * @arg @ref OB_BOR_LEVEL3 BOR Reset threshold levels for 2.3V - 2.4V VDD power supply + * @arg @ref OB_BOR_LEVEL4 BOR Reset threshold levels for 2.55V - 2.65V VDD power supply + * @arg @ref OB_BOR_LEVEL5 BOR Reset threshold levels for 2.8V - 2.9V VDD power supply + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_BORConfig(uint8_t OB_BOR) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp = 0U, tmp1 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_BOR_LEVEL(OB_BOR)); + + /* Get the User Option byte register */ + tmp1 = OB->USER & ((~FLASH_OBR_BOR_LEV) >> 16U); + + /* Calculate the option byte to write - [0xFFU | nUSER | 0x00U | USER]*/ + tmp = (uint32_t)~((OB_BOR | tmp1)) << 16U; + tmp |= (OB_BOR | tmp1); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Write the BOR Option Byte */ + OB->USER = tmp; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the Option Byte BOR Programming Status */ + return status; +} + +/** + * @brief Returns the FLASH User Option Bytes values. + * @retval The FLASH User Option Bytes. + */ +static uint8_t FLASH_OB_GetUser(void) +{ + /* Return the User Option Byte */ + return (uint8_t)((FLASH->OBR & (FLASH_OBR_IWDG_SW | FLASH_OBR_nRST_STOP | FLASH_OBR_nRST_STDBY)) >> 16U); +} + +/** + * @brief Returns the FLASH Read Protection level. + * @retval FLASH RDP level + * This parameter can be one of the following values: + * @arg @ref OB_RDP_LEVEL_0 No protection + * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory + * @arg @ref OB_RDP_LEVEL_2 Full chip protection + */ +static uint8_t FLASH_OB_GetRDP(void) +{ + uint8_t rdp_level = (uint8_t)(FLASH->OBR & FLASH_OBR_RDPRT); + + if ((rdp_level != OB_RDP_LEVEL_0) && (rdp_level != OB_RDP_LEVEL_2)) + { + return (OB_RDP_LEVEL_1); + } + else + { + return (rdp_level); + } +} + +/** + * @brief Returns the FLASH BOR level. + * @retval The BOR level Option Bytes. + */ +static uint8_t FLASH_OB_GetBOR(void) +{ + /* Return the BOR level */ + return (uint8_t)((FLASH->OBR & (uint32_t)FLASH_OBR_BOR_LEV) >> 16U); +} + +/** + * @brief Write protects the desired pages of the first 64KB of the Flash. + * @param pOBInit pointer to an FLASH_OBInitStruct structure that + * contains WRP parameters. + * @param NewState new state of the specified FLASH Pages Wtite protection. + * This parameter can be: ENABLE or DISABLE. + * @retval HAL_StatusTypeDef + */ +static HAL_StatusTypeDef FLASH_OB_WRPConfig(FLASH_OBProgramInitTypeDef *pOBInit, FunctionalState NewState) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* WRP for sector between 0 to 31 */ + if (pOBInit->WRPSector0To31 != 0U) + { + FLASH_OB_WRPConfigWRP1OrPCROP1(pOBInit->WRPSector0To31, NewState); + } + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xCA) \ + || defined(STM32L152xD) || defined(STM32L152xDX) || defined(STM32L162xCA) || defined(STM32L162xD) \ + || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) + + /* Pages for Cat3, Cat4 & Cat5 devices*/ + /* WRP for sector between 32 to 63 */ + if (pOBInit->WRPSector32To63 != 0U) + { + FLASH_OB_WRPConfigWRP2OrPCROP2(pOBInit->WRPSector32To63, NewState); + } + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || (...) || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) \ + || defined(STM32L162xE) + + /* Pages for devices with FLASH >= 256KB*/ + /* WRP for sector between 64 to 95 */ + if (pOBInit->WRPSector64To95 != 0U) + { + FLASH_OB_WRPConfigWRP3(pOBInit->WRPSector64To95, NewState); + } + +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) + + /* Pages for Cat5 devices*/ + /* WRP for sector between 96 to 127 */ + if (pOBInit->WRPSector96To127 != 0U) + { + FLASH_OB_WRPConfigWRP4(pOBInit->WRPSector96To127, NewState); + } + +#endif /* STM32L151xE || STM32L152xE || STM32L162xE || STM32L151xDX || ... */ + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the write protection operation Status */ + return status; +} + +#if defined(STM32L151xBA) || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC) \ + || defined(STM32L162xC) +/** + * @brief Enables the read/write protection (PCROP) of the desired + * sectors. + * @note This function can be used only for Cat2 & Cat3 devices + * @param pAdvOBInit pointer to an FLASH_AdvOBProgramInitTypeDef structure that + * contains PCROP parameters. + * @param NewState new state of the specified FLASH Pages read/Write protection. + * This parameter can be: ENABLE or DISABLE. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_PCROPConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit, FunctionalState NewState) +{ + HAL_StatusTypeDef status = HAL_OK; + FunctionalState pcropstate = DISABLE; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* Invert state to use same function of WRP */ + if (NewState == DISABLE) + { + pcropstate = ENABLE; + } + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Pages for Cat2 devices*/ + /* PCROP for sector between 0 to 31 */ + if (pAdvOBInit->PCROPSector0To31 != 0U) + { + FLASH_OB_WRPConfigWRP1OrPCROP1(pAdvOBInit->PCROPSector0To31, pcropstate); + } + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) + + /* Pages for Cat3 devices*/ + /* WRP for sector between 32 to 63 */ + if (pAdvOBInit->PCROPSector32To63 != 0U) + { + FLASH_OB_WRPConfigWRP2OrPCROP2(pAdvOBInit->PCROPSector32To63, pcropstate); + } + +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC */ + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the write protection operation Status */ + return status; +} +#endif /* STM32L151xBA || STM32L152xBA || STM32L151xC || STM32L152xC || STM32L162xC */ + +/** + * @brief Write protects the desired pages of the first 128KB of the Flash. + * @param WRP1OrPCROP1 specifies the address of the pages to be write protected. + * This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection1 + * @param NewState new state of the specified FLASH Pages Write protection. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +static void FLASH_OB_WRPConfigWRP1OrPCROP1(uint32_t WRP1OrPCROP1, FunctionalState NewState) +{ + uint32_t wrp01data = 0U, wrp23data = 0U; + + uint32_t tmp1 = 0U, tmp2 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_WRP(WRP1OrPCROP1)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + wrp01data = (uint16_t)(((WRP1OrPCROP1 & WRP_MASK_LOW) | OB->WRP01)); + wrp23data = (uint16_t)((((WRP1OrPCROP1 & WRP_MASK_HIGH)>>16U | OB->WRP23))); + tmp1 = (uint32_t)(~(wrp01data) << 16U)|(wrp01data); + OB->WRP01 = tmp1; + + tmp2 = (uint32_t)(~(wrp23data) << 16U)|(wrp23data); + OB->WRP23 = tmp2; + } + else + { + wrp01data = (uint16_t)(~WRP1OrPCROP1 & (WRP_MASK_LOW & OB->WRP01)); + wrp23data = (uint16_t)((((~WRP1OrPCROP1 & WRP_MASK_HIGH)>>16U & OB->WRP23))); + + tmp1 = (uint32_t)((~wrp01data) << 16U)|(wrp01data); + OB->WRP01 = tmp1; + + tmp2 = (uint32_t)((~wrp23data) << 16U)|(wrp23data); + OB->WRP23 = tmp2; + } +} + +#if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC) \ + || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xCA) \ + || defined(STM32L152xD) || defined(STM32L152xDX) || defined(STM32L162xCA) || defined(STM32L162xD) \ + || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) +/** + * @brief Enable Write protects the desired pages of the second 128KB of the Flash. + * @note This function can be used only for Cat3, Cat4 & Cat5 devices. + * @param WRP2OrPCROP2 specifies the address of the pages to be write protected. + * This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection2 + * @param NewState new state of the specified FLASH Pages Wtite protection. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +static void FLASH_OB_WRPConfigWRP2OrPCROP2(uint32_t WRP2OrPCROP2, FunctionalState NewState) +{ + uint32_t wrp45data = 0U, wrp67data = 0U; + + uint32_t tmp1 = 0U, tmp2 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_WRP(WRP2OrPCROP2)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + wrp45data = (uint16_t)(((WRP2OrPCROP2 & WRP_MASK_LOW) | OB->WRP45)); + wrp67data = (uint16_t)((((WRP2OrPCROP2 & WRP_MASK_HIGH)>>16U | OB->WRP67))); + tmp1 = (uint32_t)(~(wrp45data) << 16U)|(wrp45data); + OB->WRP45 = tmp1; + + tmp2 = (uint32_t)(~(wrp67data) << 16U)|(wrp67data); + OB->WRP67 = tmp2; + } + else + { + wrp45data = (uint16_t)(~WRP2OrPCROP2 & (WRP_MASK_LOW & OB->WRP45)); + wrp67data = (uint16_t)((((~WRP2OrPCROP2 & WRP_MASK_HIGH)>>16U & OB->WRP67))); + + tmp1 = (uint32_t)((~wrp45data) << 16U)|(wrp45data); + OB->WRP45 = tmp1; + + tmp2 = (uint32_t)((~wrp67data) << 16U)|(wrp67data); + OB->WRP67 = tmp2; + } +} +#endif /* STM32L100xC || STM32L151xC || STM32L152xC || (...) || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xD) || defined(STM32L151xDX) || defined(STM32L152xD) || defined(STM32L152xDX) \ + || defined(STM32L162xD) || defined(STM32L162xDX) || defined(STM32L151xE) || defined(STM32L152xE) \ + || defined(STM32L162xE) +/** + * @brief Enable Write protects the desired pages of the third 128KB of the Flash. + * @note This function can be used only for STM32L151xD, STM32L152xD, STM32L162xD & Cat5 devices. + * @param WRP3 specifies the address of the pages to be write protected. + * This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection3 + * @param NewState new state of the specified FLASH Pages Wtite protection. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +static void FLASH_OB_WRPConfigWRP3(uint32_t WRP3, FunctionalState NewState) +{ + uint32_t wrp89data = 0U, wrp1011data = 0U; + + uint32_t tmp1 = 0U, tmp2 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_WRP(WRP3)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + wrp89data = (uint16_t)(((WRP3 & WRP_MASK_LOW) | OB->WRP89)); + wrp1011data = (uint16_t)((((WRP3 & WRP_MASK_HIGH)>>16U | OB->WRP1011))); + tmp1 = (uint32_t)(~(wrp89data) << 16U)|(wrp89data); + OB->WRP89 = tmp1; + + tmp2 = (uint32_t)(~(wrp1011data) << 16U)|(wrp1011data); + OB->WRP1011 = tmp2; + } + else + { + wrp89data = (uint16_t)(~WRP3 & (WRP_MASK_LOW & OB->WRP89)); + wrp1011data = (uint16_t)((((~WRP3 & WRP_MASK_HIGH)>>16U & OB->WRP1011))); + + tmp1 = (uint32_t)((~wrp89data) << 16U)|(wrp89data); + OB->WRP89 = tmp1; + + tmp2 = (uint32_t)((~wrp1011data) << 16U)|(wrp1011data); + OB->WRP1011 = tmp2; + } +} +#endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE */ + +#if defined(STM32L151xE) || defined(STM32L152xE) || defined(STM32L162xE) || defined(STM32L151xDX) \ + || defined(STM32L152xDX) || defined(STM32L162xDX) +/** + * @brief Enable Write protects the desired pages of the Fourth 128KB of the Flash. + * @note This function can be used only for Cat5 & STM32L1xxDX devices. + * @param WRP4 specifies the address of the pages to be write protected. + * This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection4 + * @param NewState new state of the specified FLASH Pages Wtite protection. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +static void FLASH_OB_WRPConfigWRP4(uint32_t WRP4, FunctionalState NewState) +{ + uint32_t wrp1213data = 0U, wrp1415data = 0U; + + uint32_t tmp1 = 0U, tmp2 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_WRP(WRP4)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + wrp1213data = (uint16_t)(((WRP4 & WRP_MASK_LOW) | OB->WRP1213)); + wrp1415data = (uint16_t)((((WRP4 & WRP_MASK_HIGH)>>16U | OB->WRP1415))); + tmp1 = (uint32_t)(~(wrp1213data) << 16U)|(wrp1213data); + OB->WRP1213 = tmp1; + + tmp2 = (uint32_t)(~(wrp1415data) << 16U)|(wrp1415data); + OB->WRP1415 = tmp2; + } + else + { + wrp1213data = (uint16_t)(~WRP4 & (WRP_MASK_LOW & OB->WRP1213)); + wrp1415data = (uint16_t)((((~WRP4 & WRP_MASK_HIGH)>>16U & OB->WRP1415))); + + tmp1 = (uint32_t)((~wrp1213data) << 16U)|(wrp1213data); + OB->WRP1213 = tmp1; + + tmp2 = (uint32_t)((~wrp1415data) << 16U)|(wrp1415data); + OB->WRP1415 = tmp2; + } +} +#endif /* STM32L151xE || STM32L152xE || STM32L162xE || STM32L151xDX || ... */ + +/** + * @brief Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + * @param OB_IWDG Selects the WDG mode. + * This parameter can be one of the following values: + * @arg @ref OB_IWDG_SW Software WDG selected + * @arg @ref OB_IWDG_HW Hardware WDG selected + * @param OB_STOP Reset event when entering STOP mode. + * This parameter can be one of the following values: + * @arg @ref OB_STOP_NORST No reset generated when entering in STOP + * @arg @ref OB_STOP_RST Reset generated when entering in STOP + * @param OB_STDBY Reset event when entering Standby mode. + * This parameter can be one of the following values: + * @arg @ref OB_STDBY_NORST No reset generated when entering in STANDBY + * @arg @ref OB_STDBY_RST Reset generated when entering in STANDBY + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp = 0U, tmp1 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_IWDG_SOURCE(OB_IWDG)); + assert_param(IS_OB_STOP_SOURCE(OB_STOP)); + assert_param(IS_OB_STDBY_SOURCE(OB_STDBY)); + + /* Get the User Option byte register */ + tmp1 = OB->USER & ((~(FLASH_OBR_IWDG_SW | FLASH_OBR_nRST_STOP | FLASH_OBR_nRST_STDBY)) >> 16U); + + /* Calculate the user option byte to write */ + tmp = (uint32_t)(((uint32_t)~((uint32_t)((uint32_t)(OB_IWDG) | (uint32_t)(OB_STOP) | (uint32_t)(OB_STDBY) | tmp1))) << 16U); + tmp |= ((uint32_t)(OB_IWDG) | ((uint32_t)OB_STOP) | (uint32_t)(OB_STDBY) | tmp1); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Write the User Option Byte */ + OB->USER = tmp; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the Option Byte program Status */ + return status; +} + +#if defined(FLASH_OBR_nRST_BFB2) +/** + * @brief Configures to boot from Bank1 or Bank2. + * @param OB_BOOT select the FLASH Bank to boot from. + * This parameter can be one of the following values: + * @arg @ref OB_BOOT_BANK2 At startup, if boot pins are set in boot from user Flash + * position and this parameter is selected the device will boot from Bank2 or Bank1, + * depending on the activation of the bank. The active banks are checked in + * the following order: Bank2, followed by Bank1. + * The active bank is recognized by the value programmed at the base address + * of the respective bank (corresponding to the initial stack pointer value + * in the interrupt vector table). + * @arg @ref OB_BOOT_BANK1 At startup, if boot pins are set in boot from user Flash + * position and this parameter is selected the device will boot from Bank1(Default). + * For more information, please refer to AN2606 from www.st.com. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_BootConfig(uint8_t OB_BOOT) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp = 0U, tmp1 = 0U; + + /* Check the parameters */ + assert_param(IS_OB_BOOT_BANK(OB_BOOT)); + + /* Get the User Option byte register and BOR Level*/ + tmp1 = OB->USER & ((~FLASH_OBR_nRST_BFB2) >> 16U); + + /* Calculate the option byte to write */ + tmp = (uint32_t)~(OB_BOOT | tmp1) << 16U; + tmp |= (OB_BOOT | tmp1); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Write the BOOT Option Byte */ + OB->USER = tmp; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + /* Return the Option Byte program Status */ + return status; +} + +#endif /* FLASH_OBR_nRST_BFB2 */ + +/* +============================================================================== + DATA +============================================================================== +*/ + +/** + * @brief Write a Byte at a specified address in data memory. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @note This function assumes that the is data word is already erased. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramByte(uint32_t Address, uint8_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + uint32_t tmp = 0U, tmpaddr = 0U; +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clear the FTDW bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FTDW); + +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + /* Possible only on Cat1 devices */ + if(Data != (uint8_t)0x00U) + { + /* If the previous operation is completed, proceed to write the new Data */ + *(__IO uint8_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + else + { + tmpaddr = Address & 0xFFFFFFFCU; + tmp = * (__IO uint32_t *) tmpaddr; + tmpaddr = 0xFFU << ((uint32_t) (0x8U * (Address & 0x3U))); + tmp &= ~tmpaddr; + status = HAL_FLASHEx_DATAEEPROM_Erase(FLASH_TYPEERASEDATA_WORD, Address & 0xFFFFFFFCU); + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + status = HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTWORD, (Address & 0xFFFFFFFCU), tmp); + /* Process Locked */ + __HAL_LOCK(&pFlash); + } +#else /*!Cat1*/ + /* If the previous operation is completed, proceed to write the new Data */ + *(__IO uint8_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + } + /* Return the Write Status */ + return status; +} + +/** + * @brief Writes a half word at a specified address in data memory. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @note This function assumes that the is data word is already erased. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramHalfWord(uint32_t Address, uint16_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + uint32_t tmp = 0U, tmpaddr = 0U; +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clear the FTDW bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FTDW); + +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + /* Possible only on Cat1 devices */ + if(Data != (uint16_t)0x0000U) + { + /* If the previous operation is completed, proceed to write the new data */ + *(__IO uint16_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + else + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + if((Address & 0x3U) != 0x3U) + { + tmpaddr = Address & 0xFFFFFFFCU; + tmp = * (__IO uint32_t *) tmpaddr; + tmpaddr = 0xFFFFU << ((uint32_t) (0x8U * (Address & 0x3U))); + tmp &= ~tmpaddr; + status = HAL_FLASHEx_DATAEEPROM_Erase(FLASH_TYPEERASEDATA_WORD, Address & 0xFFFFFFFCU); + status = HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTWORD, (Address & 0xFFFFFFFCU), tmp); + } + else + { + HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTBYTE, Address, 0x00U); + HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTBYTE, Address + 1U, 0x00U); + } + /* Process Locked */ + __HAL_LOCK(&pFlash); + } +#else /* !Cat1 */ + /* If the previous operation is completed, proceed to write the new data */ + *(__IO uint16_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + } + /* Return the Write Status */ + return status; +} + +/** + * @brief Programs a word at a specified address in data memory. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @note This function assumes that the is data word is already erased. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_FastProgramWord(uint32_t Address, uint32_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Clear the FTDW bit */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FTDW); + + /* If the previous operation is completed, proceed to program the new data */ + *(__IO uint32_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + /* Return the Write Status */ + return status; +} + +/** + * @brief Write a Byte at a specified address in data memory without erase. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramByte(uint32_t Address, uint8_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + uint32_t tmp = 0U, tmpaddr = 0U; +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + if(Data != (uint8_t) 0x00U) + { + *(__IO uint8_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + } + else + { + tmpaddr = Address & 0xFFFFFFFCU; + tmp = * (__IO uint32_t *) tmpaddr; + tmpaddr = 0xFFU << ((uint32_t) (0x8U * (Address & 0x3U))); + tmp &= ~tmpaddr; + status = HAL_FLASHEx_DATAEEPROM_Erase(FLASH_TYPEERASEDATA_WORD, Address & 0xFFFFFFFCU); + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + status = HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTWORD, (Address & 0xFFFFFFFCU), tmp); + /* Process Locked */ + __HAL_LOCK(&pFlash); + } +#else /* Not Cat1*/ + *(__IO uint8_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + } + /* Return the Write Status */ + return status; +} + +/** + * @brief Writes a half word at a specified address in data memory without erase. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramHalfWord(uint32_t Address, uint16_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + uint32_t tmp = 0U, tmpaddr = 0U; +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { +#if defined(STM32L100xB) || defined(STM32L151xB) || defined(STM32L152xB) + if(Data != (uint16_t)0x0000U) + { + *(__IO uint16_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + else + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + if((Address & 0x3U) != 0x3U) + { + tmpaddr = Address & 0xFFFFFFFCU; + tmp = * (__IO uint32_t *) tmpaddr; + tmpaddr = 0xFFFFU << ((uint32_t) (0x8U * (Address & 0x3U))); + tmp &= ~tmpaddr; + status = HAL_FLASHEx_DATAEEPROM_Erase(FLASH_TYPEERASEDATA_WORD, Address & 0xFFFFFFFCU); + status = HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTWORD, (Address & 0xFFFFFFFCU), tmp); + } + else + { + HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTBYTE, Address, 0x00U); + HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_FASTBYTE, Address + 1U, 0x00U); + } + /* Process Locked */ + __HAL_LOCK(&pFlash); + } +#else /* Not Cat1*/ + *(__IO uint16_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); +#endif /* STM32L100xB || STM32L151xB || STM32L152xB */ + } + /* Return the Write Status */ + return status; +} + +/** + * @brief Programs a word at a specified address in data memory without erase. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_DATAEEPROM_ProgramWord(uint32_t Address, uint32_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_FLASH_DATA_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + *(__IO uint32_t *)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + /* Return the Write Status */ + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup FLASH + * @{ + */ + + +/** @addtogroup FLASH_Private_Functions + * @{ + */ + +/** + * @brief Erases a specified page in program memory. + * @param PageAddress The page address in program memory to be erased. + * @note A Page is erased in the Program memory only if the address to load + * is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes). + * @retval None + */ +void FLASH_PageErase(uint32_t PageAddress) +{ + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Set the ERASE bit */ + SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); + + /* Set PROG bit */ + SET_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Write 00000000h to the first word of the program page to erase */ + *(__IO uint32_t *)(uint32_t)(PageAddress & ~(FLASH_PAGE_SIZE - 1)) = 0x00000000; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c new file mode 100644 index 0000000..a3b3d3d --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_flash_ramfunc.c @@ -0,0 +1,640 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_flash_ramfunc.c + * @author MCD Application Team + * @brief FLASH RAMFUNC driver. + * This file provides a Flash firmware functions which should be + * executed from internal SRAM + * + * @verbatim + + *** ARM Compiler *** + -------------------- + [..] RAM functions are defined using the toolchain options. + Functions that are be executed in RAM should reside in a separate + source module. Using the 'Options for File' dialog you can simply change + the 'Code / Const' area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the + Options for Target' dialog. + + *** ICCARM Compiler *** + ----------------------- + [..] RAM functions are defined using a specific toolchain keyword "__ramfunc". + + *** GNU Compiler *** + -------------------- + [..] RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".RamFunc")))". + +@endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/** @addtogroup FLASH + * @{ + */ +/** @addtogroup FLASH_Private_Variables + * @{ + */ +extern FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup FLASH_RAMFUNC FLASH_RAMFUNC + * @brief FLASH functions executed from RAM + * @{ + */ + + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup FLASH_RAMFUNC_Private_Functions FLASH RAM Private Functions + * @{ + */ + +static __RAM_FUNC HAL_StatusTypeDef FLASHRAM_WaitForLastOperation(uint32_t Timeout); +static __RAM_FUNC HAL_StatusTypeDef FLASHRAM_SetErrorCode(void); + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup FLASH_RAMFUNC_Exported_Functions FLASH RAM Exported Functions + * +@verbatim + =============================================================================== + ##### ramfunc functions ##### + =============================================================================== + [..] + This subsection provides a set of functions that should be executed from RAM + transfers. + +@endverbatim + * @{ + */ + +/** @defgroup FLASH_RAMFUNC_Exported_Functions_Group1 Peripheral features functions + * @{ + */ + +/** + * @brief Enable the power down mode during RUN mode. + * @note This function can be used only when the user code is running from Internal SRAM. + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_EnableRunPowerDown(void) +{ + /* Enable the Power Down in Run mode*/ + __HAL_FLASH_POWER_DOWN_ENABLE(); + + return HAL_OK; +} + +/** + * @brief Disable the power down mode during RUN mode. + * @note This function can be used only when the user code is running from Internal SRAM. + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DisableRunPowerDown(void) +{ + /* Disable the Power Down in Run mode*/ + __HAL_FLASH_POWER_DOWN_DISABLE(); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup FLASH_RAMFUNC_Exported_Functions_Group2 Programming and erasing operation functions + * +@verbatim +@endverbatim + * @{ + */ + +#if defined(FLASH_PECR_PARALLBANK) +/** + * @brief Erases a specified 2 pages in program memory in parallel. + * @note This function can be used only for STM32L151xD, STM32L152xD), STM32L162xD and Cat5 devices. + * To correctly run this function, the @ref HAL_FLASH_Unlock() function + * must be called before. + * Call the @ref HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation). + * @param Page_Address1: The page address in program memory to be erased in + * the first Bank (BANK1). This parameter should be between FLASH_BASE + * and FLASH_BANK1_END. + * @param Page_Address2: The page address in program memory to be erased in + * the second Bank (BANK2). This parameter should be between FLASH_BANK2_BASE + * and FLASH_BANK2_END. + * @note A Page is erased in the Program memory only if the address to load + * is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes). + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_EraseParallelPage(uint32_t Page_Address1, uint32_t Page_Address2) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Proceed to erase the page */ + SET_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); + SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); + SET_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Write 00000000h to the first word of the first program page to erase */ + *(__IO uint32_t *)Page_Address1 = 0x00000000U; + /* Write 00000000h to the first word of the second program page to erase */ + *(__IO uint32_t *)Page_Address2 = 0x00000000U; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the erase operation is completed, disable the ERASE, PROG and PARALLBANK bits */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); + } + /* Return the Erase Status */ + return status; +} + +/** + * @brief Program 2 half pages in program memory in parallel (half page size is 32 Words). + * @note This function can be used only for STM32L151xD, STM32L152xD), STM32L162xD and Cat5 devices. + * @param Address1: specifies the first address to be written in the first bank + * (BANK1). This parameter should be between FLASH_BASE and (FLASH_BANK1_END - FLASH_PAGE_SIZE). + * @param pBuffer1: pointer to the buffer containing the data to be written + * to the first half page in the first bank. + * @param Address2: specifies the second address to be written in the second bank + * (BANK2). This parameter should be between FLASH_BANK2_BASE and (FLASH_BANK2_END - FLASH_PAGE_SIZE). + * @param pBuffer2: pointer to the buffer containing the data to be written + * to the second half page in the second bank. + * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function + * must be called before. + * Call the @ref HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation). + * @note Half page write is possible only from SRAM. + * @note If there are more than 32 words to write, after 32 words another + * Half Page programming operation starts and has to be finished. + * @note A half page is written to the program memory only if the first + * address to load is the start address of a half page (multiple of 128 + * bytes) and the 31 remaining words to load are in the same half page. + * @note During the Program memory half page write all read operations are + * forbidden (this includes DMA read operations and debugger read + * operations such as breakpoints, periodic updates, etc.). + * @note If a PGAERR is set during a Program memory half page write, the + * complete write operation is aborted. Software should then reset the + * FPRG and PROG/DATA bits and restart the write operation from the + * beginning. + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_ProgramParallelHalfPage(uint32_t Address1, uint32_t* pBuffer1, uint32_t Address2, uint32_t* pBuffer2) +{ + uint32_t primask_bit; + uint32_t count = 0U; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Disable all IRQs */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* Proceed to program the new half page */ + SET_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); + SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); + SET_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Write the first half page directly with 32 different words */ + while(count < 32U) + { + *(__IO uint32_t*) ((uint32_t)(Address1 + (4 * count))) = *pBuffer1; + pBuffer1++; + count ++; + } + + /* Write the second half page directly with 32 different words */ + count = 0U; + while(count < 32U) + { + *(__IO uint32_t*) ((uint32_t)(Address2 + (4 * count))) = *pBuffer2; + pBuffer2++; + count ++; + } + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* if the write operation is completed, disable the PROG, FPRG and PARALLBANK bits */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); + + /* Enable IRQs */ + __set_PRIMASK(primask_bit); + } + + /* Return the Write Status */ + return status; +} +#endif /* FLASH_PECR_PARALLBANK */ + +/** + * @brief Program a half page in program memory. + * @param Address specifies the address to be written. + * @param pBuffer pointer to the buffer containing the data to be written to + * the half page. + * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function + * must be called before. + * Call the @ref HAL_FLASH_Lock() to disable the flash memory access + * (recommended to protect the FLASH memory against possible unwanted operation) + * @note Half page write is possible only from SRAM. + * @note If there are more than 32 words to write, after 32 words another + * Half Page programming operation starts and has to be finished. + * @note A half page is written to the program memory only if the first + * address to load is the start address of a half page (multiple of 128 + * bytes) and the 31 remaining words to load are in the same half page. + * @note During the Program memory half page write all read operations are + * forbidden (this includes DMA read operations and debugger read + * operations such as breakpoints, periodic updates, etc.). + * @note If a PGAERR is set during a Program memory half page write, the + * complete write operation is aborted. Software should then reset the + * FPRG and PROG/DATA bits and restart the write operation from the + * beginning. + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_HalfPageProgram(uint32_t Address, uint32_t* pBuffer) +{ + uint32_t primask_bit; + uint32_t count = 0U; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Disable all IRQs */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* Proceed to program the new half page */ + SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); + SET_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Write one half page directly with 32 different words */ + while(count < 32U) + { + *(__IO uint32_t*) ((uint32_t)(Address + (4 * count))) = *pBuffer; + pBuffer++; + count ++; + } + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the write operation is completed, disable the PROG and FPRG bits */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); + + /* Enable IRQs */ + __set_PRIMASK(primask_bit); + } + + /* Return the Write Status */ + return status; +} + +/** + * @} + */ + +/** @defgroup FLASH_RAMFUNC_Exported_Functions_Group3 Peripheral errors functions + * @brief Peripheral errors functions + * +@verbatim + =============================================================================== + ##### Peripheral errors functions ##### + =============================================================================== + [..] + This subsection permit to get in run-time errors of the FLASH peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Get the specific FLASH errors flag. + * @param Error pointer is the error value. It can be a mixed of: +@if STM32L100xB +@elif STM32L100xBA + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) +@elif STM32L151xB +@elif STM32L151xBA + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) +@elif STM32L152xB +@elif STM32L152xBA + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) +@elif STM32L100xC + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) + * @arg @ref HAL_FLASH_ERROR_OPTVUSR FLASH Option User validity error +@elif STM32L151xC + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) + * @arg @ref HAL_FLASH_ERROR_OPTVUSR FLASH Option User validity error +@elif STM32L152xC + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) + * @arg @ref HAL_FLASH_ERROR_OPTVUSR FLASH Option User validity error +@elif STM32L162xC + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) + * @arg @ref HAL_FLASH_ERROR_OPTVUSR FLASH Option User validity error +@else + * @arg @ref HAL_FLASH_ERROR_OPTVUSR FLASH Option User validity error +@endif + * @arg @ref HAL_FLASH_ERROR_PGA FLASH Programming Alignment error flag + * @arg @ref HAL_FLASH_ERROR_WRP FLASH Write protected error flag + * @arg @ref HAL_FLASH_ERROR_OPTV FLASH Option valid error flag + * @retval HAL Status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_GetError(uint32_t * Error) +{ + *Error = pFlash.ErrorCode; + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup FLASH_RAMFUNC_Exported_Functions_Group4 DATA EEPROM functions + * + * @{ + */ + +/** + * @brief Erase a double word in data memory. + * @param Address specifies the address to be erased. + * @note To correctly run this function, the HAL_FLASH_EEPROM_Unlock() function + * must be called before. + * Call the HAL_FLASH_EEPROM_Lock() to he data EEPROM access + * and Flash program erase control register access(recommended to protect + * the DATA_EEPROM against possible unwanted operation). + * @note Data memory double word erase is possible only from SRAM. + * @note A double word is erased to the data memory only if the first address + * to load is the start address of a double word (multiple of 8 bytes). + * @note During the Data memory double word erase, all read operations are + * forbidden (this includes DMA read operations and debugger read + * operations such as breakpoints, periodic updates, etc.). + * @retval HAL status + */ + +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_EraseDoubleWord(uint32_t Address) +{ + uint32_t primask_bit; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Disable all IRQs */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* If the previous operation is completed, proceed to erase the next double word */ + /* Set the ERASE bit */ + SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); + + /* Set DATA bit */ + SET_BIT(FLASH->PECR, FLASH_PECR_DATA); + + /* Write 00000000h to the 2 words to erase */ + *(__IO uint32_t *)Address = 0x00000000U; + Address += 4U; + *(__IO uint32_t *)Address = 0x00000000U; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the erase operation is completed, disable the ERASE and DATA bits */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_DATA); + + /* Enable IRQs */ + __set_PRIMASK(primask_bit); + + } + + /* Return the erase status */ + return status; +} + +/** + * @brief Write a double word in data memory without erase. + * @param Address specifies the address to be written. + * @param Data specifies the data to be written. + * @note To correctly run this function, the HAL_FLASH_EEPROM_Unlock() function + * must be called before. + * Call the HAL_FLASH_EEPROM_Lock() to he data EEPROM access + * and Flash program erase control register access(recommended to protect + * the DATA_EEPROM against possible unwanted operation). + * @note Data memory double word write is possible only from SRAM. + * @note A data memory double word is written to the data memory only if the + * first address to load is the start address of a double word (multiple + * of double word). + * @note During the Data memory double word write, all read operations are + * forbidden (this includes DMA read operations and debugger read + * operations such as breakpoints, periodic updates, etc.). + * @retval HAL status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_ProgramDoubleWord(uint32_t Address, uint64_t Data) +{ + uint32_t primask_bit; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Disable all IRQs */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* If the previous operation is completed, proceed to program the new data*/ + SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); + SET_BIT(FLASH->PECR, FLASH_PECR_DATA); + + /* Write the 2 words */ + *(__IO uint32_t *)Address = (uint32_t) Data; + Address += 4U; + *(__IO uint32_t *)Address = (uint32_t) (Data >> 32); + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the write operation is completed, disable the FPRG and DATA bits */ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); + CLEAR_BIT(FLASH->PECR, FLASH_PECR_DATA); + + /* Enable IRQs */ + __set_PRIMASK(primask_bit); + } + + /* Return the Write Status */ + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup FLASH_RAMFUNC_Private_Functions + * @{ + */ + +/** + * @brief Set the specific FLASH error flag. + * @retval HAL Status + */ +static __RAM_FUNC HAL_StatusTypeDef FLASHRAM_SetErrorCode(void) +{ + uint32_t flags = 0U; + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; + flags |= FLASH_FLAG_WRPERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; + flags |= FLASH_FLAG_PGAERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; + flags |= FLASH_FLAG_OPTVERR; + } + +#if defined(FLASH_SR_RDERR) + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + flags |= FLASH_FLAG_RDERR; + } +#endif /* FLASH_SR_RDERR */ +#if defined(FLASH_SR_OPTVERRUSR) + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERRUSR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTVUSR; + flags |= FLASH_FLAG_OPTVERRUSR; + } +#endif /* FLASH_SR_OPTVERRUSR */ + + /* Clear FLASH error pending bits */ + __HAL_FLASH_CLEAR_FLAG(flags); + + return HAL_OK; +} + +/** + * @brief Wait for a FLASH operation to complete. + * @param Timeout maximum flash operationtimeout + * @retval HAL status + */ +static __RAM_FUNC HAL_StatusTypeDef FLASHRAM_WaitForLastOperation(uint32_t Timeout) +{ + /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. + Even if the FLASH operation fails, the BUSY flag will be reset and an error + flag will be set */ + + while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) && (Timeout != 0x00U)) + { + Timeout--; + } + + if(Timeout == 0x00U) + { + return HAL_TIMEOUT; + } + + /* Check FLASH End of Operation flag */ + if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) + { + /* Clear FLASH End of Operation pending bit */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || +#if defined(FLASH_SR_RDERR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || +#endif /* FLASH_SR_RDERR */ +#if defined(FLASH_SR_OPTVERRUSR) + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERRUSR) || +#endif /* FLASH_SR_OPTVERRUSR */ + __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) + { + /*Save the error code*/ + FLASHRAM_SetErrorCode(); + return HAL_ERROR; + } + + /* There is no error flag set */ + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c new file mode 100644 index 0000000..9e75b40 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_gpio.c @@ -0,0 +1,546 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_gpio.c + * @author MCD Application Team + * @brief GPIO HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the General Purpose Input/Output (GPIO) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### GPIO Peripheral features ##### + ============================================================================== + [..] + Each port bit of the general-purpose I/O (GPIO) ports can be individually + configured by software in several modes: + (+) Input mode + (+) Analog mode + (+) Output mode + (+) Alternate function mode + (+) External interrupt/event lines + + [..] + During and just after reset, the alternate functions and external interrupt + lines are not active and the I/O ports are configured in input floating mode. + + [..] + All GPIO pins have weak internal pull-up and pull-down resistors, which can be + activated or not. + + [..] + In Output or Alternate mode, each IO can be configured on open-drain or push-pull + type and the IO speed can be selected depending on the VDD value. + + [..] + The microcontroller IO pins are connected to onboard peripherals/modules through a + multiplexer that allows only one peripheral s alternate function (AF) connected + to an IO pin at a time. In this way, there can be no conflict between peripherals + sharing the same IO pin. + + [..] + All ports have external interrupt/event capability. To use external interrupt + lines, the port must be configured in input mode. All available GPIO pins are + connected to the 16 external interrupt/event lines from EXTI0 to EXTI15. + + [..] + The external interrupt/event controller consists of up to 28 edge detectors + (depending on products 16 lines are connected to GPIO) for generating event/interrupt + requests (each input line can be independently configured to select the type + (interrupt or event) and the corresponding trigger event (rising or falling or both). + Each line can also be masked independently. + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable the GPIO AHB clock using the following function : __GPIOx_CLK_ENABLE(). + + (#) Configure the GPIO pin(s) using HAL_GPIO_Init(). + (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure + (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef + structure. + (++) In case of Output or alternate function mode selection: the speed is + configured through "Speed" member from GPIO_InitTypeDef structure, + the speed is configurable: Low, Medium and High. + (++) If alternate mode is selected, the alternate function connected to the IO + is configured through "Alternate" member from GPIO_InitTypeDef structure + (++) Analog mode is required when a pin is to be used as ADC channel + or DAC output. + (++) In case of external interrupt/event selection the "Mode" member from + GPIO_InitTypeDef structure select the type (interrupt or event) and + the corresponding trigger event (rising or falling or both). + + (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority + mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using + HAL_NVIC_EnableIRQ(). + + (#) HAL_GPIO_DeInit allows to set register values to their reset value. It's also + recommended to use it to unconfigure pin which was used as an external interrupt + or in event mode. That's the only way to reset corresponding bit in EXTI & SYSCFG + registers. + + (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin(). + + (#) To set/reset the level of a pin configured in output mode use + HAL_GPIO_WritePin()/HAL_GPIO_TogglePin(). + + (#) To lock pin configuration until next reset use HAL_GPIO_LockPin(). + + (#) During and just after reset, the alternate functions are not + active and the GPIO pins are configured in input floating mode (except JTAG + pins). + + (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose + (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has + priority over the GPIO function. + + (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as + general purpose PH0 and PH1, respectively, when the HSE oscillator is off. + The HSE has priority over the GPIO function. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @addtogroup GPIO + * @brief GPIO HAL module driver + * @{ + */ + +#ifdef HAL_GPIO_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup GPIO_Private_Constants + * @{ + */ +#define GPIO_NUMBER (16U) + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions ---------------------------------------------------------*/ + +/** @addtogroup GPIO_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_Exported_Functions_Group1 + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and Configuration functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init. + * @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + uint32_t position = 0x00; + uint32_t iocurrent = 0x00; + uint32_t temp = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + + if (iocurrent) + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + SET_BIT(temp, GPIO_Init->Speed << (position * 2)); + GPIOx->OSPEEDR = temp; + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ; + SET_BIT(temp, ((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + GPIOx->OTYPER = temp; + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2)); + SET_BIT(temp, (GPIO_Init->Pull) << (position * 2)); + GPIOx->PUPDR = temp; + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + { + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + /* Identify AFRL or AFRH register based on IO position*/ + temp = GPIOx->AFR[position >> 3]; + CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4)); + SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4)); + GPIOx->AFR[position >> 3] = temp; + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2)); + SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + GPIOx->MODER = temp; + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + temp = SYSCFG->EXTICR[position >> 2]; + CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03))); + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + SYSCFG->EXTICR[position >> 2] = temp; + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + CLEAR_BIT(temp, (uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + { + SET_BIT(temp, iocurrent); + } + EXTI->RTSR = temp; + + temp = EXTI->FTSR; + CLEAR_BIT(temp, (uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + { + SET_BIT(temp, iocurrent); + } + EXTI->FTSR = temp; + + temp = EXTI->EMR; + CLEAR_BIT(temp, (uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + { + SET_BIT(temp, iocurrent); + } + EXTI->EMR = temp; + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + CLEAR_BIT(temp, (uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + { + SET_BIT(temp, iocurrent); + } + EXTI->IMR = temp; + } + } + + position++; + } +} + +/** + * @brief De-initializes the GPIOx peripheral registers to their default reset values. + * @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be one of GPIO_PIN_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) +{ + uint32_t position = 0x00; + uint32_t iocurrent = 0x00; + uint32_t tmp = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Configure the port pins */ + while ((GPIO_Pin >> position) != 0) + { + /* Get current io position */ + iocurrent = (GPIO_Pin) & (1U << position); + + if (iocurrent) + { + /*------------------------- EXTI Mode Configuration --------------------*/ + /* Clear the External Interrupt or Event for the current IO */ + + tmp = SYSCFG->EXTICR[position >> 2]; + tmp &= ((0x0FU) << (4 * (position & 0x03))); + if (tmp == (GPIO_GET_INDEX(GPIOx) << (4 * (position & 0x03)))) + { + /* Clear EXTI line configuration */ + CLEAR_BIT(EXTI->IMR, (uint32_t)iocurrent); + CLEAR_BIT(EXTI->EMR, (uint32_t)iocurrent); + + /* Clear Rising Falling edge configuration */ + CLEAR_BIT(EXTI->FTSR, (uint32_t)iocurrent); + CLEAR_BIT(EXTI->RTSR, (uint32_t)iocurrent); + + tmp = (0x0FU) << (4 * (position & 0x03)); + CLEAR_BIT(SYSCFG->EXTICR[position >> 2], tmp); + } + + /*------------------------- GPIO Mode Configuration --------------------*/ + /* Configure IO Direction in Input Floating Mode */ + CLEAR_BIT(GPIOx->MODER, GPIO_MODER_MODER0 << (position * 2)); + + /* Configure the default Alternate Function in current IO */ + CLEAR_BIT(GPIOx->AFR[position >> 3], 0xFU << ((uint32_t)(position & 0x07U) * 4)) ; + /* Deactivate the Pull-up oand Pull-down resistor for the current IO */ + CLEAR_BIT(GPIOx->PUPDR, GPIO_PUPDR_PUPDR0 << (position * 2)); + + /* Configure the default value IO Output Type */ + CLEAR_BIT(GPIOx->OTYPER, GPIO_OTYPER_OT_0 << position) ; + + /* Configure the default value for IO Speed */ + CLEAR_BIT(GPIOx->OSPEEDR, GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + } + + position++; + } +} + +/** + * @} + */ + +/** @addtogroup GPIO_Exported_Functions_Group2 + * @brief GPIO Read, Write, Toggle, Lock and EXTI management functions. + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Reads the specified input port pin. + * @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices + * @param GPIO_Pin specifies the port bit to read. + * This parameter can be GPIO_PIN_x where x can be (0..15). + * @retval The input port pin value. + */ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + GPIO_PinState bitstatus; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) + { + bitstatus = GPIO_PIN_SET; + } + else + { + bitstatus = GPIO_PIN_RESET; + } + return bitstatus; +} + +/** + * @brief Sets or clears the selected data port bit. + * @note This function uses GPIOx_BSRR register to allow atomic read/modify + * accesses. In this way, there is no risk of an IRQ occurring between + * the read and the modify access. + * @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be one of GPIO_PIN_x where x can be (0..15). + * @param PinState specifies the value to be written to the selected bit. + * This parameter can be one of the GPIO_PinState enum values: + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ; + } +} + +/** + * @brief Toggles the specified GPIO pin + * @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices + * @param GPIO_Pin specifies the pins to be toggled. + * @retval None + */ +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint32_t odr; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* get current Output Data Register value */ + odr = GPIOx->ODR; + + /* Set selected pins that were at low level, and reset ones that were high */ + GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); +} + +/** +* @brief Locks GPIO Pins configuration registers. +* @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, +* GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. +* @note The configuration of the locked GPIO pins can no longer be modified +* until the next reset. +* @note Limitation concerning GPIOx_OTYPER: Locking of GPIOx_OTYPER[i] with i = 15..8 +* depends from setting of GPIOx_LCKR[i-8] and not from GPIOx_LCKR[i]. +* GPIOx_LCKR[i-8] is locking GPIOx_OTYPER[i] together with GPIOx_OTYPER[i-8]. +* It is not possible to lock GPIOx_OTYPER[i] with i = 15..8, without locking also +* GPIOx_OTYPER[i-8]. +* Workaround: When calling HAL_GPIO_LockPin with GPIO_Pin from GPIO_PIN_8 to GPIO_PIN_15, +* you must call also HAL_GPIO_LockPin with GPIO_Pin - 8. +* (When locking a pin from GPIO_PIN_8 to GPIO_PIN_15, you must lock also the corresponding +* GPIO_PIN_0 to GPIO_PIN_7). +* @param GPIOx where x can be (A..G depending on device used) to select the GPIO peripheral for STM32L1XX family devices +* @param GPIO_Pin Specifies the port bit to be locked. +* This parameter can be any combination of GPIO_PIN_x where x can be (0..15). +* @retval None +*/ +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + __IO uint32_t tmp = GPIO_LCKR_LCKK; + + /* Check the parameters */ + assert_param(IS_GPIO_LOCK_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Apply lock key write sequence */ + SET_BIT(tmp, GPIO_Pin); + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ + GPIOx->LCKR = GPIO_Pin; + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Read LCKK register. This read is mandatory to complete key lock sequence */ + tmp = GPIOx->LCKR; + + /* Read again in order to confirm lock is active */ + if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET) + { + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + HAL_GPIO_EXTI_Callback(GPIO_Pin); + } +} + +/** + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(GPIO_Pin); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + + +/** + * @} + */ + +#endif /* HAL_GPIO_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c new file mode 100644 index 0000000..c3a342f --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr.c @@ -0,0 +1,650 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_pwr.c + * @author MCD Application Team + * @brief PWR HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the Power Controller (PWR) peripheral: + * + Initialization/de-initialization functions + * + Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup PWR PWR + * @brief PWR HAL module driver + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +#define PVD_MODE_IT (0x00010000U) +#define PVD_MODE_EVT (0x00020000U) +#define PVD_RISING_EDGE (0x00000001U) +#define PVD_FALLING_EDGE (0x00000002U) + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + After reset, the backup domain (RTC registers, RTC backup data + registers) is protected against possible unwanted + write accesses. + To enable access to the RTC Domain and RTC registers, proceed as follows: + (+) Enable the Power Controller (PWR) APB1 interface clock using the + __HAL_RCC_PWR_CLK_ENABLE() macro. + (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function. + +@endverbatim + * @{ + */ + +/** + * @brief Deinitializes the PWR peripheral registers to their default reset values. + * @note Before calling this function, the VOS[1:0] bits should be configured + * to "10" and the system frequency has to be configured accordingly. + * To configure the VOS[1:0] bits, use the PWR_VoltageScalingConfig() + * function. + * @note ULP and FWU bits are not reset by this function. + * @retval None + */ +void HAL_PWR_DeInit(void) +{ + __HAL_RCC_PWR_FORCE_RESET(); + __HAL_RCC_PWR_RELEASE_RESET(); +} + +/** + * @brief Enables access to the backup domain (RTC registers, RTC + * backup data registers ). + * @note If the HSE divided by 2, 4, 8 or 16 is used as the RTC clock, the + * Backup Domain Access should be kept enabled. + * @retval None + */ +void HAL_PWR_EnableBkUpAccess(void) +{ + /* Enable access to RTC and backup registers */ + *(__IO uint32_t *) CR_DBP_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables access to the backup domain (RTC registers, RTC + * backup data registers). + * @note If the HSE divided by 2, 4, 8 or 16 is used as the RTC clock, the + * Backup Domain Access should be kept enabled. + * @retval None + */ +void HAL_PWR_DisableBkUpAccess(void) +{ + /* Disable access to RTC and backup registers */ + *(__IO uint32_t *) CR_DBP_BB = (uint32_t)DISABLE; +} + +/** + * @} + */ + +/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @brief Low Power modes configuration functions + * +@verbatim + + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + + *** PVD configuration *** + ========================= + [..] + (+) The PVD is used to monitor the VDD power supply by comparing it to a + threshold selected by the PVD Level (PLS[2:0] bits in the PWR_CR). + (+) The PVD can use an external input analog voltage (PVD_IN) which is compared + internally to VREFINT. The PVD_IN (PB7) has to be configured in Analog mode + when PWR_PVDLevel_7 is selected (PLS[2:0] = 111). + + (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower + than the PVD threshold. This event is internally connected to the EXTI + line16 and can generate an interrupt if enabled. This is done through + __HAL_PWR_PVD_EXTI_ENABLE_IT() macro. + (+) The PVD is stopped in Standby mode. + + *** WakeUp pin configuration *** + ================================ + [..] + (+) WakeUp pin is used to wake up the system from Standby mode. This pin is + forced in input pull-down configuration and is active on rising edges. + (+) There are two or three WakeUp pins: + WakeUp Pin 1 on PA.00. + WakeUp Pin 2 on PC.13. + WakeUp Pin 3 on PE.06. : Only on product with GPIOE available + + [..] + *** Main and Backup Regulators configuration *** + ================================================ + + (+) The main internal regulator can be configured to have a tradeoff between + performance and power consumption when the device does not operate at + the maximum frequency. This is done through __HAL_PWR_VOLTAGESCALING_CONFIG() + macro which configure VOS bit in PWR_CR register: + (++) When this bit is set (Regulator voltage output Scale 1 mode selected) + the System frequency can go up to 32 MHz. + (++) When this bit is reset (Regulator voltage output Scale 2 mode selected) + the System frequency can go up to 16 MHz. + (++) When this bit is reset (Regulator voltage output Scale 3 mode selected) + the System frequency can go up to 4.2 MHz. + + Refer to the datasheets for more details. + + *** Low Power modes configuration *** + ===================================== + [..] + The device features 5 low-power modes: + (+) Low power run mode: regulator in low power mode, limited clock frequency, + limited number of peripherals running. + (+) Sleep mode: Cortex-M3 core stopped, peripherals kept running. + (+) Low power sleep mode: Cortex-M3 core stopped, limited clock frequency, + limited number of peripherals running, regulator in low power mode. + (+) Stop mode: All clocks are stopped, regulator running, regulator in low power mode. + (+) Standby mode: VCORE domain powered off + + *** Low power run mode *** + ========================= + [..] + To further reduce the consumption when the system is in Run mode, the regulator can be + configured in low power mode. In this mode, the system frequency should not exceed + MSI frequency range1. + In Low power run mode, all I/O pins keep the same state as in Run mode. + + (+) Entry: + (++) VCORE in range2 + (++) Decrease the system frequency tonot exceed the frequency of MSI frequency range1. + (++) The regulator is forced in low power mode using the HAL_PWREx_EnableLowPowerRunMode() + function. + (+) Exit: + (++) The regulator is forced in Main regulator mode using the HAL_PWREx_DisableLowPowerRunMode() + function. + (++) Increase the system frequency if needed. + + *** Sleep mode *** + ================== + [..] + (+) Entry: + The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFx) + functions with + (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + + (+) Exit: + (++) Any peripheral interrupt acknowledged by the nested vectored interrupt + controller (NVIC) can wake up the device from Sleep mode. + + *** Low power sleep mode *** + ============================ + [..] + (+) Entry: + The Low power sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFx) + functions with + (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + (+) The Flash memory can be switched off by using the control bits (SLEEP_PD in the FLASH_ACR register. + This reduces power consumption but increases the wake-up time. + + (+) Exit: + (++) If the WFI instruction was used to enter Low power sleep mode, any peripheral interrupt + acknowledged by the nested vectored interrupt controller (NVIC) can wake up the device + from Low power sleep mode. If the WFE instruction was used to enter Low power sleep mode, + the MCU exits Sleep mode as soon as an event occurs. + + *** Stop mode *** + ================= + [..] + The Stop mode is based on the Cortex-M3 deepsleep mode combined with peripheral + clock gating. The voltage regulator can be configured either in normal or low-power mode. + In Stop mode, all clocks in the VCORE domain are stopped, the PLL, the MSI, the HSI and + the HSE RC oscillators are disabled. Internal SRAM and register contents are preserved. + To get the lowest consumption in Stop mode, the internal Flash memory also enters low + power mode. When the Flash memory is in power-down mode, an additional startup delay is + incurred when waking up from Stop mode. + To minimize the consumption In Stop mode, VREFINT, the BOR, PVD, and temperature + sensor can be switched off before entering Stop mode. They can be switched on again by + software after exiting Stop mode using the ULP bit in the PWR_CR register. + In Stop mode, all I/O pins keep the same state as in Run mode. + + (+) Entry: + The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI ) + function with: + (++) Main regulator ON. + (++) Low Power regulator ON. + (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + (+) Exit: + (++) By issuing an interrupt or a wakeup event, the MSI RC oscillator is selected as system clock. + + *** Standby mode *** + ==================== + [..] + The Standby mode allows to achieve the lowest power consumption. It is based on the + Cortex-M3 deepsleep mode, with the voltage regulator disabled. The VCORE domain is + consequently powered off. The PLL, the MSI, the HSI oscillator and the HSE oscillator are + also switched off. SRAM and register contents are lost except for the RTC registers, RTC + backup registers and Standby circuitry. + + To minimize the consumption In Standby mode, VREFINT, the BOR, PVD, and temperature + sensor can be switched off before entering the Standby mode. They can be switched + on again by software after exiting the Standby mode. + function. + + (+) Entry: + (++) The Standby mode is entered using the HAL_PWR_EnterSTANDBYMode() function. + (+) Exit: + (++) WKUP pin rising edge, RTC alarm (Alarm A and Alarm B), RTC wakeup, + tamper event, time-stamp event, external reset in NRST pin, IWDG reset. + + *** Auto-wakeup (AWU) from low-power mode *** + ============================================= + [..] + The MCU can be woken up from low-power mode by an RTC Alarm event, an RTC + Wakeup event, a tamper event, a time-stamp event, or a comparator event, + without depending on an external interrupt (Auto-wakeup mode). + + (+) RTC auto-wakeup (AWU) from the Stop mode + (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to: + (+++) Configure the EXTI Line 17 to be sensitive to rising edges (Interrupt + or Event modes) and Enable the RTC Alarm Interrupt using the HAL_RTC_SetAlarm_IT() + function + (+++) Configure the RTC to generate the RTC alarm using the HAL_RTC_Init() + and HAL_RTC_SetTime() functions. + (++) To wake up from the Stop mode with an RTC Tamper or time stamp event, it + is necessary to: + (+++) Configure the EXTI Line 19 to be sensitive to rising edges (Interrupt or Event modes) and + Enable the RTC Tamper or time stamp Interrupt using the HAL_RTCEx_SetTamper_IT() + or HAL_RTCEx_SetTimeStamp_IT() functions. + (++) To wake up from the Stop mode with an RTC WakeUp event, it is necessary to: + (+++) Configure the EXTI Line 20 to be sensitive to rising edges (Interrupt or Event modes) and + Enable the RTC WakeUp Interrupt using the HAL_RTCEx_SetWakeUpTimer_IT() function. + (+++) Configure the RTC to generate the RTC WakeUp event using the HAL_RTCEx_SetWakeUpTimer() + function. + + (+) RTC auto-wakeup (AWU) from the Standby mode + (++) To wake up from the Standby mode with an RTC alarm event, it is necessary to: + (+++) Enable the RTC Alarm Interrupt using the HAL_RTC_SetAlarm_IT() function. + (+++) Configure the RTC to generate the RTC alarm using the HAL_RTC_Init() + and HAL_RTC_SetTime() functions. + (++) To wake up from the Standby mode with an RTC Tamper or time stamp event, it + is necessary to: + (+++) Enable the RTC Tamper or time stamp Interrupt and Configure the RTC to + detect the tamper or time stamp event using the HAL_RTCEx_SetTimeStamp_IT() + or HAL_RTCEx_SetTamper_IT()functions. + (++) To wake up from the Standby mode with an RTC WakeUp event, it is necessary to: + (+++) Enable the RTC WakeUp Interrupt and Configure the RTC to generate the RTC WakeUp event + using the HAL_RTCEx_SetWakeUpTimer_IT() and HAL_RTCEx_SetWakeUpTimer() functions. + + (+) Comparator auto-wakeup (AWU) from the Stop mode + (++) To wake up from the Stop mode with an comparator 1 or comparator 2 wakeup + event, it is necessary to: + (+++) Configure the EXTI Line 21 or EXTI Line 22 for comparator to be sensitive to to the + selected edges (falling, rising or falling and rising) (Interrupt or Event modes) using + the COMP functions. + (+++) Configure the comparator to generate the event. + + + +@endverbatim + * @{ + */ + +/** + * @brief Configures the voltage threshold detected by the Power Voltage Detector(PVD). + * @param sConfigPVD pointer to an PWR_PVDTypeDef structure that contains the configuration + * information for the PVD. + * @note Refer to the electrical characteristics of your device datasheet for + * more details about the voltage threshold corresponding to each + * detection level. + * @retval None + */ +void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD) +{ + /* Check the parameters */ + assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel)); + assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode)); + + /* Set PLS[7:5] bits according to PVDLevel value */ + MODIFY_REG(PWR->CR, PWR_CR_PLS, sConfigPVD->PVDLevel); + + /* Clear any previous config. Keep it clear if no event or IT mode is selected */ + __HAL_PWR_PVD_EXTI_DISABLE_EVENT(); + __HAL_PWR_PVD_EXTI_DISABLE_IT(); + __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE(); + + /* Configure interrupt mode */ + if((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT) + { + __HAL_PWR_PVD_EXTI_ENABLE_IT(); + } + + /* Configure event mode */ + if((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT) + { + __HAL_PWR_PVD_EXTI_ENABLE_EVENT(); + } + + /* Configure the edge */ + if((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); + } + + if((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); + } +} + +/** + * @brief Enables the Power Voltage Detector(PVD). + * @retval None + */ +void HAL_PWR_EnablePVD(void) +{ + /* Enable the power voltage detector */ + *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables the Power Voltage Detector(PVD). + * @retval None + */ +void HAL_PWR_DisablePVD(void) +{ + /* Disable the power voltage detector */ + *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)DISABLE; +} + +/** + * @brief Enables the WakeUp PINx functionality. + * @param WakeUpPinx: Specifies the Power Wake-Up pin to enable. + * This parameter can be one of the following values: + * @arg PWR_WAKEUP_PIN1 + * @arg PWR_WAKEUP_PIN2 + * @arg PWR_WAKEUP_PIN3: Only on product with GPIOE available + * @retval None + */ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx) +{ + /* Check the parameter */ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + /* Enable the EWUPx pin */ + *(__IO uint32_t *) CSR_EWUP_BB(WakeUpPinx) = (uint32_t)ENABLE; +} + +/** + * @brief Disables the WakeUp PINx functionality. + * @param WakeUpPinx: Specifies the Power Wake-Up pin to disable. + * This parameter can be one of the following values: + * @arg PWR_WAKEUP_PIN1 + * @arg PWR_WAKEUP_PIN2 + * @arg PWR_WAKEUP_PIN3: Only on product with GPIOE available + * @retval None + */ +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) +{ + /* Check the parameter */ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + /* Disable the EWUPx pin */ + *(__IO uint32_t *) CSR_EWUP_BB(WakeUpPinx) = (uint32_t)DISABLE; +} + +/** + * @brief Enters Sleep mode. + * @note In Sleep mode, all I/O pins keep the same state as in Run mode. + * @param Regulator: Specifies the regulator state in SLEEP mode. + * This parameter can be one of the following values: + * @arg PWR_MAINREGULATOR_ON: SLEEP mode with regulator ON + * @arg PWR_LOWPOWERREGULATOR_ON: SLEEP mode with low power regulator ON + * @param SLEEPEntry: Specifies if SLEEP mode is entered with WFI or WFE instruction. + * When WFI entry is used, tick interrupt have to be disabled if not desired as + * the interrupt wake up source. + * This parameter can be one of the following values: + * @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + * @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + * @retval None + */ +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry) +{ + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + + /* Select the regulator state in Sleep mode: Set PDDS and LPSDSR bit according to PWR_Regulator value */ + MODIFY_REG(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPSDSR), Regulator); + + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* Select SLEEP mode entry -------------------------------------------------*/ + if(SLEEPEntry == PWR_SLEEPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } + + /* Additional NOP() instruction to ensure that all pending instructions are flushed before entering sleep mode */ + __NOP(); +} + +/** + * @brief Enters Stop mode. + * @note In Stop mode, all I/O pins keep the same state as in Run mode. + * @note When exiting Stop mode by using an interrupt or a wakeup event, + * MSI RC oscillator is selected as system clock. + * @note When the voltage regulator operates in low power mode, an additional + * startup delay is incurred when waking up from Stop mode. + * By keeping the internal regulator ON during Stop mode, the consumption + * is higher although the startup time is reduced. + * @param Regulator: Specifies the regulator state in Stop mode. + * This parameter can be one of the following values: + * @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON + * @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON + * @param STOPEntry: Specifies if Stop mode in entered with WFI or WFE instruction. + * This parameter can be one of the following values: + * @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction + * @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction + * @retval None + */ +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry) +{ + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + + /* Select the regulator state in Stop mode: Set PDDS and LPSDSR bit according to PWR_Regulator value */ + MODIFY_REG(PWR->CR, (PWR_CR_PDDS | PWR_CR_LPSDSR), Regulator); + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* Select Stop mode entry --------------------------------------------------*/ + if(STOPEntry == PWR_STOPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Enters Standby mode. + * @note In Standby mode, all I/O pins are high impedance except for: + * - Reset pad (still available) + * - RTC_AF1 pin (PC13) if configured for tamper, time-stamp, RTC + * Alarm out, or RTC clock calibration out. + * - WKUP pin 1 (PA0) if enabled. + * - WKUP pin 2 (PC13) if enabled. + * - WKUP pin 3 (PE6) if enabled. + * @retval None + */ +void HAL_PWR_EnterSTANDBYMode(void) +{ + /* Select Standby mode */ + SET_BIT(PWR->CR, PWR_CR_PDDS); + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* This option is used to ensure that store operations are completed */ +#if defined ( __CC_ARM) + __force_stores(); +#endif + /* Request Wait For Interrupt */ + __WFI(); +} + + +/** + * @brief Indicates Sleep-On-Exit when returning from Handler mode to Thread mode. + * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the processor + * re-enters SLEEP mode when an interruption handling is over. + * Setting this bit is useful when the processor is expected to run only on + * interruptions handling. + * @retval None + */ +void HAL_PWR_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + + +/** + * @brief Disables Sleep-On-Exit feature when returning from Handler mode to Thread mode. + * @note Clears SLEEPONEXIT bit of SCR register. When this bit is set, the processor + * re-enters SLEEP mode when an interruption handling is over. + * @retval None + */ +void HAL_PWR_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + + +/** + * @brief Enables CORTEX M3 SEVONPEND bit. + * @note Sets SEVONPEND bit of SCR register. When this bit is set, this causes + * WFE to wake up when an interrupt moves from inactive to pended. + * @retval None + */ +void HAL_PWR_EnableSEVOnPend(void) +{ + /* Set SEVONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + + +/** + * @brief Disables CORTEX M3 SEVONPEND bit. + * @note Clears SEVONPEND bit of SCR register. When this bit is set, this causes + * WFE to wake up when an interrupt moves from inactive to pended. + * @retval None + */ +void HAL_PWR_DisableSEVOnPend(void) +{ + /* Clear SEVONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + + + +/** + * @brief This function handles the PWR PVD interrupt request. + * @note This API should be called under the PVD_IRQHandler(). + * @retval None + */ +void HAL_PWR_PVD_IRQHandler(void) +{ + /* Check PWR exti flag */ + if(__HAL_PWR_PVD_EXTI_GET_FLAG() != RESET) + { + /* PWR PVD interrupt user callback */ + HAL_PWR_PVDCallback(); + + /* Clear PWR Exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_FLAG(); + } +} + +/** + * @brief PWR PVD interrupt callback + * @retval None + */ +__weak void HAL_PWR_PVDCallback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_PWR_PVDCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c new file mode 100644 index 0000000..b1e4aab --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_pwr_ex.c @@ -0,0 +1,158 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_pwr_ex.c + * @author MCD Application Team + * @brief Extended PWR HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Power Controller (PWR) peripheral: + * + Extended Initialization and de-initialization functions + * + Extended Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup PWREx PWREx + * @brief PWR HAL module driver + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup PWREx_Exported_Functions PWREx Exported Functions + * @{ + */ + +/** @defgroup PWREx_Exported_Functions_Group1 Peripheral Extended Features Functions + * @brief Low Power modes configuration functions + * +@verbatim + + =============================================================================== + ##### Peripheral extended features functions ##### + =============================================================================== +@endverbatim + * @{ + */ + +/** + * @brief Return Voltage Scaling Range. + * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1, PWR_REGULATOR_VOLTAGE_SCALE2 or PWR_REGULATOR_VOLTAGE_SCALE3) + */ +uint32_t HAL_PWREx_GetVoltageRange(void) +{ + return (PWR->CR & PWR_CR_VOS); +} + + +/** + * @brief Enables the Fast WakeUp from Ultra Low Power mode. + * @note This bit works in conjunction with ULP bit. + * Means, when ULP = 1 and FWU = 1 :VREFINT startup time is ignored when + * exiting from low power mode. + * @retval None + */ +void HAL_PWREx_EnableFastWakeUp(void) +{ + /* Enable the fast wake up */ + *(__IO uint32_t *) CR_FWU_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables the Fast WakeUp from Ultra Low Power mode. + * @retval None + */ +void HAL_PWREx_DisableFastWakeUp(void) +{ + /* Disable the fast wake up */ + *(__IO uint32_t *) CR_FWU_BB = (uint32_t)DISABLE; +} + +/** + * @brief Enables the Ultra Low Power mode + * @retval None + */ +void HAL_PWREx_EnableUltraLowPower(void) +{ + /* Enable the Ultra Low Power mode */ + *(__IO uint32_t *) CR_ULP_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables the Ultra Low Power mode + * @retval None + */ +void HAL_PWREx_DisableUltraLowPower(void) +{ + /* Disable the Ultra Low Power mode */ + *(__IO uint32_t *) CR_ULP_BB = (uint32_t)DISABLE; +} + +/** + * @brief Enters the Low Power Run mode. + * @note Low power run mode can only be entered when VCORE is in range 2. + * In addition, the dynamic voltage scaling must not be used when Low + * power run mode is selected. Only Stop and Sleep modes with regulator + * configured in Low power mode is allowed when Low power run mode is + * selected. + * @note In Low power run mode, all I/O pins keep the same state as in Run mode. + * @retval None + */ +void HAL_PWREx_EnableLowPowerRunMode(void) +{ + /* Enters the Low Power Run mode */ + *(__IO uint32_t *) CR_LPSDSR_BB = (uint32_t)ENABLE; + *(__IO uint32_t *) CR_LPRUN_BB = (uint32_t)ENABLE; +} + +/** + * @brief Exits the Low Power Run mode. + * @retval None + */ +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void) +{ + /* Exits the Low Power Run mode */ + *(__IO uint32_t *) CR_LPRUN_BB = (uint32_t)DISABLE; + *(__IO uint32_t *) CR_LPSDSR_BB = (uint32_t)DISABLE; + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c new file mode 100644 index 0000000..c52899b --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc.c @@ -0,0 +1,1394 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_rcc.c + * @author MCD Application Team + * @brief RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Reset and Clock Control (RCC) peripheral: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### RCC specific features ##### + ============================================================================== + [..] + After reset the device is running from multispeed internal oscillator clock + (MSI 2.097MHz) with Flash 0 wait state and Flash prefetch buffer is disabled, + and all peripherals are off except internal SRAM, Flash and JTAG. + (+) There is no prescaler on High speed (AHB) and Low speed (APB) buses; + all peripherals mapped on these buses are running at MSI speed. + (+) The clock for all peripherals is switched off, except the SRAM and FLASH. + (+) All GPIOs are in input floating state, except the JTAG pins which + are assigned to be used for debug purpose. + [..] Once the device started from reset, the user application has to: + (+) Configure the clock source to be used to drive the System clock + (if the application needs higher frequency/performance) + (+) Configure the System clock frequency and Flash settings + (+) Configure the AHB and APB buses prescalers + (+) Enable the clock for the peripheral(s) to be used + (+) Configure the clock source(s) for peripherals whose clocks are not + derived from the System clock (I2S, RTC, ADC, USB OTG FS/SDIO/RNG) + (*) SDIO only for STM32L1xxxD devices + + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup RCC RCC +* @brief RCC HAL module driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/** @defgroup RCC_Private_Macros RCC Private Macros + * @{ + */ + +#define MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define MCO1_GPIO_PORT GPIOA +#define MCO1_PIN GPIO_PIN_8 + +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/** @defgroup RCC_Private_Variables RCC Private Variables + * @{ + */ +extern const uint8_t PLLMulTable[]; /* Defined in CMSIS (system_stm32l0xx.c)*/ +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup RCC_Private_Functions RCC Private Functions + * @{ + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange); +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * + @verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to configure the internal/external oscillators + (MSI, HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1 + and APB2). + + [..] Internal/external clock and PLL configuration + (#) MSI (Multispeed internal), Seven frequency ranges are available: 65.536 kHz, + 131.072 kHz, 262.144 kHz, 524.288 kHz, 1.048 MHz, 2.097 MHz (default value) and 4.194 MHz. + + (#) HSI (high-speed internal), 16 MHz factory-trimmed RC used directly or through + the PLL as System clock source. + (#) LSI (low-speed internal), ~37 KHz low consumption RC used as IWDG and/or RTC + clock source. + + (#) HSE (high-speed external), 1 to 24 MHz crystal oscillator used directly or + through the PLL as System clock source. Can be used also as RTC clock source. + + (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source. + + (#) PLL (clocked by HSI or HSE), featuring different output clocks: + (++) The first output is used to generate the high speed system clock (up to 32 MHz) + (++) The second output is used to generate the clock for the USB OTG FS (48 MHz) + + (#) CSS (Clock security system), once enable using the macro __HAL_RCC_CSS_ENABLE() + and if a HSE clock failure occurs(HSE used directly or through PLL as System + clock source), the System clocks automatically switched to MSI and an interrupt + is generated if enabled. The interrupt is linked to the Cortex-M3 NMI + (Non-Maskable Interrupt) exception vector. + + (#) MCO1 (microcontroller clock output), used to output SYSCLK, HSI, LSI, MSI, LSE, + HSE or PLL clock (through a configurable prescaler) on PA8 pin. + + [..] System, AHB and APB buses clocks configuration + (#) Several clock sources can be used to drive the System clock (SYSCLK): MSI, HSI, + HSE and PLL. + The AHB clock (HCLK) is derived from System clock through configurable + prescaler and used to clock the CPU, memory and peripherals mapped + on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived + from AHB clock through configurable prescalers and used to clock + the peripherals mapped on these buses. You can use + "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks. + + -@- All the peripheral clocks are derived from the System clock (SYSCLK) except: + (+@) RTC: RTC clock can be derived either from the LSI, LSE or HSE clock + divided by 2 to 16. You have to use __HAL_RCC_RTC_CONFIG() and __HAL_RCC_RTC_ENABLE() + macros to configure this clock. + (+@) LCD: LCD clock can be derived either from the LSI, LSE or HSE clock + divided by 2 to 16. You have to use __HAL_RCC_LCD_CONFIG() + macros to configure this clock. + (+@) USB OTG FS: USB OTG FS require a frequency equal to 48 MHz + to work correctly. This clock is derived of the main PLL through PLL Multiplier. + + (+@) IWDG clock which is always the LSI clock. + + (#) The maximum frequency of the SYSCLK and HCLK is 32 MHz, PCLK2 32 MHz + and PCLK1 32 MHz. Depending on the device voltage range, the maximum + frequency should be adapted accordingly. + @endverbatim + * @{ + */ + +/* + Additional consideration on the HCLK based on Latency settings: + +----------------------------------------------------------------------+ + | Latency | HCLK clock frequency (MHz) | + | |------------------------------------------------------| + | | voltage range 1 | voltage range 2 | voltage range 3 | + | | 1.8 V | 1.5 V | 1.2 V | + |---------------|------------------|-----------------|-----------------| + |0WS(1CPU cycle)| 0 < HCLK <= 16 | 0 < HCLK <= 8 | 0 < HCLK <= 2 | + |---------------|------------------|-----------------|-----------------| + |1WS(2CPU cycle)| 16 < HCLK <= 32 | 8 < HCLK <= 16 | 2 < HCLK <= 4 | + +----------------------------------------------------------------------+ + + The following table gives the different clock source frequencies depending on the product + voltage range: + +------------------------------------------------------------------------------------------+ + | Product voltage | Clock frequency | + | |------------------|-----------------------------|-----------------------| + | range | MSI | HSI | HSE | PLL | + |-----------------|---------|--------|-----------------------------|-----------------------| + | Range 1 (1.8 V) | 4.2 MHz | 16 MHz | HSE 32 MHz (external clock) | 32 MHz | + | | | | or 24 MHz (crystal) | (PLLVCO max = 96 MHz) | + |-----------------|---------|--------|-----------------------------|-----------------------| + | Range 2 (1.5 V) | 4.2 MHz | 16 MHz | 16 MHz | 16 MHz | + | | | | | (PLLVCO max = 48 MHz) | + |-----------------|---------|--------|-----------------------------|-----------------------| + | Range 3 (1.2 V) | 4.2 MHz | NA | 8 MHz | 4 MHz | + | | | | | (PLLVCO max = 24 MHz) | + +------------------------------------------------------------------------------------------+ + */ + +/** + * @brief Resets the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - MSI ON and used as system clock source + * - HSI, HSE and PLL OFF + * - AHB, APB1 and APB2 prescaler set to 1. + * - CSS and MCO1 OFF + * - All interrupts disabled + * @note This function does not modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_DeInit(void) +{ + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Set MSIClockRange, HSITRIM and MSITRIM bits to the reset values */ + MODIFY_REG(RCC->ICSCR, (RCC_ICSCR_MSITRIM | RCC_ICSCR_HSITRIM | RCC_ICSCR_MSIRANGE), \ + ((RCC_MSICALIBRATION_DEFAULT << RCC_ICSCR_MSITRIM_Pos) | (RCC_HSICALIBRATION_DEFAULT << RCC_ICSCR_HSITRIM_Pos) | RCC_ICSCR_MSIRANGE_5)); + + /* Set MSION bit */ + SET_BIT(RCC->CR, RCC_CR_MSION); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till MSI is ready */ + while (READ_BIT(RCC->CR, RCC_CR_MSIRDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Switch SYSCLK to MSI*/ + CLEAR_BIT(RCC->CFGR, RCC_CFGR_SW); + + /* Wait till MSI as SYSCLK status is ready */ + while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != 0U) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = MSI_VALUE; + + /* Configure the source of time base considering new system clock settings */ + status = HAL_InitTick(uwTickPrio); + if(status != HAL_OK) + { + return status; + } + + /* Reset HSION, HSEON, CSSON & PLLON bits */ + CLEAR_BIT(RCC->CR, RCC_CR_HSION | RCC_CR_HSEON | RCC_CR_CSSON | RCC_CR_PLLON); + /* Reset HSEBYP bit */ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is not ready */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Reset CFGR register */ + CLEAR_REG(RCC->CFGR); + + /* Disable all interrupts */ + CLEAR_REG(RCC->CIR); + + /* Clear all flags */ +#if defined(RCC_LSECSS_SUPPORT) + WRITE_REG(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC | RCC_CIR_MSIRDYC | RCC_CIR_LSECSSC | RCC_CIR_CSSC); +#else + WRITE_REG(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC | RCC_CIR_MSIRDYC | RCC_CIR_CSSC); +#endif + + /* Clear all reset flags */ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); + + return HAL_OK; +} + +/** + * @brief Initializes the RCC Oscillators according to the specified parameters in the + * RCC_OscInitTypeDef. + * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + * contains the configuration information for the RCC Oscillators. + * @note The PLL is not disabled when used as system clock. + * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not + * supported by this macro. User should request a transition to LSE Off + * first and then LSE On or LSE Bypass. + * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + uint32_t tickstart; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check the parameters */ + if(RCC_OscInitStruct == NULL) + { + return HAL_ERROR; + } + + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + { + return HAL_ERROR; + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + { + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + { + return HAL_ERROR; + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + } + } + else + { + /* Check the HSI State */ + if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + { + return HAL_ERROR; + } + /* Otherwise, just the calibration and MSI range change are allowed */ + else + { + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + { + /* First increase number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + { + return HAL_ERROR; + } + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + } + else + { + /* Else, keep current flash latency while decreasing applies */ + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + + /* Decrease number of wait states update if necessary */ + if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + { + return HAL_ERROR; + } + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + if(status != HAL_OK) + { + return status; + } + } + } + else + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + /* Check MSICalibrationValue and MSIClockRange input parameters */ + assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue)); + assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange)); + + /* Selects the Multiple Speed oscillator (MSI) clock range .*/ + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + { + FlagStatus pwrclkchanged = RESET; + + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + { + /* Check the parameters */ + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + { + return HAL_ERROR; + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + { + return HAL_ERROR; + } + } + } + } + + return HAL_OK; +} + +/** + * @brief Initializes the CPU, AHB and APB buses clocks according to the specified + * parameters in the RCC_ClkInitStruct. + * @param RCC_ClkInitStruct pointer to an RCC_OscInitTypeDef structure that + * contains the configuration information for the RCC peripheral. + * @param FLatency FLASH Latency + * The value of this parameter depend on device used within the same series + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + * and updated by @ref HAL_RCC_GetHCLKFreq() function called within this function + * + * @note The MSI is used (enabled by hardware) as system clock source after + * start-up from Reset, wake-up from STOP and STANDBY mode, or in case + * of failure of the HSE used directly or indirectly as system clock + * (if the Clock Security System CSS is enabled). + * + * @note A switch from one clock source to another occurs only if the target + * clock source is ready (clock stable after start-up delay or PLL locked). + * If a clock source which is not yet ready is selected, the switch will + * occur when the clock source will be ready. + * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is + * currently used as system clock source. + * @note Depending on the device voltage range, the software has to set correctly + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check the parameters */ + if(RCC_ClkInitStruct == NULL) + { + return HAL_ERROR; + } + + assert_param(IS_FLASH_LATENCY(FLatency)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if(FLatency > __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + { + return HAL_ERROR; + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + { + return HAL_ERROR; + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + { + return HAL_ERROR; + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + { + return HAL_ERROR; + } + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + { + return HAL_ERROR; + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != FLatency) + { + return HAL_ERROR; + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + + return status; +} + +/** + * @} + */ + +/** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions + * @brief RCC clocks control functions + * + @verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the RCC Clocks + frequencies. + + @endverbatim + * @{ + */ + +/** + * @brief Selects the clock source to output on MCO pin. + * @note MCO pin should be configured in alternate function mode. + * @param RCC_MCOx specifies the output direction for the clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO1 Clock source to output on MCO1 pin(PA8). + * @param RCC_MCOSource specifies the clock source to output. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO1SOURCE_NOCLOCK No clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_SYSCLK System clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_HSI HSI selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_HSE HSE selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_MSI MSI oscillator clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_PLLCLK PLL clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO clock + * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO clock + * @param RCC_MCODiv specifies the MCO DIV. + * This parameter can be one of the following values: + * @arg @ref RCC_MCODIV_1 no division applied to MCO clock + * @arg @ref RCC_MCODIV_2 division by 2 applied to MCO clock + * @arg @ref RCC_MCODIV_4 division by 4 applied to MCO clock + * @arg @ref RCC_MCODIV_8 division by 8 applied to MCO clock + * @arg @ref RCC_MCODIV_16 division by 16 applied to MCO clock + * @retval None + */ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv) +{ + GPIO_InitTypeDef gpio; + + /* Check the parameters */ + assert_param(IS_RCC_MCO(RCC_MCOx)); + assert_param(IS_RCC_MCODIV(RCC_MCODiv)); + assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource)); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(RCC_MCOx); + + /* Configure the MCO1 pin in alternate function mode */ + gpio.Mode = GPIO_MODE_AF_PP; + gpio.Speed = GPIO_SPEED_FREQ_HIGH; + gpio.Pull = GPIO_NOPULL; + gpio.Pin = MCO1_PIN; + gpio.Alternate = GPIO_AF0_MCO; + + /* MCO1 Clock Enable */ + MCO1_CLK_ENABLE(); + + HAL_GPIO_Init(MCO1_GPIO_PORT, &gpio); + + /* Configure the MCO clock source */ + __HAL_RCC_MCO1_CONFIG(RCC_MCOSource, RCC_MCODiv); +} + +/** + * @brief Enables the Clock Security System. + * @note If a failure is detected on the HSE oscillator clock, this oscillator + * is automatically disabled and an interrupt is generated to inform the + * software about the failure (Clock Security System Interrupt, CSSI), + * allowing the MCU to perform rescue operations. The CSSI is linked to + * the Cortex-M3 NMI (Non-Maskable Interrupt) exception vector. + * @retval None + */ +void HAL_RCC_EnableCSS(void) +{ + *(__IO uint32_t *) RCC_CR_CSSON_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables the Clock Security System. + * @retval None + */ +void HAL_RCC_DisableCSS(void) +{ + *(__IO uint32_t *) RCC_CR_CSSON_BB = (uint32_t)DISABLE; +} + +/** + * @brief Returns the SYSCLK frequency + * @note The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * @note If SYSCLK source is MSI, function returns a value based on MSI + * Value as defined by the MSI range. + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(*) + * @note If SYSCLK source is HSE, function returns a value based on HSE_VALUE(**) + * @note If SYSCLK source is PLL, function returns a value based on HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * @note (*) HSI_VALUE is a constant defined in stm32l1xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * @note (**) HSE_VALUE is a constant defined in stm32l1xx_hal_conf.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * @note The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @note This function can be used by the user application to compute the + * baud-rate for the communication peripherals or configure other parameters. + * + * @note Each time SYSCLK changes, this function must be called to update the + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq; + + tmpreg = RCC->CFGR; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + break; + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + break; + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + } + sysclockfreq = pllvco; + break; + } + case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */ + default: /* MSI used as system clock */ + { + msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos; + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + break; + } + } + return sysclockfreq; +} + +/** + * @brief Returns the HCLK frequency + * @note Each time HCLK changes, this function must be called to update the + * right HCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + * and updated within this function + * @retval HCLK frequency + */ +uint32_t HAL_RCC_GetHCLKFreq(void) +{ + return SystemCoreClock; +} + +/** + * @brief Returns the PCLK1 frequency + * @note Each time PCLK1 changes, this function must be called to update the + * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK1 frequency + */ +uint32_t HAL_RCC_GetPCLK1Freq(void) +{ + /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); +} + +/** + * @brief Returns the PCLK2 frequency + * @note Each time PCLK2 changes, this function must be called to update the + * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK2 frequency + */ +uint32_t HAL_RCC_GetPCLK2Freq(void) +{ + /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]); +} + +/** + * @brief Configures the RCC_OscInitStruct according to the internal + * RCC configuration registers. + * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + * will be configured. + * @retval None + */ +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + /* Check the parameters */ + assert_param(RCC_OscInitStruct != (void *)NULL); + + /* Set all possible values for the Oscillator type parameter ---------------*/ + RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI \ + | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_MSI; + + + /* Get the HSE configuration -----------------------------------------------*/ + if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP) + { + RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS; + } + else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON) + { + RCC_OscInitStruct->HSEState = RCC_HSE_ON; + } + else + { + RCC_OscInitStruct->HSEState = RCC_HSE_OFF; + } + + /* Get the HSI configuration -----------------------------------------------*/ + if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION) + { + RCC_OscInitStruct->HSIState = RCC_HSI_ON; + } + else + { + RCC_OscInitStruct->HSIState = RCC_HSI_OFF; + } + + RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->ICSCR & RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos); + + /* Get the MSI configuration -----------------------------------------------*/ + if((RCC->CR &RCC_CR_MSION) == RCC_CR_MSION) + { + RCC_OscInitStruct->MSIState = RCC_MSI_ON; + } + else + { + RCC_OscInitStruct->MSIState = RCC_MSI_OFF; + } + + RCC_OscInitStruct->MSICalibrationValue = (uint32_t)((RCC->ICSCR & RCC_ICSCR_MSITRIM) >> RCC_ICSCR_MSITRIM_Pos); + RCC_OscInitStruct->MSIClockRange = (uint32_t)((RCC->ICSCR & RCC_ICSCR_MSIRANGE)); + + /* Get the LSE configuration -----------------------------------------------*/ + if((RCC->CSR &RCC_CSR_LSEBYP) == RCC_CSR_LSEBYP) + { + RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS; + } + else if((RCC->CSR &RCC_CSR_LSEON) == RCC_CSR_LSEON) + { + RCC_OscInitStruct->LSEState = RCC_LSE_ON; + } + else + { + RCC_OscInitStruct->LSEState = RCC_LSE_OFF; + } + + /* Get the LSI configuration -----------------------------------------------*/ + if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION) + { + RCC_OscInitStruct->LSIState = RCC_LSI_ON; + } + else + { + RCC_OscInitStruct->LSIState = RCC_LSI_OFF; + } + + + /* Get the PLL configuration -----------------------------------------------*/ + if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON) + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON; + } + else + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF; + } + RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLSRC); + RCC_OscInitStruct->PLL.PLLMUL = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLMUL); + RCC_OscInitStruct->PLL.PLLDIV = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLDIV); +} + +/** + * @brief Get the RCC_ClkInitStruct according to the internal + * RCC configuration registers. + * @param RCC_ClkInitStruct pointer to an RCC_ClkInitTypeDef structure that + * contains the current clock configuration. + * @param pFLatency Pointer on the Flash Latency. + * @retval None + */ +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) +{ + /* Check the parameters */ + assert_param(RCC_ClkInitStruct != (void *)NULL); + assert_param(pFLatency != (void *)NULL); + + /* Set all possible values for the Clock type parameter --------------------*/ + RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + + /* Get the SYSCLK configuration --------------------------------------------*/ + RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); + + /* Get the HCLK configuration ----------------------------------------------*/ + RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); + + /* Get the APB1 configuration ----------------------------------------------*/ + RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); + + /* Get the APB2 configuration ----------------------------------------------*/ + RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3U); + + /* Get the Flash Wait State (Latency) configuration ------------------------*/ + *pFLatency = __HAL_FLASH_GET_LATENCY(); +} + +/** + * @brief This function handles the RCC CSS interrupt request. + * @note This API should be called under the NMI_Handler(). + * @retval None + */ +void HAL_RCC_NMI_IRQHandler(void) +{ + /* Check RCC CSSF flag */ + if(__HAL_RCC_GET_IT(RCC_IT_CSS)) + { + /* RCC Clock Security System interrupt user callback */ + HAL_RCC_CSSCallback(); + + /* Clear RCC CSS pending bit */ + __HAL_RCC_CLEAR_IT(RCC_IT_CSS); + } +} + +/** + * @brief RCC Clock Security System interrupt callback + * @retval none + */ +__weak void HAL_RCC_CSSCallback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_RCC_CSSCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup RCC_Private_Functions + * @{ + */ +/** + * @brief Update number of Flash wait states in line with MSI range and current + voltage range + * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6 + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange) +{ + uint32_t vos; + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + + /* HCLK can reach 4 MHz only if AHB prescaler = 1 */ + if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1) + { + if(__HAL_RCC_PWR_IS_CLK_ENABLED()) + { + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + } + else + { + __HAL_RCC_PWR_CLK_ENABLE(); + vos = READ_BIT(PWR->CR, PWR_CR_VOS); + __HAL_RCC_PWR_CLK_DISABLE(); + } + + /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */ + if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6)) + { + latency = FLASH_LATENCY_1; /* 1WS */ + } + } + + __HAL_FLASH_SET_LATENCY(latency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(__HAL_FLASH_GET_LATENCY() != latency) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c new file mode 100644 index 0000000..b6cbb68 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_rcc_ex.c @@ -0,0 +1,447 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_rcc_ex.c + * @author MCD Application Team + * @brief Extended RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities RCC extension peripheral: + * + Extended Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/** @defgroup RCCEx RCCEx + * @brief RCC Extension HAL module driver + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Constants RCCEx Private Constants + * @{ + */ +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Macros RCCEx Private Macros + * @{ + */ +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions + * @{ + */ + +/** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions + * @brief Extended Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Extended Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the RCC Clocks + frequencies. + [..] + (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to + select the RTC clock source; in this case the Backup domain will be reset in + order to modify the RTC Clock source, as consequence RTC registers (including + the backup registers) are set to their reset values. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the RCC extended peripherals clocks according to the specified + * parameters in the RCC_PeriphCLKInitTypeDef. + * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + * contains the configuration information for the Extended Peripherals clocks(RTC/LCD clock). + * @retval HAL status + * @note If HAL_ERROR returned, first switch-OFF HSE clock oscillator with @ref HAL_RCC_OscConfig() + * to possibly update HSE divider. + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tickstart; + uint32_t temp_reg; + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*------------------------------- RTC/LCD Configuration ------------------------*/ + if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) +#if defined(LCD) + || (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD) +#endif /* LCD */ + ) + { + /* check for RTC Parameters used to output RTCCLK */ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) + { + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + } + +#if defined(LCD) + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD) + { + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->LCDClockSelection)); + } +#endif /* LCD */ + + FlagStatus pwrclkchanged = RESET; + + /* As soon as function is called to change RTC clock source, activation of the + power domain is done. */ + /* Requires to enable write access to Backup Domain of necessary */ + if(__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Check if user wants to change HSE RTC prescaler whereas HSE is enabled */ + temp_reg = (RCC->CR & RCC_CR_RTCPRE); + if ((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CR_RTCPRE)) +#if defined (LCD) + || (temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CR_RTCPRE)) +#endif /* LCD */ + ) + { /* Check HSE State */ + if ((PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL) == RCC_CSR_RTCSEL_HSE) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) + { + /* To update HSE divider, first switch-OFF HSE clock oscillator*/ + return HAL_ERROR; + } + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ + temp_reg = (RCC->CSR & RCC_CSR_RTCSEL); + + if((temp_reg != 0x00000000U) && (((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL)) \ + && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#if defined(LCD) + || ((temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CSR_RTCSEL)) \ + && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD)) +#endif /* LCD */ + )) + { + /* Store the content of CSR register before the reset of Backup Domain */ + temp_reg = (RCC->CSR & ~(RCC_CSR_RTCSEL)); + + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + __HAL_RCC_BACKUPRESET_RELEASE(); + + /* Restore the Content of CSR register */ + RCC->CSR = temp_reg; + + /* Wait for LSERDY if LSE was enabled */ + if (HAL_IS_BIT_SET(temp_reg, RCC_CSR_LSEON)) + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } +#if defined(LCD) + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD) + { + __HAL_RCC_LCD_CONFIG(PeriphClkInit->LCDClockSelection); + } +#endif /* LCD */ + + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) + { + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + + return HAL_OK; +} + +/** + * @brief Get the PeriphClkInit according to the internal RCC configuration registers. + * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + * returns the configuration information for the Extended Peripherals clocks(RTC/LCD clocks). + * @retval None + */ +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t srcclk; + + /* Set all possible values for the extended clock type parameter------------*/ + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_RTC; +#if defined(LCD) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_LCD; +#endif /* LCD */ + + /* Get the RTC/LCD configuration -----------------------------------------------*/ + srcclk = __HAL_RCC_GET_RTC_SOURCE(); + if (srcclk != RCC_RTCCLKSOURCE_HSE_DIV2) + { + /* Source clock is LSE or LSI*/ + PeriphClkInit->RTCClockSelection = srcclk; + } + else + { + /* Source clock is HSE. Need to get the prescaler value*/ + PeriphClkInit->RTCClockSelection = srcclk | (READ_BIT(RCC->CR, RCC_CR_RTCPRE)); + } +#if defined(LCD) + PeriphClkInit->LCDClockSelection = PeriphClkInit->RTCClockSelection; +#endif /* LCD */ +} + +/** + * @brief Return the peripheral clock frequency + * @note Return 0 if peripheral clock is unknown + * @param PeriphClk Peripheral clock identifier + * This parameter can be one of the following values: + * @arg @ref RCC_PERIPHCLK_RTC RTC peripheral clock + * @arg @ref RCC_PERIPHCLK_LCD LCD peripheral clock (*) + * @note (*) means that this peripheral is not present on all the devices + * @retval Frequency in Hz (0: means that no available frequency for the peripheral) + */ +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) +{ + uint32_t frequency = 0; + uint32_t srcclk; + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClk)); + + switch (PeriphClk) + { + case RCC_PERIPHCLK_RTC: +#if defined(LCD) + case RCC_PERIPHCLK_LCD: +#endif /* LCD */ + { + /* Get the current RTC source */ + srcclk = __HAL_RCC_GET_RTC_SOURCE(); + + /* Check if LSE is ready if RTC clock selection is LSE */ + if (srcclk == RCC_RTCCLKSOURCE_LSE) + { + if (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSERDY)) + { + frequency = LSE_VALUE; + } + } + /* Check if LSI is ready if RTC clock selection is LSI */ + else if (srcclk == RCC_RTCCLKSOURCE_LSI) + { + if (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)) + { + frequency = LSI_VALUE; + } + } + /* Check if HSE is ready and if RTC clock selection is HSE */ + else if (srcclk == RCC_RTCCLKSOURCE_HSE_DIVX) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) + { + /* Get the current HSE clock divider */ + switch (__HAL_RCC_GET_RTC_HSE_PRESCALER()) + { + case RCC_RTC_HSE_DIV_16: /* HSE DIV16 has been selected */ + { + frequency = HSE_VALUE / 16U; + break; + } + case RCC_RTC_HSE_DIV_8: /* HSE DIV8 has been selected */ + { + frequency = HSE_VALUE / 8U; + break; + } + case RCC_RTC_HSE_DIV_4: /* HSE DIV4 has been selected */ + { + frequency = HSE_VALUE / 4U; + break; + } + default: /* HSE DIV2 has been selected */ + { + frequency = HSE_VALUE / 2U; + break; + } + } + } + } + else + { + /* No clock source, frequency default init at 0 */ + } + break; + } + + default: + break; + } + + return(frequency); +} + +#if defined(RCC_LSECSS_SUPPORT) +/** + * @brief Enables the LSE Clock Security System. + * @note If a failure is detected on the external 32 kHz oscillator, the LSE clock is no longer supplied + * to the RTC but no hardware action is made to the registers. + * In Standby mode a wakeup is generated. In other modes an interrupt can be sent to wakeup + * the software (see Section 5.3.4: Clock interrupt register (RCC_CIR) on page 104). + * The software MUST then disable the LSECSSON bit, stop the defective 32 kHz oscillator + * (disabling LSEON), and can change the RTC clock source (no clock or LSI or HSE, with + * RTCSEL), or take any required action to secure the application. + * @note LSE CSS available only for high density and medium+ devices + * @retval None + */ +void HAL_RCCEx_EnableLSECSS(void) +{ + *(__IO uint32_t *) CSR_LSECSSON_BB = (uint32_t)ENABLE; +} + +/** + * @brief Disables the LSE Clock Security System. + * @note Once enabled this bit cannot be disabled, except after an LSE failure detection + * (LSECSSD=1). In that case the software MUST disable the LSECSSON bit. + * Reset by power on reset and RTC software reset (RTCRST bit). + * @note LSE CSS available only for high density and medium+ devices + * @retval None + */ +void HAL_RCCEx_DisableLSECSS(void) +{ + /* Disable LSE CSS */ + *(__IO uint32_t *) CSR_LSECSSON_BB = (uint32_t)DISABLE; + + /* Disable LSE CSS IT */ + __HAL_RCC_DISABLE_IT(RCC_IT_LSECSS); +} + +/** + * @brief Enable the LSE Clock Security System IT & corresponding EXTI line. + * @note LSE Clock Security System IT is mapped on RTC EXTI line 19 + * @retval None + */ +void HAL_RCCEx_EnableLSECSS_IT(void) +{ + /* Enable LSE CSS */ + *(__IO uint32_t *) CSR_LSECSSON_BB = (uint32_t)ENABLE; + + /* Enable LSE CSS IT */ + __HAL_RCC_ENABLE_IT(RCC_IT_LSECSS); + + /* Enable IT on EXTI Line 19 */ + __HAL_RCC_LSECSS_EXTI_ENABLE_IT(); + __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE(); +} + +/** + * @brief Handle the RCC LSE Clock Security System interrupt request. + * @retval None + */ +void HAL_RCCEx_LSECSS_IRQHandler(void) +{ + /* Check RCC LSE CSSF flag */ + if(__HAL_RCC_GET_IT(RCC_IT_LSECSS)) + { + /* RCC LSE Clock Security System interrupt user callback */ + HAL_RCCEx_LSECSS_Callback(); + + /* Clear RCC LSE CSS pending bit */ + __HAL_RCC_CLEAR_IT(RCC_IT_LSECSS); + } +} + +/** + * @brief RCCEx LSE Clock Security System interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_LSECSS_Callback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_LSECSS_Callback should be implemented in the user file + */ +} +#endif /* RCC_LSECSS_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c new file mode 100644 index 0000000..13af2fb --- /dev/null +++ b/TP4_INIT_TFT/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_spi.c @@ -0,0 +1,3962 @@ +/** + ****************************************************************************** + * @file stm32l1xx_hal_spi.c + * @author MCD Application Team + * @brief SPI HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Serial Peripheral Interface (SPI) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral Control functions + * + Peripheral State functions + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The SPI HAL driver can be used as follows: + + (#) Declare a SPI_HandleTypeDef handle structure, for example: + SPI_HandleTypeDef hspi; + + (#)Initialize the SPI low level resources by implementing the HAL_SPI_MspInit() API: + (##) Enable the SPIx interface clock + (##) SPI pins configuration + (+++) Enable the clock for the SPI GPIOs + (+++) Configure these SPI pins as alternate function push-pull + (##) NVIC configuration if you need to use interrupt process + (+++) Configure the SPIx interrupt priority + (+++) Enable the NVIC SPI IRQ handle + (##) DMA Configuration if you need to use DMA process + (+++) Declare a DMA_HandleTypeDef handle structure for the transmit or receive Stream/Channel + (+++) Enable the DMAx clock + (+++) Configure the DMA handle parameters + (+++) Configure the DMA Tx or Rx Stream/Channel + (+++) Associate the initialized hdma_tx(or _rx) handle to the hspi DMA Tx or Rx handle + (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on the DMA Tx + or Rx Stream/Channel + + (#) Program the Mode, BidirectionalMode , Data size, Baudrate Prescaler, NSS + management, Clock polarity and phase, FirstBit and CRC configuration in the hspi Init structure. + + (#) Initialize the SPI registers by calling the HAL_SPI_Init() API: + (++) This API configures also the low level Hardware GPIO, CLOCK, CORTEX...etc) + by calling the customized HAL_SPI_MspInit() API. + [..] + Circular mode restriction: + (#) The DMA circular mode cannot be used when the SPI is configured in these modes: + (##) Master 2Lines RxOnly + (##) Master 1Line Rx + (#) The CRC feature is not managed when the DMA circular mode is enabled + (#) When the SPI DMA Pause/Stop features are used, we must use the following APIs + the HAL_SPI_DMAPause()/ HAL_SPI_DMAStop() only under the SPI callbacks + [..] + Master Receive mode restriction: + (#) In Master unidirectional receive-only mode (MSTR =1, BIDIMODE=0, RXONLY=1) or + bidirectional receive mode (MSTR=1, BIDIMODE=1, BIDIOE=0), to ensure that the SPI + does not initiate a new transfer the following procedure has to be respected: + (##) HAL_SPI_DeInit() + (##) HAL_SPI_Init() + [..] + Callback registration: + + (#) The compilation flag USE_HAL_SPI_REGISTER_CALLBACKS when set to 1U + allows the user to configure dynamically the driver callbacks. + Use Functions HAL_SPI_RegisterCallback() to register an interrupt callback. + + Function HAL_SPI_RegisterCallback() allows to register following callbacks: + (++) TxCpltCallback : SPI Tx Completed callback + (++) RxCpltCallback : SPI Rx Completed callback + (++) TxRxCpltCallback : SPI TxRx Completed callback + (++) TxHalfCpltCallback : SPI Tx Half Completed callback + (++) RxHalfCpltCallback : SPI Rx Half Completed callback + (++) TxRxHalfCpltCallback : SPI TxRx Half Completed callback + (++) ErrorCallback : SPI Error callback + (++) AbortCpltCallback : SPI Abort callback + (++) MspInitCallback : SPI Msp Init callback + (++) MspDeInitCallback : SPI Msp DeInit callback + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + + + (#) Use function HAL_SPI_UnRegisterCallback to reset a callback to the default + weak function. + HAL_SPI_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (++) TxCpltCallback : SPI Tx Completed callback + (++) RxCpltCallback : SPI Rx Completed callback + (++) TxRxCpltCallback : SPI TxRx Completed callback + (++) TxHalfCpltCallback : SPI Tx Half Completed callback + (++) RxHalfCpltCallback : SPI Rx Half Completed callback + (++) TxRxHalfCpltCallback : SPI TxRx Half Completed callback + (++) ErrorCallback : SPI Error callback + (++) AbortCpltCallback : SPI Abort callback + (++) MspInitCallback : SPI Msp Init callback + (++) MspDeInitCallback : SPI Msp DeInit callback + + [..] + By default, after the HAL_SPI_Init() and when the state is HAL_SPI_STATE_RESET + all callbacks are set to the corresponding weak functions: + examples HAL_SPI_MasterTxCpltCallback(), HAL_SPI_MasterRxCpltCallback(). + Exception done for MspInit and MspDeInit functions that are + reset to the legacy weak functions in the HAL_SPI_Init()/ HAL_SPI_DeInit() only when + these callbacks are null (not registered beforehand). + If MspInit or MspDeInit are not null, the HAL_SPI_Init()/ HAL_SPI_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + + [..] + Callbacks can be registered/unregistered in HAL_SPI_STATE_READY state only. + Exception done MspInit/MspDeInit functions that can be registered/unregistered + in HAL_SPI_STATE_READY or HAL_SPI_STATE_RESET state, + thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + Then, the user first registers the MspInit/MspDeInit user callbacks + using HAL_SPI_RegisterCallback() before calling HAL_SPI_DeInit() + or HAL_SPI_Init() function. + + [..] + When the compilation define USE_HAL_PPP_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registering feature is not available + and weak (surcharged) callbacks are used. + + [..] + Using the HAL it is not possible to reach all supported SPI frequency with the different SPI Modes, + the following table resume the max SPI frequency reached with data size 8bits/16bits, + according to frequency of the APBx Peripheral Clock (fPCLK) used by the SPI instance. + + @endverbatim + + Additional table : + + DataSize = SPI_DATASIZE_8BIT: + +----------------------------------------------------------------------------------------------+ + | | | 2Lines Fullduplex | 2Lines RxOnly | 1Line | + | Process | Transfer mode |---------------------|----------------------|----------------------| + | | | Master | Slave | Master | Slave | Master | Slave | + |==============================================================================================| + | T | Polling | Fpclk/2 | Fpclk/2 | NA | NA | NA | NA | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | / | Interrupt | Fpclk/4 | Fpclk/8 | NA | NA | NA | NA | + | R |----------------|----------|----------|-----------|----------|-----------|----------| + | X | DMA | Fpclk/2 | Fpclk/2 | NA | NA | NA | NA | + |=========|================|==========|==========|===========|==========|===========|==========| + | | Polling | Fpclk/2 | Fpclk/2 | Fpclk/64 | Fpclk/2 | Fpclk/64 | Fpclk/2 | + | |----------------|----------|----------|-----------|----------|-----------|----------| + | R | Interrupt | Fpclk/8 | Fpclk/8 | Fpclk/64 | Fpclk/2 | Fpclk/64 | Fpclk/2 | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | | DMA | Fpclk/2 | Fpclk/2 | Fpclk/64 | Fpclk/2 | Fpclk/128 | Fpclk/2 | + |=========|================|==========|==========|===========|==========|===========|==========| + | | Polling | Fpclk/2 | Fpclk/4 | NA | NA | Fpclk/2 | Fpclk/64 | + | |----------------|----------|----------|-----------|----------|-----------|----------| + | T | Interrupt | Fpclk/2 | Fpclk/4 | NA | NA | Fpclk/2 | Fpclk/64 | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | | DMA | Fpclk/2 | Fpclk/2 | NA | NA | Fpclk/2 | Fpclk/128| + +----------------------------------------------------------------------------------------------+ + + DataSize = SPI_DATASIZE_16BIT: + +----------------------------------------------------------------------------------------------+ + | | | 2Lines Fullduplex | 2Lines RxOnly | 1Line | + | Process | Transfer mode |---------------------|----------------------|----------------------| + | | | Master | Slave | Master | Slave | Master | Slave | + |==============================================================================================| + | T | Polling | Fpclk/2 | Fpclk/2 | NA | NA | NA | NA | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | / | Interrupt | Fpclk/4 | Fpclk/4 | NA | NA | NA | NA | + | R |----------------|----------|----------|-----------|----------|-----------|----------| + | X | DMA | Fpclk/2 | Fpclk/2 | NA | NA | NA | NA | + |=========|================|==========|==========|===========|==========|===========|==========| + | | Polling | Fpclk/2 | Fpclk/2 | Fpclk/64 | Fpclk/2 | Fpclk/32 | Fpclk/2 | + | |----------------|----------|----------|-----------|----------|-----------|----------| + | R | Interrupt | Fpclk/4 | Fpclk/4 | Fpclk/64 | Fpclk/2 | Fpclk/64 | Fpclk/2 | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | | DMA | Fpclk/2 | Fpclk/2 | Fpclk/64 | Fpclk/2 | Fpclk/128 | Fpclk/2 | + |=========|================|==========|==========|===========|==========|===========|==========| + | | Polling | Fpclk/2 | Fpclk/2 | NA | NA | Fpclk/2 | Fpclk/32 | + | |----------------|----------|----------|-----------|----------|-----------|----------| + | T | Interrupt | Fpclk/2 | Fpclk/2 | NA | NA | Fpclk/2 | Fpclk/64 | + | X |----------------|----------|----------|-----------|----------|-----------|----------| + | | DMA | Fpclk/2 | Fpclk/2 | NA | NA | Fpclk/2 | Fpclk/128| + +----------------------------------------------------------------------------------------------+ + @note The max SPI frequency depend on SPI data size (8bits, 16bits), + SPI mode(2 Lines fullduplex, 2 lines RxOnly, 1 line TX/RX) and Process mode (Polling, IT, DMA). + @note + (#) TX/RX processes are HAL_SPI_TransmitReceive(), HAL_SPI_TransmitReceive_IT() and + HAL_SPI_TransmitReceive_DMA() + (#) RX processes are HAL_SPI_Receive(), HAL_SPI_Receive_IT() and HAL_SPI_Receive_DMA() + (#) TX processes are HAL_SPI_Transmit(), HAL_SPI_Transmit_IT() and HAL_SPI_Transmit_DMA() + + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l1xx_hal.h" + +/** @addtogroup STM32L1xx_HAL_Driver + * @{ + */ + +/** @defgroup SPI SPI + * @brief SPI HAL module driver + * @{ + */ +#ifdef HAL_SPI_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines -----------------------------------------------------------*/ +/** @defgroup SPI_Private_Constants SPI Private Constants + * @{ + */ +#define SPI_DEFAULT_TIMEOUT 100U +#define SPI_BSY_FLAG_WORKAROUND_TIMEOUT 1000U /*!< Timeout 1000 us */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup SPI_Private_Functions SPI Private Functions + * @{ + */ +static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMAReceiveCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMATransmitReceiveCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMAHalfTransmitCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMAHalfReceiveCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMAHalfTransmitReceiveCplt(DMA_HandleTypeDef *hdma); +static void SPI_DMAError(DMA_HandleTypeDef *hdma); +static void SPI_DMAAbortOnError(DMA_HandleTypeDef *hdma); +static void SPI_DMATxAbortCallback(DMA_HandleTypeDef *hdma); +static void SPI_DMARxAbortCallback(DMA_HandleTypeDef *hdma); +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart); +static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi); +#if (USE_SPI_CRC != 0U) +static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi); +static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi); +static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi); +#endif /* USE_SPI_CRC */ +static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi); +static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi); +static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi); +static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi); +static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi); +static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart); +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SPI_Exported_Functions SPI Exported Functions + * @{ + */ + +/** @defgroup SPI_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This subsection provides a set of functions allowing to initialize and + de-initialize the SPIx peripheral: + + (+) User must implement HAL_SPI_MspInit() function in which he configures + all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). + + (+) Call the function HAL_SPI_Init() to configure the selected device with + the selected configuration: + (++) Mode + (++) Direction + (++) Data Size + (++) Clock Polarity and Phase + (++) NSS Management + (++) BaudRate Prescaler + (++) FirstBit + (++) TIMode + (++) CRC Calculation + (++) CRC Polynomial if CRC enabled + + (+) Call the function HAL_SPI_DeInit() to restore the default configuration + of the selected SPIx peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the SPI according to the specified parameters + * in the SPI_InitTypeDef and initialize the associated handle. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) +{ + /* Check the SPI handle allocation */ + if (hspi == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); + assert_param(IS_SPI_MODE(hspi->Init.Mode)); + assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); + assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); + assert_param(IS_SPI_NSS(hspi->Init.NSS)); + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); + /* TI mode is not supported on all devices in stm32l1xx series. + TIMode parameter is mandatory equal to SPI_TIMODE_DISABLE if TI mode is not supported */ + assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); + if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) + { + assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); + assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); + + if (hspi->Init.Mode == SPI_MODE_MASTER) + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + } + else + { + /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ + hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + } + } + else + { + assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); + + /* Force polarity and phase to TI protocaol requirements */ + hspi->Init.CLKPolarity = SPI_POLARITY_LOW; + hspi->Init.CLKPhase = SPI_PHASE_1EDGE; + } +#if (USE_SPI_CRC != 0U) + assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); + } +#else + hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; +#endif /* USE_SPI_CRC */ + + if (hspi->State == HAL_SPI_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hspi->Lock = HAL_UNLOCKED; + +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + /* Init the SPI Callback settings */ + hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ + hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ + hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ + hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ + hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ + hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ + hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ + hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + + if (hspi->MspInitCallback == NULL) + { + hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ + } + + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + hspi->MspInitCallback(hspi); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_SPI_MspInit(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + hspi->State = HAL_SPI_STATE_BUSY; + + /* Disable the selected SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + + /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ + /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, + Communication speed, First bit and CRC calculation state */ + WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | + (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | + (hspi->Init.DataSize & SPI_CR1_DFF) | + (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | + (hspi->Init.CLKPhase & SPI_CR1_CPHA) | + (hspi->Init.NSS & SPI_CR1_SSM) | + (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | + (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | + (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); + +#if defined(SPI_CR2_FRF) + /* Configure : NSS management, TI Mode */ + WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); +#else + /* Configure : NSS management */ + WRITE_REG(hspi->Instance->CR2, ((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE)); +#endif /* SPI_CR2_FRF */ + +#if (USE_SPI_CRC != 0U) + /*---------------------------- SPIx CRCPOLY Configuration ------------------*/ + /* Configure : CRC Polynomial */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); + } +#endif /* USE_SPI_CRC */ + +#if defined(SPI_I2SCFGR_I2SMOD) + /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ + CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); +#endif /* SPI_I2SCFGR_I2SMOD */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->State = HAL_SPI_STATE_READY; + + return HAL_OK; +} + +/** + * @brief De-Initialize the SPI peripheral. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) +{ + /* Check the SPI handle allocation */ + if (hspi == NULL) + { + return HAL_ERROR; + } + + /* Check SPI Instance parameter */ + assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); + + hspi->State = HAL_SPI_STATE_BUSY; + + /* Disable the SPI Peripheral Clock */ + __HAL_SPI_DISABLE(hspi); + +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + if (hspi->MspDeInitCallback == NULL) + { + hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware: GPIO, CLOCK, NVIC... */ + hspi->MspDeInitCallback(hspi); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC... */ + HAL_SPI_MspDeInit(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->State = HAL_SPI_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(hspi); + + return HAL_OK; +} + +/** + * @brief Initialize the SPI MSP. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_MspInit should be implemented in the user file + */ +} + +/** + * @brief De-Initialize the SPI MSP. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_MspDeInit should be implemented in the user file + */ +} + +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) +/** + * @brief Register a User SPI Callback + * To be used instead of the weak predefined callback + * @param hspi Pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI. + * @param CallbackID ID of the callback to be registered + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID, + pSPI_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(hspi); + + if (HAL_SPI_STATE_READY == hspi->State) + { + switch (CallbackID) + { + case HAL_SPI_TX_COMPLETE_CB_ID : + hspi->TxCpltCallback = pCallback; + break; + + case HAL_SPI_RX_COMPLETE_CB_ID : + hspi->RxCpltCallback = pCallback; + break; + + case HAL_SPI_TX_RX_COMPLETE_CB_ID : + hspi->TxRxCpltCallback = pCallback; + break; + + case HAL_SPI_TX_HALF_COMPLETE_CB_ID : + hspi->TxHalfCpltCallback = pCallback; + break; + + case HAL_SPI_RX_HALF_COMPLETE_CB_ID : + hspi->RxHalfCpltCallback = pCallback; + break; + + case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID : + hspi->TxRxHalfCpltCallback = pCallback; + break; + + case HAL_SPI_ERROR_CB_ID : + hspi->ErrorCallback = pCallback; + break; + + case HAL_SPI_ABORT_CB_ID : + hspi->AbortCpltCallback = pCallback; + break; + + case HAL_SPI_MSPINIT_CB_ID : + hspi->MspInitCallback = pCallback; + break; + + case HAL_SPI_MSPDEINIT_CB_ID : + hspi->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_SPI_STATE_RESET == hspi->State) + { + switch (CallbackID) + { + case HAL_SPI_MSPINIT_CB_ID : + hspi->MspInitCallback = pCallback; + break; + + case HAL_SPI_MSPDEINIT_CB_ID : + hspi->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hspi); + return status; +} + +/** + * @brief Unregister an SPI Callback + * SPI callback is redirected to the weak predefined callback + * @param hspi Pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI. + * @param CallbackID ID of the callback to be unregistered + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hspi); + + if (HAL_SPI_STATE_READY == hspi->State) + { + switch (CallbackID) + { + case HAL_SPI_TX_COMPLETE_CB_ID : + hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ + break; + + case HAL_SPI_RX_COMPLETE_CB_ID : + hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ + break; + + case HAL_SPI_TX_RX_COMPLETE_CB_ID : + hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ + break; + + case HAL_SPI_TX_HALF_COMPLETE_CB_ID : + hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ + break; + + case HAL_SPI_RX_HALF_COMPLETE_CB_ID : + hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ + break; + + case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID : + hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ + break; + + case HAL_SPI_ERROR_CB_ID : + hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ + break; + + case HAL_SPI_ABORT_CB_ID : + hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + break; + + case HAL_SPI_MSPINIT_CB_ID : + hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_SPI_MSPDEINIT_CB_ID : + hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_SPI_STATE_RESET == hspi->State) + { + switch (CallbackID) + { + case HAL_SPI_MSPINIT_CB_ID : + hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_SPI_MSPDEINIT_CB_ID : + hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hspi); + return status; +} +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @defgroup SPI_Exported_Functions_Group2 IO operation functions + * @brief Data transfers functions + * +@verbatim + ============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the SPI + data transfers. + + [..] The SPI supports master and slave mode : + + (#) There are two modes of transfer: + (++) Blocking mode: The communication is performed in polling mode. + The HAL status of all data processing is returned by the same function + after finishing transfer. + (++) No-Blocking mode: The communication is performed using Interrupts + or DMA, These APIs return the HAL status. + The end of the data processing will be indicated through the + dedicated SPI IRQ when using Interrupt mode or the DMA IRQ when + using DMA mode. + The HAL_SPI_TxCpltCallback(), HAL_SPI_RxCpltCallback() and HAL_SPI_TxRxCpltCallback() user callbacks + will be executed respectively at the end of the transmit or Receive process + The HAL_SPI_ErrorCallback()user callback will be executed when a communication error is detected + + (#) APIs provided for these 2 transfer modes (Blocking mode or Non blocking mode using either Interrupt or DMA) + exist for 1Line (simplex) and 2Lines (full duplex) modes. + +@endverbatim + * @{ + */ + +/** + * @brief Transmit an amount of data in blocking mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be sent + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + uint16_t initial_TxXferCount; + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + initial_TxXferCount = Size; + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pTxBuffPtr = (const uint8_t *)pData; + hspi->TxXferSize = Size; + hspi->TxXferCount = Size; + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + hspi->RxXferSize = 0U; + hspi->RxXferCount = 0U; + hspi->TxISR = NULL; + hspi->RxISR = NULL; + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_TX(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint8_t); + hspi->TxXferCount--; + } + while (hspi->TxXferCount > 0U) + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint8_t); + hspi->TxXferCount--; + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + } +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + + hspi->State = HAL_SPI_STATE_READY; + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + return HAL_ERROR; + } + else + { + return HAL_OK; + } +} + +/** + * @brief Receive an amount of data in blocking mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be received + * @param Timeout Timeout duration in ms + * @retval HAL status + * @note In master mode, if the direction is set to SPI_DIRECTION_2LINES + * the receive buffer is written to data register (DR) to generate + * clock pulses and receive data + */ +HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ +#if (USE_SPI_CRC != 0U) + __IO uint32_t tmpreg = 0U; +#endif /* USE_SPI_CRC */ + uint32_t tickstart; + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) + { + hspi->State = HAL_SPI_STATE_BUSY_RX; + /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ + return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); + } + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_RX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pRxBuffPtr = (uint8_t *)pData; + hspi->RxXferSize = Size; + hspi->RxXferCount = Size; + + /*Init field not used in handle to zero */ + hspi->pTxBuffPtr = (uint8_t *)NULL; + hspi->TxXferSize = 0U; + hspi->TxXferCount = 0U; + hspi->RxISR = NULL; + hspi->TxISR = NULL; + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + /* this is done to handle the CRCNEXT before the latest data */ + hspi->RxXferCount--; + } +#endif /* USE_SPI_CRC */ + + /* Configure communication direction: 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_RX(hspi); + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Receive data in 8 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_8BIT) + { + /* Transfer loop */ + while (hspi->RxXferCount > 0U) + { + /* Check the RXNE flag */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) + { + /* read the received data */ + (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; + hspi->pRxBuffPtr += sizeof(uint8_t); + hspi->RxXferCount--; + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + } + else + { + /* Transfer loop */ + while (hspi->RxXferCount > 0U) + { + /* Check the RXNE flag */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) + { + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; + hspi->pRxBuffPtr += sizeof(uint16_t); + hspi->RxXferCount--; + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + } + +#if (USE_SPI_CRC != 0U) + /* Handle the CRC Transmission */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* freeze the CRC before the latest data */ + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + + /* Read the latest data */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) + { + /* the latest data has not been received */ + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + + /* Receive last data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + { + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; + } + /* Receive last data in 8 Bit mode */ + else + { + (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; + } + + /* Wait the CRC data */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + + /* Read CRC to Flush DR and RXNE flag */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + } + +#if (USE_SPI_CRC != 0U) + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + } +#endif /* USE_SPI_CRC */ + + hspi->State = HAL_SPI_STATE_READY; + /* Unlock the process */ + __HAL_UNLOCK(hspi); + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + return HAL_ERROR; + } + else + { + return HAL_OK; + } +} + +/** + * @brief Transmit and Receive an amount of data in blocking mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pTxData pointer to transmission data buffer (u8 or u16 data elements) + * @param pRxData pointer to reception data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be sent and received + * @param Timeout Timeout duration in ms + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size, uint32_t Timeout) +{ + uint16_t initial_TxXferCount; + uint32_t tmp_mode; + HAL_SPI_StateTypeDef tmp_state; + uint32_t tickstart; +#if (USE_SPI_CRC != 0U) + __IO uint32_t tmpreg = 0U; +#endif /* USE_SPI_CRC */ + + /* Variable used to alternate Rx and Tx during transfer */ + uint32_t txallowed = 1U; + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* Init temporary variables */ + tmp_state = hspi->State; + tmp_mode = hspi->Init.Mode; + initial_TxXferCount = Size; + + if (!((tmp_state == HAL_SPI_STATE_READY) || \ + ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && + (tmp_state == HAL_SPI_STATE_BUSY_RX)))) + { + return HAL_BUSY; + } + + if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Don't overwrite in case of HAL_SPI_STATE_BUSY_RX */ + if (hspi->State != HAL_SPI_STATE_BUSY_RX) + { + hspi->State = HAL_SPI_STATE_BUSY_TX_RX; + } + + /* Set the transaction information */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pRxBuffPtr = (uint8_t *)pRxData; + hspi->RxXferCount = Size; + hspi->RxXferSize = Size; + hspi->pTxBuffPtr = (const uint8_t *)pTxData; + hspi->TxXferCount = Size; + hspi->TxXferSize = Size; + + /*Init field not used in handle to zero */ + hspi->RxISR = NULL; + hspi->TxISR = NULL; + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Transmit and Receive data in 16 Bit mode */ + if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + } + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + { + /* Check TXE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) + { + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + /* Next Data is a reception (Rx). Tx not allowed */ + txallowed = 0U; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + } + + /* Check RXNE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) + { + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; + hspi->pRxBuffPtr += sizeof(uint16_t); + hspi->RxXferCount--; + /* Next Data is a Transmission (Tx). Tx is allowed */ + txallowed = 1U; + } + if (((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + /* Transmit and Receive data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + { + *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint8_t); + hspi->TxXferCount--; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + } + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + { + /* Check TXE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) + { + *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr++; + hspi->TxXferCount--; + /* Next Data is a reception (Rx). Tx not allowed */ + txallowed = 0U; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + } + + /* Wait until RXNE flag is reset */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) + { + (*(uint8_t *)hspi->pRxBuffPtr) = hspi->Instance->DR; + hspi->pRxBuffPtr++; + hspi->RxXferCount--; + /* Next Data is a Transmission (Tx). Tx is allowed */ + txallowed = 1U; + } + if ((((HAL_GetTick() - tickstart) >= Timeout) && ((Timeout != HAL_MAX_DELAY))) || (Timeout == 0U)) + { + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + } + } + +#if (USE_SPI_CRC != 0U) + /* Read CRC from DR to close CRC calculation process */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) + { + /* Error on the CRC reception */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + hspi->State = HAL_SPI_STATE_READY; + __HAL_UNLOCK(hspi); + return HAL_TIMEOUT; + } + /* Read CRC */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + } + + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + /* Clear CRC Flag */ + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + + + hspi->State = HAL_SPI_STATE_READY; + /* Unlock the process */ + __HAL_UNLOCK(hspi); + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + return HAL_ERROR; + } + else + { + return HAL_OK; + } +} + +/** + * @brief Transmit an amount of data in non-blocking mode with Interrupt. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) +{ + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pTxBuffPtr = (const uint8_t *)pData; + hspi->TxXferSize = Size; + hspi->TxXferCount = Size; + + /* Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + hspi->RxXferSize = 0U; + hspi->RxXferCount = 0U; + hspi->RxISR = NULL; + + /* Set the function for IT treatment */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + { + hspi->TxISR = SPI_TxISR_16BIT; + } + else + { + hspi->TxISR = SPI_TxISR_8BIT; + } + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_TX(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + /* Enable TXE and ERR interrupt */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); + + return HAL_OK; +} + +/** + * @brief Receive an amount of data in non-blocking mode with Interrupt. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) +{ + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) + { + hspi->State = HAL_SPI_STATE_BUSY_RX; + /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ + return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); + } + + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_RX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pRxBuffPtr = (uint8_t *)pData; + hspi->RxXferSize = Size; + hspi->RxXferCount = Size; + + /* Init field not used in handle to zero */ + hspi->pTxBuffPtr = (uint8_t *)NULL; + hspi->TxXferSize = 0U; + hspi->TxXferCount = 0U; + hspi->TxISR = NULL; + + /* Set the function for IT treatment */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + { + hspi->RxISR = SPI_RxISR_16BIT; + } + else + { + hspi->RxISR = SPI_RxISR_8BIT; + } + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_RX(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Note : The SPI must be enabled after unlocking current process + to avoid the risk of SPI interrupt handle execution before current + process unlock */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + /* Enable RXNE and ERR interrupt */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); + + return HAL_OK; +} + +/** + * @brief Transmit and Receive an amount of data in non-blocking mode with Interrupt. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pTxData pointer to transmission data buffer (u8 or u16 data elements) + * @param pRxData pointer to reception data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be sent and received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size) +{ + uint32_t tmp_mode; + HAL_SPI_StateTypeDef tmp_state; + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); + + /* Init temporary variables */ + tmp_state = hspi->State; + tmp_mode = hspi->Init.Mode; + + if (!((tmp_state == HAL_SPI_STATE_READY) || \ + ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && + (tmp_state == HAL_SPI_STATE_BUSY_RX)))) + { + return HAL_BUSY; + } + + if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hspi); + + /* Don't overwrite in case of HAL_SPI_STATE_BUSY_RX */ + if (hspi->State != HAL_SPI_STATE_BUSY_RX) + { + hspi->State = HAL_SPI_STATE_BUSY_TX_RX; + } + + /* Set the transaction information */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pTxBuffPtr = (const uint8_t *)pTxData; + hspi->TxXferSize = Size; + hspi->TxXferCount = Size; + hspi->pRxBuffPtr = (uint8_t *)pRxData; + hspi->RxXferSize = Size; + hspi->RxXferCount = Size; + + /* Set the function for IT treatment */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + { + hspi->RxISR = SPI_2linesRxISR_16BIT; + hspi->TxISR = SPI_2linesTxISR_16BIT; + } + else + { + hspi->RxISR = SPI_2linesRxISR_8BIT; + hspi->TxISR = SPI_2linesTxISR_8BIT; + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + /* Enable TXE, RXNE and ERR interrupt */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + + return HAL_OK; +} + +/** + * @brief Transmit an amount of data in non-blocking mode with DMA. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @param Size amount of data elements (u8 or u16) to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) +{ + + /* Check tx dma handle */ + assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pTxBuffPtr = (const uint8_t *)pData; + hspi->TxXferSize = Size; + hspi->TxXferCount = Size; + + /* Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + hspi->TxISR = NULL; + hspi->RxISR = NULL; + hspi->RxXferSize = 0U; + hspi->RxXferCount = 0U; + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_TX(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Set the SPI TxDMA Half transfer complete callback */ + hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; + + /* Set the SPI TxDMA transfer complete callback */ + hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; + + /* Set the DMA error callback */ + hspi->hdmatx->XferErrorCallback = SPI_DMAError; + + /* Set the DMA AbortCpltCallback */ + hspi->hdmatx->XferAbortCallback = NULL; + + /* Enable the Tx DMA Stream/Channel */ + if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->DR, + hspi->TxXferCount)) + { + /* Update SPI error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + /* Enable the SPI Error Interrupt Bit */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); + + /* Enable Tx DMA Request */ + SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); + + return HAL_OK; +} + +/** + * @brief Receive an amount of data in non-blocking mode with DMA. + * @note In case of MASTER mode and SPI_DIRECTION_2LINES direction, hdmatx shall be defined. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pData pointer to data buffer (u8 or u16 data elements) + * @note When the CRC feature is enabled the pData Length must be Size + 1. + * @param Size amount of data elements (u8 or u16) to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) +{ + /* Check rx dma handle */ + assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); + + if (hspi->State != HAL_SPI_STATE_READY) + { + return HAL_BUSY; + } + + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) + { + hspi->State = HAL_SPI_STATE_BUSY_RX; + + /* Check tx dma handle */ + assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); + + /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ + return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); + } + + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_RX; + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pRxBuffPtr = (uint8_t *)pData; + hspi->RxXferSize = Size; + hspi->RxXferCount = Size; + + /*Init field not used in handle to zero */ + hspi->RxISR = NULL; + hspi->TxISR = NULL; + hspi->TxXferSize = 0U; + hspi->TxXferCount = 0U; + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + SPI_1LINE_RX(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Set the SPI RxDMA Half transfer complete callback */ + hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; + + /* Set the SPI Rx DMA transfer complete callback */ + hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; + + /* Set the DMA error callback */ + hspi->hdmarx->XferErrorCallback = SPI_DMAError; + + /* Set the DMA AbortCpltCallback */ + hspi->hdmarx->XferAbortCallback = NULL; + + /* Enable the Rx DMA Stream/Channel */ + if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuffPtr, + hspi->RxXferCount)) + { + /* Update SPI error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + /* Enable the SPI Error Interrupt Bit */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); + + /* Enable Rx DMA Request */ + SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); + + return HAL_OK; +} + +/** + * @brief Transmit and Receive an amount of data in non-blocking mode with DMA. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param pTxData pointer to transmission data buffer (u8 or u16 data elements) + * @param pRxData pointer to reception data buffer (u8 or u16 data elements) + * @note When the CRC feature is enabled the pRxData Length must be Size + 1 + * @param Size amount of data elements (u8 or u16) to be sent and received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, + uint16_t Size) +{ + uint32_t tmp_mode; + HAL_SPI_StateTypeDef tmp_state; + + /* Check rx & tx dma handles */ + assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); + assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); + + /* Init temporary variables */ + tmp_state = hspi->State; + tmp_mode = hspi->Init.Mode; + + if (!((tmp_state == HAL_SPI_STATE_READY) || + ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && + (tmp_state == HAL_SPI_STATE_BUSY_RX)))) + { + return HAL_BUSY; + } + + if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hspi); + + /* Don't overwrite in case of HAL_SPI_STATE_BUSY_RX */ + if (hspi->State != HAL_SPI_STATE_BUSY_RX) + { + hspi->State = HAL_SPI_STATE_BUSY_TX_RX; + } + + /* Set the transaction information */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + hspi->pTxBuffPtr = (const uint8_t *)pTxData; + hspi->TxXferSize = Size; + hspi->TxXferCount = Size; + hspi->pRxBuffPtr = (uint8_t *)pRxData; + hspi->RxXferSize = Size; + hspi->RxXferCount = Size; + + /* Init field not used in handle to zero */ + hspi->RxISR = NULL; + hspi->TxISR = NULL; + +#if (USE_SPI_CRC != 0U) + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if we are in Rx only or in Rx/Tx Mode and configure the DMA transfer complete callback */ + if (hspi->State == HAL_SPI_STATE_BUSY_RX) + { + /* Set the SPI Rx DMA Half transfer complete callback */ + hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; + hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; + } + else + { + /* Set the SPI Tx/Rx DMA Half transfer complete callback */ + hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; + hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; + } + + /* Set the DMA error callback */ + hspi->hdmarx->XferErrorCallback = SPI_DMAError; + + /* Set the DMA AbortCpltCallback */ + hspi->hdmarx->XferAbortCallback = NULL; + + /* Enable the Rx DMA Stream/Channel */ + if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuffPtr, + hspi->RxXferCount)) + { + /* Update SPI error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } + + /* Enable Rx DMA Request */ + SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); + + /* Set the SPI Tx DMA transfer complete callback as NULL because the communication closing + is performed in DMA reception complete callback */ + hspi->hdmatx->XferHalfCpltCallback = NULL; + hspi->hdmatx->XferCpltCallback = NULL; + hspi->hdmatx->XferErrorCallback = NULL; + hspi->hdmatx->XferAbortCallback = NULL; + + /* Enable the Tx DMA Stream/Channel */ + if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->DR, + hspi->TxXferCount)) + { + /* Update SPI error code */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + return HAL_ERROR; + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + /* Enable the SPI Error Interrupt Bit */ + __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); + + /* Enable Tx DMA Request */ + SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); + + return HAL_OK; +} + +/** + * @brief Abort ongoing transfer (blocking mode). + * @param hspi SPI handle. + * @note This procedure could be used for aborting any ongoing transfer (Tx and Rx), + * started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable SPI Interrupts (depending of transfer direction) + * - Disable the DMA transfer in the peripheral register (if enabled) + * - Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode) + * - Set handle State to READY + * @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) +{ + HAL_StatusTypeDef errorcode; + __IO uint32_t count; + __IO uint32_t resetcount; + + /* Initialized local variable */ + errorcode = HAL_OK; + resetcount = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + count = resetcount; + + /* Clear ERRIE interrupt to avoid error interrupts generation during Abort procedure */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); + + /* Disable TXEIE, RXNEIE and ERRIE(mode fault event, overrun error, TI frame error) interrupts */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) + { + hspi->TxISR = SPI_AbortTx_ISR; + /* Wait HAL_SPI_STATE_ABORT state */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while (hspi->State != HAL_SPI_STATE_ABORT); + /* Reset Timeout Counter */ + count = resetcount; + } + + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) + { + hspi->RxISR = SPI_AbortRx_ISR; + /* Wait HAL_SPI_STATE_ABORT state */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while (hspi->State != HAL_SPI_STATE_ABORT); + /* Reset Timeout Counter */ + count = resetcount; + } + + /* Disable the SPI DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) + { + /* Abort the SPI DMA Tx Stream/Channel : use blocking DMA Abort API (no callback) */ + if (hspi->hdmatx != NULL) + { + /* Set the SPI DMA Abort callback : + will lead to call HAL_SPI_AbortCpltCallback() at end of DMA abort procedure */ + hspi->hdmatx->XferAbortCallback = NULL; + + /* Abort DMA Tx Handle linked to SPI Peripheral */ + if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_ABORT; + } + + /* Disable Tx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); + } + } + + /* Disable the SPI DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) + { + /* Abort the SPI DMA Rx Stream/Channel : use blocking DMA Abort API (no callback) */ + if (hspi->hdmarx != NULL) + { + /* Set the SPI DMA Abort callback : + will lead to call HAL_SPI_AbortCpltCallback() at end of DMA abort procedure */ + hspi->hdmarx->XferAbortCallback = NULL; + + /* Abort DMA Rx Handle linked to SPI Peripheral */ + if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_ABORT; + } + + /* Disable peripheral */ + __HAL_SPI_DISABLE(hspi); + + /* Disable Rx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); + } + } + /* Reset Tx and Rx transfer counters */ + hspi->RxXferCount = 0U; + hspi->TxXferCount = 0U; + + /* Check error during Abort procedure */ + if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) + { + /* return HAL_Error in case of error during Abort procedure */ + errorcode = HAL_ERROR; + } + else + { + /* Reset errorCode */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + } + + /* Clear the Error flags in the SR register */ + __HAL_SPI_CLEAR_OVRFLAG(hspi); +#if defined(SPI_CR2_FRF) + __HAL_SPI_CLEAR_FREFLAG(hspi); +#endif /* SPI_CR2_FRF */ + + /* Restore hspi->state to ready */ + hspi->State = HAL_SPI_STATE_READY; + + return errorcode; +} + +/** + * @brief Abort ongoing transfer (Interrupt mode). + * @param hspi SPI handle. + * @note This procedure could be used for aborting any ongoing transfer (Tx and Rx), + * started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable SPI Interrupts (depending of transfer direction) + * - Disable the DMA transfer in the peripheral register (if enabled) + * - Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode) + * - Set handle State to READY + * - At abort completion, call user abort complete callback + * @note This procedure is executed in Interrupt mode, meaning that abort procedure could be + * considered as completed only when user abort complete callback is executed (not when exiting function). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) +{ + HAL_StatusTypeDef errorcode; + uint32_t abortcplt ; + __IO uint32_t count; + __IO uint32_t resetcount; + + /* Initialized local variable */ + errorcode = HAL_OK; + abortcplt = 1U; + resetcount = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + count = resetcount; + + /* Clear ERRIE interrupt to avoid error interrupts generation during Abort procedure */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); + + /* Change Rx and Tx Irq Handler to Disable TXEIE, RXNEIE and ERRIE interrupts */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) + { + hspi->TxISR = SPI_AbortTx_ISR; + /* Wait HAL_SPI_STATE_ABORT state */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while (hspi->State != HAL_SPI_STATE_ABORT); + /* Reset Timeout Counter */ + count = resetcount; + } + + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) + { + hspi->RxISR = SPI_AbortRx_ISR; + /* Wait HAL_SPI_STATE_ABORT state */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while (hspi->State != HAL_SPI_STATE_ABORT); + /* Reset Timeout Counter */ + count = resetcount; + } + + /* If DMA Tx and/or DMA Rx Handles are associated to SPI Handle, DMA Abort complete callbacks should be initialised + before any call to DMA Abort functions */ + /* DMA Tx Handle is valid */ + if (hspi->hdmatx != NULL) + { + /* Set DMA Abort Complete callback if UART DMA Tx request if enabled. + Otherwise, set it to NULL */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) + { + hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; + } + else + { + hspi->hdmatx->XferAbortCallback = NULL; + } + } + /* DMA Rx Handle is valid */ + if (hspi->hdmarx != NULL) + { + /* Set DMA Abort Complete callback if UART DMA Rx request if enabled. + Otherwise, set it to NULL */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) + { + hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; + } + else + { + hspi->hdmarx->XferAbortCallback = NULL; + } + } + + /* Disable the SPI DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) + { + /* Abort the SPI DMA Tx Stream/Channel */ + if (hspi->hdmatx != NULL) + { + /* Abort DMA Tx Handle linked to SPI Peripheral */ + if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) + { + hspi->hdmatx->XferAbortCallback = NULL; + hspi->ErrorCode = HAL_SPI_ERROR_ABORT; + } + else + { + abortcplt = 0U; + } + } + } + /* Disable the SPI DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) + { + /* Abort the SPI DMA Rx Stream/Channel */ + if (hspi->hdmarx != NULL) + { + /* Abort DMA Rx Handle linked to SPI Peripheral */ + if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) + { + hspi->hdmarx->XferAbortCallback = NULL; + hspi->ErrorCode = HAL_SPI_ERROR_ABORT; + } + else + { + abortcplt = 0U; + } + } + } + + if (abortcplt == 1U) + { + /* Reset Tx and Rx transfer counters */ + hspi->RxXferCount = 0U; + hspi->TxXferCount = 0U; + + /* Check error during Abort procedure */ + if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) + { + /* return HAL_Error in case of error during Abort procedure */ + errorcode = HAL_ERROR; + } + else + { + /* Reset errorCode */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + } + + /* Clear the Error flags in the SR register */ + __HAL_SPI_CLEAR_OVRFLAG(hspi); +#if defined(SPI_CR2_FRF) + __HAL_SPI_CLEAR_FREFLAG(hspi); +#endif /* SPI_CR2_FRF */ + + /* Restore hspi->State to Ready */ + hspi->State = HAL_SPI_STATE_READY; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->AbortCpltCallback(hspi); +#else + HAL_SPI_AbortCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + + return errorcode; +} + +/** + * @brief Pause the DMA Transfer. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) +{ + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Disable the SPI DMA Tx & Rx requests */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + return HAL_OK; +} + +/** + * @brief Resume the DMA Transfer. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) +{ + /* Process Locked */ + __HAL_LOCK(hspi); + + /* Enable the SPI DMA Tx & Rx requests */ + SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + return HAL_OK; +} + +/** + * @brief Stop the DMA Transfer. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) +{ + HAL_StatusTypeDef errorcode = HAL_OK; + /* The Lock is not implemented on this API to allow the user application + to call the HAL SPI API under callbacks HAL_SPI_TxCpltCallback() or HAL_SPI_RxCpltCallback() or + HAL_SPI_TxRxCpltCallback(): + when calling HAL_DMA_Abort() API the DMA TX/RX Transfer complete interrupt is generated + and the correspond call back is executed HAL_SPI_TxCpltCallback() or HAL_SPI_RxCpltCallback() or + HAL_SPI_TxRxCpltCallback() + */ + + /* Abort the SPI DMA tx Stream/Channel */ + if (hspi->hdmatx != NULL) + { + if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + errorcode = HAL_ERROR; + } + } + /* Abort the SPI DMA rx Stream/Channel */ + if (hspi->hdmarx != NULL) + { + if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + errorcode = HAL_ERROR; + } + } + + /* Disable the SPI DMA Tx & Rx requests */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + hspi->State = HAL_SPI_STATE_READY; + return errorcode; +} + +/** + * @brief Handle SPI interrupt request. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for the specified SPI module. + * @retval None + */ +void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) +{ + uint32_t itsource = hspi->Instance->CR2; + uint32_t itflag = hspi->Instance->SR; + + /* SPI in mode Receiver ----------------------------------------------------*/ + if ((SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) == RESET) && + (SPI_CHECK_FLAG(itflag, SPI_FLAG_RXNE) != RESET) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_RXNE) != RESET)) + { + hspi->RxISR(hspi); + return; + } + + /* SPI in mode Transmitter -------------------------------------------------*/ + if ((SPI_CHECK_FLAG(itflag, SPI_FLAG_TXE) != RESET) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_TXE) != RESET)) + { + hspi->TxISR(hspi); + return; + } + + /* SPI in Error Treatment --------------------------------------------------*/ +#if defined(SPI_CR2_FRF) + if (((SPI_CHECK_FLAG(itflag, SPI_FLAG_MODF) != RESET) || (SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) != RESET) + || (SPI_CHECK_FLAG(itflag, SPI_FLAG_FRE) != RESET)) && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_ERR) != RESET)) +#else + if (((SPI_CHECK_FLAG(itflag, SPI_FLAG_MODF) != RESET) || (SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) != RESET)) + && (SPI_CHECK_IT_SOURCE(itsource, SPI_IT_ERR) != RESET)) +#endif /* SPI_CR2_FRF */ + { + /* SPI Overrun error interrupt occurred ----------------------------------*/ + if (SPI_CHECK_FLAG(itflag, SPI_FLAG_OVR) != RESET) + { + if (hspi->State != HAL_SPI_STATE_BUSY_TX) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + else + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + return; + } + } + + /* SPI Mode Fault error interrupt occurred -------------------------------*/ + if (SPI_CHECK_FLAG(itflag, SPI_FLAG_MODF) != RESET) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); + __HAL_SPI_CLEAR_MODFFLAG(hspi); + } + + /* SPI Frame error interrupt occurred ------------------------------------*/ +#if defined(SPI_CR2_FRF) + if (SPI_CHECK_FLAG(itflag, SPI_FLAG_FRE) != RESET) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); + __HAL_SPI_CLEAR_FREFLAG(hspi); + } +#endif /* SPI_CR2_FRF */ + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + /* Disable all interrupts */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); + + hspi->State = HAL_SPI_STATE_READY; + /* Disable the SPI DMA requests if enabled */ + if ((HAL_IS_BIT_SET(itsource, SPI_CR2_TXDMAEN)) || (HAL_IS_BIT_SET(itsource, SPI_CR2_RXDMAEN))) + { + CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); + + /* Abort the SPI DMA Rx channel */ + if (hspi->hdmarx != NULL) + { + /* Set the SPI DMA Abort callback : + will lead to call HAL_SPI_ErrorCallback() at end of DMA abort procedure */ + hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; + if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + } + } + /* Abort the SPI DMA Tx channel */ + if (hspi->hdmatx != NULL) + { + /* Set the SPI DMA Abort callback : + will lead to call HAL_SPI_ErrorCallback() at end of DMA abort procedure */ + hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; + if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + } + } + } + else + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + } + return; + } +} + +/** + * @brief Tx Transfer completed callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_TxCpltCallback should be implemented in the user file + */ +} + +/** + * @brief Rx Transfer completed callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_RxCpltCallback should be implemented in the user file + */ +} + +/** + * @brief Tx and Rx Transfer completed callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_TxRxCpltCallback should be implemented in the user file + */ +} + +/** + * @brief Tx Half Transfer completed callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_TxHalfCpltCallback should be implemented in the user file + */ +} + +/** + * @brief Rx Half Transfer completed callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_RxHalfCpltCallback() should be implemented in the user file + */ +} + +/** + * @brief Tx and Rx Half Transfer callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_TxRxHalfCpltCallback() should be implemented in the user file + */ +} + +/** + * @brief SPI error callback. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +__weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_ErrorCallback should be implemented in the user file + */ + /* NOTE : The ErrorCode parameter in the hspi handle is updated by the SPI processes + and user can use HAL_SPI_GetError() API to check the latest error occurred + */ +} + +/** + * @brief SPI Abort Complete callback. + * @param hspi SPI handle. + * @retval None + */ +__weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hspi); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SPI_AbortCpltCallback can be implemented in the user file. + */ +} + +/** + * @} + */ + +/** @defgroup SPI_Exported_Functions_Group3 Peripheral State and Errors functions + * @brief SPI control functions + * +@verbatim + =============================================================================== + ##### Peripheral State and Errors functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the SPI. + (+) HAL_SPI_GetState() API can be helpful to check in run-time the state of the SPI peripheral + (+) HAL_SPI_GetError() check in run-time Errors occurring during communication +@endverbatim + * @{ + */ + +/** + * @brief Return the SPI handle state. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval SPI state + */ +HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) +{ + /* Return SPI handle state */ + return hspi->State; +} + +/** + * @brief Return the SPI error code. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval SPI error code in bitmap format + */ +uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) +{ + /* Return SPI ErrorCode */ + return hspi->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup SPI_Private_Functions + * @brief Private functions + * @{ + */ + +/** + * @brief DMA SPI transmit process complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tickstart; + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* DMA Normal Mode */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) != DMA_CCR_CIRC) + { + /* Disable ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); + + /* Disable Tx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + } + + /* Clear overrun flag in 2 Lines communication mode because received data is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + + hspi->TxXferCount = 0U; + hspi->State = HAL_SPI_STATE_READY; + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + return; + } + } + /* Call user Tx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxCpltCallback(hspi); +#else + HAL_SPI_TxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI receive process complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMAReceiveCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tickstart; +#if (USE_SPI_CRC != 0U) + __IO uint32_t tmpreg = 0U; +#endif /* USE_SPI_CRC */ + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* DMA Normal Mode */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) != DMA_CCR_CIRC) + { + /* Disable ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); + +#if (USE_SPI_CRC != 0U) + /* CRC handling */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Wait until RXNE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + /* Error on the CRC reception */ + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + } + /* Read CRC */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + } +#endif /* USE_SPI_CRC */ + + /* Check if we are in Master RX 2 line mode */ + if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) + { + /* Disable Rx/Tx DMA Request (done by default to handle the case master rx direction 2 lines) */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + } + else + { + /* Normal case */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); + } + + /* Check the end of the transaction */ + if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + } + + hspi->RxXferCount = 0U; + hspi->State = HAL_SPI_STATE_READY; + +#if (USE_SPI_CRC != 0U) + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + } +#endif /* USE_SPI_CRC */ + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + return; + } + } + /* Call user Rx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->RxCpltCallback(hspi); +#else + HAL_SPI_RxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI transmit receive process complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMATransmitReceiveCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tickstart; +#if (USE_SPI_CRC != 0U) + __IO uint32_t tmpreg = 0U; +#endif /* USE_SPI_CRC */ + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* DMA Normal Mode */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) != DMA_CCR_CIRC) + { + /* Disable ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); + +#if (USE_SPI_CRC != 0U) + /* CRC handling */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Wait the CRC data */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + } + /* Read CRC to Flush DR and RXNE flag */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + } + + /* Disable Rx/Tx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + + hspi->TxXferCount = 0U; + hspi->RxXferCount = 0U; + hspi->State = HAL_SPI_STATE_READY; + +#if (USE_SPI_CRC != 0U) + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + } +#endif /* USE_SPI_CRC */ + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + return; + } + } + /* Call user TxRx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxRxCpltCallback(hspi); +#else + HAL_SPI_TxRxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI half transmit process complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMAHalfTransmitCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Call user Tx half complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxHalfCpltCallback(hspi); +#else + HAL_SPI_TxHalfCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI half receive process complete callback + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMAHalfReceiveCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Call user Rx half complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->RxHalfCpltCallback(hspi); +#else + HAL_SPI_RxHalfCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI half transmit receive process complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMAHalfTransmitReceiveCplt(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Call user TxRx half complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxRxHalfCpltCallback(hspi); +#else + HAL_SPI_TxRxHalfCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI communication error callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SPI_DMAError(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Stop the disable DMA transfer on SPI side */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); + + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); + hspi->State = HAL_SPI_STATE_READY; + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI communication abort callback, when initiated by HAL services on Error + * (To be called at end of DMA Abort procedure following error occurrence). + * @param hdma DMA handle. + * @retval None + */ +static void SPI_DMAAbortOnError(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + hspi->RxXferCount = 0U; + hspi->TxXferCount = 0U; + + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI Tx communication abort callback, when initiated by user + * (To be called at end of DMA Tx Abort procedure following user abort request). + * @note When this callback is executed, User Abort complete call back is called only if no + * Abort still ongoing for Rx DMA Handle. + * @param hdma DMA handle. + * @retval None + */ +static void SPI_DMATxAbortCallback(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + __IO uint32_t count; + + hspi->hdmatx->XferAbortCallback = NULL; + count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + + /* Disable Tx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); + + /* Check if an Abort process is still ongoing */ + if (hspi->hdmarx != NULL) + { + if (hspi->hdmarx->XferAbortCallback != NULL) + { + return; + } + } + + /* No Abort process still ongoing : All DMA Stream/Channel are aborted, call user Abort Complete callback */ + hspi->RxXferCount = 0U; + hspi->TxXferCount = 0U; + + /* Check no error during Abort procedure */ + if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) + { + /* Reset errorCode */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + } + + /* Clear the Error flags in the SR register */ + __HAL_SPI_CLEAR_OVRFLAG(hspi); +#if defined(SPI_CR2_FRF) + __HAL_SPI_CLEAR_FREFLAG(hspi); +#endif /* SPI_CR2_FRF */ + + /* Restore hspi->State to Ready */ + hspi->State = HAL_SPI_STATE_READY; + + /* Call user Abort complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->AbortCpltCallback(hspi); +#else + HAL_SPI_AbortCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA SPI Rx communication abort callback, when initiated by user + * (To be called at end of DMA Rx Abort procedure following user abort request). + * @note When this callback is executed, User Abort complete call back is called only if no + * Abort still ongoing for Tx DMA Handle. + * @param hdma DMA handle. + * @retval None + */ +static void SPI_DMARxAbortCallback(DMA_HandleTypeDef *hdma) +{ + SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable SPI Peripheral */ + __HAL_SPI_DISABLE(hspi); + + hspi->hdmarx->XferAbortCallback = NULL; + + /* Disable Rx DMA Request */ + CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); + + /* Check Busy flag */ + if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + } + + /* Check if an Abort process is still ongoing */ + if (hspi->hdmatx != NULL) + { + if (hspi->hdmatx->XferAbortCallback != NULL) + { + return; + } + } + + /* No Abort process still ongoing : All DMA Stream/Channel are aborted, call user Abort Complete callback */ + hspi->RxXferCount = 0U; + hspi->TxXferCount = 0U; + + /* Check no error during Abort procedure */ + if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) + { + /* Reset errorCode */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + } + + /* Clear the Error flags in the SR register */ + __HAL_SPI_CLEAR_OVRFLAG(hspi); +#if defined(SPI_CR2_FRF) + __HAL_SPI_CLEAR_FREFLAG(hspi); +#endif /* SPI_CR2_FRF */ + + /* Restore hspi->State to Ready */ + hspi->State = HAL_SPI_STATE_READY; + + /* Call user Abort complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->AbortCpltCallback(hspi); +#else + HAL_SPI_AbortCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ +} + +/** + * @brief Rx 8-bit handler for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) +{ + /* Receive data in 8bit mode */ + *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); + hspi->pRxBuffPtr++; + hspi->RxXferCount--; + + /* Check end of the reception */ + if (hspi->RxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + hspi->RxISR = SPI_2linesRxISR_8BITCRC; + return; + } +#endif /* USE_SPI_CRC */ + + /* Disable RXNE and ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); + + if (hspi->TxXferCount == 0U) + { + SPI_CloseRxTx_ISR(hspi); + } + } +} + +#if (USE_SPI_CRC != 0U) +/** + * @brief Rx 8-bit handler for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) +{ + __IO uint8_t *ptmpreg8; + __IO uint8_t tmpreg8 = 0; + + /* Initialize the 8bit temporary pointer */ + ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; + /* Read 8bit CRC to flush Data Register */ + tmpreg8 = *ptmpreg8; + /* To avoid GCC warning */ + UNUSED(tmpreg8); + + /* Disable RXNE and ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); + + if (hspi->TxXferCount == 0U) + { + SPI_CloseRxTx_ISR(hspi); + } +} +#endif /* USE_SPI_CRC */ + +/** + * @brief Tx 8-bit handler for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) +{ + *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr++; + hspi->TxXferCount--; + + /* Check the end of the transmission */ + if (hspi->TxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Set CRC Next Bit to send CRC */ + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + /* Disable TXE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); + return; + } +#endif /* USE_SPI_CRC */ + + /* Disable TXE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); + + if (hspi->RxXferCount == 0U) + { + SPI_CloseRxTx_ISR(hspi); + } + } +} + +/** + * @brief Rx 16-bit handler for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) +{ + /* Receive data in 16 Bit mode */ + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); + hspi->pRxBuffPtr += sizeof(uint16_t); + hspi->RxXferCount--; + + if (hspi->RxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + hspi->RxISR = SPI_2linesRxISR_16BITCRC; + return; + } +#endif /* USE_SPI_CRC */ + + /* Disable RXNE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); + + if (hspi->TxXferCount == 0U) + { + SPI_CloseRxTx_ISR(hspi); + } + } +} + +#if (USE_SPI_CRC != 0U) +/** + * @brief Manage the CRC 16-bit receive for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) +{ + __IO uint32_t tmpreg = 0U; + + /* Read 16bit CRC to flush Data Register */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + + /* Disable RXNE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); + + SPI_CloseRxTx_ISR(hspi); +} +#endif /* USE_SPI_CRC */ + +/** + * @brief Tx 16-bit handler for Transmit and Receive in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) +{ + /* Transmit data in 16 Bit mode */ + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + + /* Enable CRC Transmission */ + if (hspi->TxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Set CRC Next Bit to send CRC */ + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + /* Disable TXE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); + return; + } +#endif /* USE_SPI_CRC */ + + /* Disable TXE interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); + + if (hspi->RxXferCount == 0U) + { + SPI_CloseRxTx_ISR(hspi); + } + } +} + +#if (USE_SPI_CRC != 0U) +/** + * @brief Manage the CRC 8-bit receive in Interrupt context. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) +{ + __IO uint8_t *ptmpreg8; + __IO uint8_t tmpreg8 = 0; + + /* Initialize the 8bit temporary pointer */ + ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; + /* Read 8bit CRC to flush Data Register */ + tmpreg8 = *ptmpreg8; + /* To avoid GCC warning */ + UNUSED(tmpreg8); + + SPI_CloseRx_ISR(hspi); +} +#endif /* USE_SPI_CRC */ + +/** + * @brief Manage the receive 8-bit in Interrupt context. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) +{ + *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); + hspi->pRxBuffPtr++; + hspi->RxXferCount--; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + if (hspi->RxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + hspi->RxISR = SPI_RxISR_8BITCRC; + return; + } +#endif /* USE_SPI_CRC */ + SPI_CloseRx_ISR(hspi); + } +} + +#if (USE_SPI_CRC != 0U) +/** + * @brief Manage the CRC 16-bit receive in Interrupt context. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) +{ + __IO uint32_t tmpreg = 0U; + + /* Read 16bit CRC to flush Data Register */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + + /* Disable RXNE and ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); + + SPI_CloseRx_ISR(hspi); +} +#endif /* USE_SPI_CRC */ + +/** + * @brief Manage the 16-bit receive in Interrupt context. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) +{ + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); + hspi->pRxBuffPtr += sizeof(uint16_t); + hspi->RxXferCount--; + +#if (USE_SPI_CRC != 0U) + /* Enable CRC Transmission */ + if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) + { + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + if (hspi->RxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + hspi->RxISR = SPI_RxISR_16BITCRC; + return; + } +#endif /* USE_SPI_CRC */ + SPI_CloseRx_ISR(hspi); + } +} + +/** + * @brief Handle the data 8-bit transmit in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) +{ + *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr++; + hspi->TxXferCount--; + + if (hspi->TxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Enable CRC Transmission */ + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + SPI_CloseTx_ISR(hspi); + } +} + +/** + * @brief Handle the data 16-bit transmit in Interrupt mode. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) +{ + /* Transmit data in 16 Bit mode */ + hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); + hspi->pTxBuffPtr += sizeof(uint16_t); + hspi->TxXferCount--; + + if (hspi->TxXferCount == 0U) + { +#if (USE_SPI_CRC != 0U) + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + /* Enable CRC Transmission */ + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + SPI_CloseTx_ISR(hspi); + } +} + +/** + * @brief Handle SPI Communication Timeout. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param Flag SPI flag to check + * @param State flag state to check + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + tmp_tickstart = HAL_GetTick(); + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + { + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + { + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + { + SPI_RESET_CRC(hspi); + } + + hspi->State = HAL_SPI_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + + return HAL_TIMEOUT; + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + { + tmp_timeout = 0U; + } + count--; + } + } + + return HAL_OK; +} + +/** + * @brief Handle the check of the RX transaction complete. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + } + + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + { + if (hspi->Init.Direction != SPI_DIRECTION_2LINES_RXONLY) + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + return HAL_TIMEOUT; + } + } + else + { + /* Wait the RXNE reset */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + return HAL_TIMEOUT; + } + } + } + else + { + /* Wait the RXNE reset */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + return HAL_TIMEOUT; + } + } + return HAL_OK; +} + +/** + * @brief Handle the check of the RXTX or TX transaction complete. + * @param hspi SPI handle + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + /* Wait until TXE flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + return HAL_TIMEOUT; + } + + /* Timeout in us */ + __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U); + /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */ + if (hspi->Init.Mode == SPI_MODE_MASTER) + { + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + return HAL_TIMEOUT; + } + } + else + { + /* Wait BSY flag during 1 Byte time transfer in case of Full-Duplex and Tx transfer + * If Timeout is reached, the transfer is considered as finish. + * User have to calculate the timeout value to fit with the time of 1 byte transfer. + * This time is directly link with the SPI clock from Master device. + */ + do + { + if (count == 0U) + { + break; + } + count--; + } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); + } + + return HAL_OK; +} + +/** + * @brief Handle the end of the RXTX transaction. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) +{ + uint32_t tickstart; + __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + /* Disable ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + break; + } + count--; + } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + +#if (USE_SPI_CRC != 0U) + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) + { + hspi->State = HAL_SPI_STATE_READY; + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + else + { +#endif /* USE_SPI_CRC */ + if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) + { + if (hspi->State == HAL_SPI_STATE_BUSY_RX) + { + hspi->State = HAL_SPI_STATE_READY; + /* Call user Rx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->RxCpltCallback(hspi); +#else + HAL_SPI_RxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + else + { + hspi->State = HAL_SPI_STATE_READY; + /* Call user TxRx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxRxCpltCallback(hspi); +#else + HAL_SPI_TxRxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + } + else + { + hspi->State = HAL_SPI_STATE_READY; + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } +#if (USE_SPI_CRC != 0U) + } +#endif /* USE_SPI_CRC */ +} + +/** + * @brief Handle the end of the RX transaction. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) +{ + /* Disable RXNE and ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); + + /* Check the end of the transaction */ + if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + hspi->State = HAL_SPI_STATE_READY; + +#if (USE_SPI_CRC != 0U) + /* Check if CRC error occurred */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + else + { +#endif /* USE_SPI_CRC */ + if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) + { + /* Call user Rx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->RxCpltCallback(hspi); +#else + HAL_SPI_RxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + else + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } +#if (USE_SPI_CRC != 0U) + } +#endif /* USE_SPI_CRC */ +} + +/** + * @brief Handle the end of the TX transaction. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) +{ + uint32_t tickstart; + __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + break; + } + count--; + } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); + + /* Disable TXE and ERR interrupt */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + } + + hspi->State = HAL_SPI_STATE_READY; + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + { + /* Call user error callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->ErrorCallback(hspi); +#else + HAL_SPI_ErrorCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } + else + { + /* Call user Rx complete callback */ +#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) + hspi->TxCpltCallback(hspi); +#else + HAL_SPI_TxCpltCallback(hspi); +#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ + } +} + +/** + * @brief Handle abort a Rx transaction. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) +{ + __IO uint32_t tmpreg = 0U; + __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U); + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); + break; + } + count--; + } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); + + /* Disable SPI Peripheral */ + __HAL_SPI_DISABLE(hspi); + + /* Disable TXEIE, RXNEIE and ERRIE(mode fault event, overrun error, TI frame error) interrupts */ + CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE)); + + /* Flush Data Register by a blank read */ + tmpreg = READ_REG(hspi->Instance->DR); + /* To avoid GCC warning */ + UNUSED(tmpreg); + + hspi->State = HAL_SPI_STATE_ABORT; +} + +/** + * @brief Handle abort a Tx or Rx/Tx transaction. + * @param hspi pointer to a SPI_HandleTypeDef structure that contains + * the configuration information for SPI module. + * @retval None + */ +static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) +{ + /* Disable TXEIE interrupt */ + CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); + + /* Disable SPI Peripheral */ + __HAL_SPI_DISABLE(hspi); + + hspi->State = HAL_SPI_STATE_ABORT; +} + +/** + * @} + */ + +#endif /* HAL_SPI_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.c b/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.c new file mode 100644 index 0000000..598064d --- /dev/null +++ b/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.c @@ -0,0 +1,1065 @@ +/************************************************************************ +* TITLE: fonc_tft.c +* AUTHOR: +* DESCRIPTION: fonction pour afficheur graphique TFT ST7735 +* VERSION : +* +************************************************************************/ + + + +/* INCLUDE *************************************************************/ +#include "main.h" + +extern SPI_HandleTypeDef hspi1; +#include "stm32l1xx_hal_gpio.h" +#include "stm32l1xx_hal_spi.h" + +#include "fonc_tft.h" + +/* DEFINE **************************************************************/ +#define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#define pgm_read_word(addr) (*(const unsigned short *)(addr)) + + +// some flags for initR() :( +#define INITR_GREENTAB 0x0 +#define INITR_REDTAB 0x1 +#define INITR_BLACKTAB 0x2 + +#define INITR_18GREENTAB INITR_GREENTAB +#define INITR_18REDTAB INITR_REDTAB +#define INITR_18BLACKTAB INITR_BLACKTAB +#define INITR_144GREENTAB 0x1 + +// dimension TFT display +#define ST7735_TFTWIDTH 128 // Width TFT display +#define ST7735_TFTHEIGHT_18 160 // Heigt TFT 1.8" display + +// intruction TFT display +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +/* VARIABLE ************************************************************/ + + +/* CONSTANTE ***********************************************************/ + +/* initialization commands and arguments for TFT controller */ +// commands and arguments are organized in these tables +// function commandList tables read theses tables +#define DELAY 0x80 +/*static const uint8_t Bcmd[] = { // Initialization commands for 7735B screens + 18, // 18 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 50, // 50 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x05, // 16-bit color + 10, // 10 ms delay + ST7735_FRMCTR1, 3+DELAY, // 4: Frame rate control, 3 args + delay: + 0x00, // fastest refresh + 0x06, // 6 lines front porch + 0x03, // 3 lines back porch + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 5: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_DISSET5, 2 , // 6: Display settings #5, 2 args, no delay: + 0x15, // 1 clk cycle nonoverlap, 2 cycle gate + // rise, 3 cycle osc equalize + 0x02, // Fix on VTL + ST7735_INVCTR , 1 , // 7: Display inversion control, 1 arg: + 0x0, // Line inversion + ST7735_PWCTR1 , 2+DELAY, // 8: Power control, 2 args + delay: + 0x02, // GVDD = 4.7V + 0x70, // 1.0uA + 10, // 10 ms delay + ST7735_PWCTR2 , 1 , // 9: Power control, 1 arg, no delay: + 0x05, // VGH = 14.7V, VGL = -7.35V + ST7735_PWCTR3 , 2 , // 10: Power control, 2 args, no delay: + 0x01, // Opamp current small + 0x02, // Boost frequency + ST7735_VMCTR1 , 2+DELAY, // 11: Power control, 2 args + delay: + 0x3C, // VCOMH = 4V + 0x38, // VCOML = -1.1V + 10, // 10 ms delay + ST7735_PWCTR6 , 2 , // 12: Power control, 2 args, no delay: + 0x11, 0x15, + ST7735_GMCTRP1,16 , // 13: Magical unicorn dust, 16 args, no delay: + 0x09, 0x16, 0x09, 0x20, // (seriously though, not sure what + 0x21, 0x1B, 0x13, 0x19, // these config values represent) + 0x17, 0x15, 0x1E, 0x2B, + 0x04, 0x05, 0x02, 0x0E, + ST7735_GMCTRN1,16+DELAY, // 14: Sparkles and rainbows, 16 args + delay: + 0x0B, 0x14, 0x08, 0x1E, // (ditto) + 0x22, 0x1D, 0x18, 0x1E, + 0x1B, 0x1A, 0x24, 0x2B, + 0x06, 0x06, 0x02, 0x0F, + 10, // 10 ms delay + ST7735_CASET , 4 , // 15: Column addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 2 + 0x00, 0x81, // XEND = 129 + ST7735_RASET , 4 , // 16: Row addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 1 + 0x00, 0x81, // XEND = 160 + ST7735_NORON , DELAY, // 17: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 18: Main screen turn on, no args, w/delay + 255 }; // 255 = 500 ms delay +*/ +static const uint8_t Rcmd1[] = { // Init for 7735R, part 1 (red or green tab) + 15, // 15 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, 0 args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, 0 args, w/delay + 255, // 500 ms delay + ST7735_FRMCTR1, 3 , // 3: Frame rate ctrl - normal mode, 3 args: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR2, 3 , // 4: Frame rate control - idle mode, 3 args: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR3, 6 , // 5: Frame rate ctrl - partial mode, 6 args: + 0x01, 0x2C, 0x2D, // Dot inversion mode + 0x01, 0x2C, 0x2D, // Line inversion mode + ST7735_INVCTR , 1 , // 6: Display inversion ctrl, 1 arg, no delay: + 0x07, // No inversion + ST7735_PWCTR1 , 3 , // 7: Power control, 3 args, no delay: + 0xA2, + 0x02, // -4.6V + 0x84, // AUTO mode + ST7735_PWCTR2 , 1 , // 8: Power control, 1 arg, no delay: + 0xC5, // VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD + ST7735_PWCTR3 , 2 , // 9: Power control, 2 args, no delay: + 0x0A, // Opamp current small + 0x00, // Boost frequency + ST7735_PWCTR4 , 2 , // 10: Power control, 2 args, no delay: + 0x8A, // BCLK/2, Opamp current small & Medium low + 0x2A, + ST7735_PWCTR5 , 2 , // 11: Power control, 2 args, no delay: + 0x8A, 0xEE, + ST7735_VMCTR1 , 1 , // 12: Power control, 1 arg, no delay: + 0x0E, + ST7735_INVOFF , 0 , // 13: Don't invert display, no args, no delay + ST7735_MADCTL , 1 , // 14: Memory access control (directions), 1 arg: + 0xC8, // row addr/col addr, bottom to top refresh + ST7735_COLMOD , 1 , // 15: set color mode, 1 arg, no delay: + 0x05 }; // 16-bit color + +/*static const uint8_t Rcmd2green[] = { // Init for 7735R, part 2 (green tab only) + 2, // 2 commands in list: + ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: + 0x00, 0x02, // XSTART = 0 + 0x00, 0x7F+0x02, // XEND = 127 + ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: + 0x00, 0x01, // XSTART = 0 + 0x00, 0x9F+0x01 }; // XEND = 159 + */ +static const uint8_t Rcmd2red[] = { // Init for 7735R, part 2 (red tab only) + 2, // 2 commands in list: + ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F, // XEND = 127 + ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x9F }; // XEND = 159 + +/*static const uint8_t Rcmd2green144[] = { // Init for 7735R, part 2 (green 1.44 tab) + 2, // 2 commands in list: + ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F, // XEND = 127 + ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F }; // XEND = 127 +*/ +static const uint8_t Rcmd3[] = { // Init for 7735R, part 3 (red or green tab) + 4, // 4 commands in list: + ST7735_GMCTRP1, 16 , // 1: Magical unicorn dust, 16 args, no delay: + 0x02, 0x1c, 0x07, 0x12, + 0x37, 0x32, 0x29, 0x2d, + 0x29, 0x25, 0x2B, 0x39, + 0x00, 0x01, 0x03, 0x10, + ST7735_GMCTRN1, 16 , // 2: Sparkles and rainbows, 16 args, no delay: + 0x03, 0x1d, 0x07, 0x06, + 0x2E, 0x2C, 0x29, 0x2D, + 0x2E, 0x2E, 0x37, 0x3F, + 0x00, 0x00, 0x02, 0x10, + ST7735_NORON , DELAY, // 3: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 4: Main screen turn on, no args w/delay + 100 }; // 100 ms delay + +/* table of font caracter */ +// Standard ASCII 5x7 font + + +static const unsigned char tab_font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + 0x00, 0x18, 0x3C, 0x18, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + 0x00, 0x18, 0x24, 0x18, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + 0x30, 0x48, 0x3A, 0x06, 0x0E, + 0x26, 0x29, 0x79, 0x29, 0x26, + 0x40, 0x7F, 0x05, 0x05, 0x07, + 0x40, 0x7F, 0x05, 0x25, 0x3F, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + 0x14, 0x22, 0x7F, 0x22, 0x14, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + 0x06, 0x09, 0x7F, 0x01, 0x7F, + 0x00, 0x66, 0x89, 0x95, 0x6A, + 0x60, 0x60, 0x60, 0x60, 0x60, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + 0x08, 0x04, 0x7E, 0x04, 0x08, + 0x10, 0x20, 0x7E, 0x20, 0x10, + 0x08, 0x08, 0x2A, 0x1C, 0x08, + 0x08, 0x1C, 0x2A, 0x08, 0x08, + 0x1E, 0x10, 0x10, 0x10, 0x10, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + 0x30, 0x38, 0x3E, 0x38, 0x30, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, + 0x23, 0x13, 0x08, 0x64, 0x62, + 0x36, 0x49, 0x56, 0x20, 0x50, + 0x00, 0x08, 0x07, 0x03, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + 0x08, 0x08, 0x3E, 0x08, 0x08, + 0x00, 0x80, 0x70, 0x30, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x60, 0x60, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3E, 0x51, 0x49, 0x45, 0x3E, + 0x00, 0x42, 0x7F, 0x40, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, + 0x21, 0x41, 0x49, 0x4D, 0x33, + 0x18, 0x14, 0x12, 0x7F, 0x10, + 0x27, 0x45, 0x45, 0x45, 0x39, + 0x3C, 0x4A, 0x49, 0x49, 0x31, + 0x41, 0x21, 0x11, 0x09, 0x07, + 0x36, 0x49, 0x49, 0x49, 0x36, + 0x46, 0x49, 0x49, 0x29, 0x1E, + 0x00, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x00, 0x41, 0x22, 0x14, 0x08, + 0x02, 0x01, 0x59, 0x09, 0x06, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + 0x7C, 0x12, 0x11, 0x12, 0x7C, + 0x7F, 0x49, 0x49, 0x49, 0x36, + 0x3E, 0x41, 0x41, 0x41, 0x22, + 0x7F, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x49, 0x49, 0x49, 0x41, + 0x7F, 0x09, 0x09, 0x09, 0x01, + 0x3E, 0x41, 0x41, 0x51, 0x73, + 0x7F, 0x08, 0x08, 0x08, 0x7F, + 0x00, 0x41, 0x7F, 0x41, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, + 0x7F, 0x08, 0x14, 0x22, 0x41, + 0x7F, 0x40, 0x40, 0x40, 0x40, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + 0x7F, 0x04, 0x08, 0x10, 0x7F, + 0x3E, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x09, 0x09, 0x09, 0x06, + 0x3E, 0x41, 0x51, 0x21, 0x5E, + 0x7F, 0x09, 0x19, 0x29, 0x46, + 0x26, 0x49, 0x49, 0x49, 0x32, + 0x03, 0x01, 0x7F, 0x01, 0x03, + 0x3F, 0x40, 0x40, 0x40, 0x3F, + 0x1F, 0x20, 0x40, 0x20, 0x1F, + 0x3F, 0x40, 0x38, 0x40, 0x3F, + 0x63, 0x14, 0x08, 0x14, 0x63, + 0x03, 0x04, 0x78, 0x04, 0x03, + 0x61, 0x59, 0x49, 0x4D, 0x43, + 0x00, 0x7F, 0x41, 0x41, 0x41, + 0x02, 0x04, 0x08, 0x10, 0x20, + 0x00, 0x41, 0x41, 0x41, 0x7F, + 0x04, 0x02, 0x01, 0x02, 0x04, + 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x03, 0x07, 0x08, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, + 0x7F, 0x28, 0x44, 0x44, 0x38, + 0x38, 0x44, 0x44, 0x44, 0x28, + 0x38, 0x44, 0x44, 0x28, 0x7F, + 0x38, 0x54, 0x54, 0x54, 0x18, + 0x00, 0x08, 0x7E, 0x09, 0x02, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + 0x7F, 0x08, 0x04, 0x04, 0x78, + 0x00, 0x44, 0x7D, 0x40, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, + 0x7C, 0x08, 0x04, 0x04, 0x78, + 0x38, 0x44, 0x44, 0x44, 0x38, + 0xFC, 0x18, 0x24, 0x24, 0x18, + 0x18, 0x24, 0x24, 0x18, 0xFC, + 0x7C, 0x08, 0x04, 0x04, 0x08, + 0x48, 0x54, 0x54, 0x54, 0x24, + 0x04, 0x04, 0x3F, 0x44, 0x24, + 0x3C, 0x40, 0x40, 0x20, 0x7C, + 0x1C, 0x20, 0x40, 0x20, 0x1C, + 0x3C, 0x40, 0x30, 0x40, 0x3C, + 0x44, 0x28, 0x10, 0x28, 0x44, + 0x4C, 0x90, 0x90, 0x90, 0x7C, + 0x44, 0x64, 0x54, 0x4C, 0x44, + 0x00, 0x08, 0x36, 0x41, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, + 0x3C, 0x26, 0x23, 0x26, 0x3C, + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + 0x3A, 0x40, 0x40, 0x20, 0x7A, + 0x38, 0x54, 0x54, 0x55, 0x59, + 0x21, 0x55, 0x55, 0x79, 0x41, + 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut + 0x21, 0x55, 0x54, 0x78, 0x40, + 0x20, 0x54, 0x55, 0x79, 0x40, + 0x0C, 0x1E, 0x52, 0x72, 0x12, + 0x39, 0x55, 0x55, 0x55, 0x59, + 0x39, 0x54, 0x54, 0x54, 0x59, + 0x39, 0x55, 0x54, 0x54, 0x58, + 0x00, 0x00, 0x45, 0x7C, 0x41, + 0x00, 0x02, 0x45, 0x7D, 0x42, + 0x00, 0x01, 0x45, 0x7C, 0x40, + 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut + 0xF0, 0x28, 0x25, 0x28, 0xF0, + 0x7C, 0x54, 0x55, 0x45, 0x00, + 0x20, 0x54, 0x54, 0x7C, 0x54, + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + 0x32, 0x49, 0x49, 0x49, 0x32, + 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut + 0x32, 0x4A, 0x48, 0x48, 0x30, + 0x3A, 0x41, 0x41, 0x21, 0x7A, + 0x3A, 0x42, 0x40, 0x20, 0x78, + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut + 0x3D, 0x40, 0x40, 0x40, 0x3D, + 0x3C, 0x24, 0xFF, 0x24, 0x24, + 0x48, 0x7E, 0x49, 0x43, 0x66, + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + 0xFF, 0x09, 0x29, 0xF6, 0x20, + 0xC0, 0x88, 0x7E, 0x09, 0x03, + 0x20, 0x54, 0x54, 0x79, 0x41, + 0x00, 0x00, 0x44, 0x7D, 0x41, + 0x30, 0x48, 0x48, 0x4A, 0x32, + 0x38, 0x40, 0x40, 0x22, 0x7A, + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + 0x26, 0x29, 0x29, 0x2F, 0x28, + 0x26, 0x29, 0x29, 0x29, 0x26, + 0x30, 0x48, 0x4D, 0x40, 0x20, + 0x38, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x38, + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + 0x2F, 0x10, 0x28, 0x34, 0xFA, + 0x00, 0x00, 0x7B, 0x00, 0x00, + 0x08, 0x14, 0x2A, 0x14, 0x22, + 0x22, 0x14, 0x2A, 0x14, 0x08, + 0xAA, 0x00, 0x55, 0x00, 0xAA, + 0xAA, 0x55, 0xAA, 0x55, 0xAA, + 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x10, 0x10, 0x10, 0xFF, 0x00, + 0x14, 0x14, 0x14, 0xFF, 0x00, + 0x10, 0x10, 0xFF, 0x00, 0xFF, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x14, 0x14, 0x14, 0xFC, 0x00, + 0x14, 0x14, 0xF7, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x14, 0x14, 0xF4, 0x04, 0xFC, + 0x14, 0x14, 0x17, 0x10, 0x1F, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0x1F, 0x00, + 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0xF0, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0xFF, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x14, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0x10, 0x17, + 0x00, 0x00, 0xFC, 0x04, 0xF4, + 0x14, 0x14, 0x17, 0x10, 0x17, + 0x14, 0x14, 0xF4, 0x04, 0xF4, + 0x00, 0x00, 0xFF, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xF7, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x17, 0x14, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0xF4, 0x14, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x00, 0x00, 0x1F, 0x10, 0x1F, + 0x00, 0x00, 0x00, 0x1F, 0x14, + 0x00, 0x00, 0x00, 0xFC, 0x14, + 0x00, 0x00, 0xF0, 0x10, 0xF0, + 0x10, 0x10, 0xFF, 0x10, 0xFF, + 0x14, 0x14, 0x14, 0xFF, 0x14, + 0x10, 0x10, 0x10, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x38, 0x44, 0x44, 0x38, 0x44, + 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta + 0x7E, 0x02, 0x02, 0x06, 0x06, + 0x02, 0x7E, 0x02, 0x7E, 0x02, + 0x63, 0x55, 0x49, 0x41, 0x63, + 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x40, 0x7E, 0x20, 0x1E, 0x20, + 0x06, 0x02, 0x7E, 0x02, 0x02, + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + 0x4C, 0x72, 0x01, 0x72, 0x4C, + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + 0x30, 0x48, 0x78, 0x48, 0x30, + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + 0x3E, 0x49, 0x49, 0x49, 0x00, + 0x7E, 0x01, 0x01, 0x01, 0x7E, + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + 0x44, 0x44, 0x5F, 0x44, 0x44, + 0x40, 0x51, 0x4A, 0x44, 0x40, + 0x40, 0x44, 0x4A, 0x51, 0x40, + 0x00, 0x00, 0xFF, 0x01, 0x03, + 0xE0, 0x80, 0xFF, 0x00, 0x00, + 0x08, 0x08, 0x6B, 0x6B, 0x08, + 0x36, 0x12, 0x36, 0x24, 0x36, + 0x06, 0x0F, 0x09, 0x0F, 0x06, + 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, + 0x30, 0x40, 0xFF, 0x01, 0x01, + 0x00, 0x1F, 0x01, 0x01, 0x1E, + 0x00, 0x19, 0x1D, 0x17, 0x12, + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +/* */ +const unsigned char ALL_IS_mono_120 [] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, +0xF0, 0xF8, 0x38, 0x18, 0x78, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, +0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0x30, 0x3E, 0x3F, 0x0F, 0x07, 0x04, 0x04, 0x04, 0x04, 0x05, 0x0F, 0x1F, +0x3E, 0x38, 0x20, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, +0x00, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x08, 0x0C, 0xDC, 0x8C, 0x2C, 0x74, +0x74, 0x64, 0xEC, 0xC8, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +0x07, 0x0F, 0x18, 0x18, 0x1D, 0x19, 0x33, 0x37, 0x17, 0x13, 0x1A, 0x0C, 0x0F, 0x07, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x02, 0x02, 0x02, 0x02, 0x02, +0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xC0, 0x30, 0x10, 0x08, +0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x18, 0x10, 0x00, 0x00, 0x00, 0xFC, 0x00, +0x00, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x0C, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, 0x20, 0x20, 0x10, 0x0C, 0x03, 0x00, +0x00, 0x1F, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x22, +0x12, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + + +/* PROTOTYPE ************************************************************/ + +void Write_SPI (unsigned char dataout); +void writecommand(unsigned char cmdout); +void writedata(unsigned char dataout); +void commandList(const uint8_t *addr); +void displayLogo_TFT( void); + +/* SOUS-PROGRAMME *******************************************************/ + +/******************************************************************************* +* Function Name : Write_SPI +* Description : write byte for transmit via SPI +* Input : byte to write +* Output : None +* Return : None +*******************************************************************************/ +void Write_SPI(unsigned char dataout) +{ + //char temp; + + //SPI_DR=dataout; + + //while ( (SPI_SR & 0x02) == 0x00 ) ; // wait for transmission started + //while ( (SPI_SR & 0x80) != 0x00 ) ; // wait for transmission completed + + HAL_SPI_Transmit(&hspi1, &dataout, 1, 100); // HAL_ERROR + +} + +/******************************************************************************* +* Function Name : writecommand +* Description : write command to TFT controller +* Input : command byte to write +* Output : None +* Return : None +*******************************************************************************/ +void writecommand(unsigned char cmdout) +{ + //PD_ODR = PD_ODR & ~0x01; // PD0 = D/nC = 0 commande + //PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 + + //Write_SPI( cmdout); + + // PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 + + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 0); // D/nC = 0 commande + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0 + + //HAL_SPI_Transmit(&hspi1, &cmdout, 1, 100); // HAL_ERROR + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN << 16 ;// D/nC = 0 commande + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN << 16 ;// nCS = 0 + HAL_SPI_Transmit(&hspi1, &cmdout, 1, 100); // + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + +} + +/******************************************************************************* +* Function Name : writedata +* Description : write data to TFT controller +* Input : data byte to write +* Output : None +* Return : None +*******************************************************************************/ +void writedata(unsigned char dataout) +{ + //PD_ODR = PD_ODR | 0x01; // PD0 = D/nC = 1 data + //PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 + + //Write_SPI( dataout); + + //PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // D/nC = 1 data + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0 + + //HAL_SPI_Transmit(&hspi1, &dataout, 1, 100); // HAL_ERROR + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + + + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN << 16 ;// nCS = 0 + HAL_SPI_Transmit(&hspi1, &dataout, 1, 100); // + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + +} + +/******************************************************************************* +* Function Name : commandList +* Description : Reads and issues a series of LCD commands stored in byte array +* Input : addr = pointer on command byte array +* Output : None +* Return : None +*******************************************************************************/ +void commandList(const uint8_t *addr) +{ + uint8_t numCommands, numArgs; + uint16_t ms; + + numCommands = pgm_read_byte(addr++); // Number of commands to follow + while(numCommands--) + { // For each command... + writecommand(pgm_read_byte(addr++)); // Read, issue command + numArgs = pgm_read_byte(addr++); // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs--) { // For each argument... + writedata(pgm_read_byte(addr++)); // Read, issue argument + } + + if(ms) { + ms = pgm_read_byte(addr++); // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + HAL_Delay(500); + } + } +} + +/******************************************************************************* +* Function Name : setAddrWindow +* Description : command for select a window to write pixel +* Input : x1 horizontal position = 0 to ST7735_TFTWIDTH-1 +* : y1 vertical position = 0 to ST7735_TFTHEIGHT-1 +* : x2 horizontal position = x1 to ST7735_TFTWIDTH-1-x1 +* : y2 vertical position = y1 to ST7735_TFTHEIGHT-1-y1 +* Output : None +* Return : None +*******************************************************************************/ +void setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) +{ + + writecommand(ST7735_CASET); // Column addr set + writedata(0x00); + writedata(x0); // XSTART + writedata(0x00); + writedata(x1); // XEND + + writecommand(ST7735_RASET); // Row addr set + writedata(0x00); + writedata(y0); // YSTART + writedata(0x00); + writedata(y1); // YEND + + writecommand(ST7735_RAMWR); // write to RAM +} + +/******************************************************************************* +* Function Name : init_TFT +* Description : initialization controller display TFT and default screen +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void init_TFT( void) +{ + //init_SPI(); + + // reset +// PD_ODR = PD_ODR | 0x80; // PD7 = nReset = 1 +// PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 +// attend_500ms(); +// PD_ODR = PD_ODR & ~0x80; // PD7 = nReset = 0 +// attend_500ms(); +// PD_ODR = PD_ODR | 0x80; // PD7 = nReset = 1 + +// attend_500ms(); +// PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 + +/* HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // DC= 1 + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, 1); // nRESET = 1 + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0 + attend_500ms(); + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, 0); // nRESET = 0 + attend_500ms(); + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, 1); // nRESET = 1 + attend_500ms(); + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1*/ + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // DC= 1 + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN;// nRESET = 1 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + HAL_Delay(500); + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN<<16;// nRESET = 0 + HAL_Delay(500); + ST7735_RST_PORT->BSRR = (uint32_t)ST7735_RST_PIN;// nRESET = 1 + HAL_Delay(500); + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + + // initialization instruction + commandList(Rcmd1); + commandList(Rcmd2red); + commandList(Rcmd3); + + writecommand(ST7735_MADCTL); + writedata(0xC0); + + // all display background is black + fillRect_TFT(0, 0, ST7735_TFTWIDTH, ST7735_TFTHEIGHT_18, ST7735_BLACK); + + // display LOGO + displayLogo_TFT(); +} + +/******************************************************************************* +* Function Name : drawPixel_TFT +* Description : draw a pixel at position x y with specified color +* Input : x horizontal position = 0 to ST7735_TFTWIDTH-1 +* : y vertical position = 0 to ST7735_TFTHEIGHT-1 +* : color = 16bits RGB=(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void drawPixel_TFT(uint16_t x, uint16_t y, uint16_t color) +{ + uint8_t hi, lo; + + // rudimentary clipping (drawChar w/big text requires this) + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + + setAddrWindow(x, y, x+1, y+1); + + hi = color >> 8; + lo = color ; + +/* + PD_ODR = PD_ODR | 0x01; // PD0 = D/nC = 1 data + PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 + + Write_SPI(hi); + Write_SPI(lo); + + PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 +*/ + +/* HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // D/nC = 1 data + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0 + + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1*/ + + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 +} + + +/******************************************************************************* +* Function Name : fillRect_TFT +* Description : draw a fill rectangle start position x y, dimension w h with specified color +* Input : x horizontal position = 0 to ST7735_TFTWIDTH-1 +* : y vertical position = 0 to ST7735_TFTHEIGHT-1 +* : w width = 1 to ST7735_TFTWIDTH-1-x +* : h height = 1 to ST7735_TFTHEIGHT-1-y +* : color = 16bits RGB(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void fillRect_TFT(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + uint8_t hi, lo; + + // rudimentary clipping (drawChar w/big text requires this) + if((x >= ST7735_TFTWIDTH) || (y >= ST7735_TFTHEIGHT_18)) return; + + if((x + w - 1) >= ST7735_TFTWIDTH) w = ST7735_TFTWIDTH - x; + if((y + h - 1) >= ST7735_TFTHEIGHT_18) h = ST7735_TFTHEIGHT_18 - y; + + // select window + setAddrWindow(x, y, x+w-1, y+h-1); + + hi = color >> 8; + lo = color ; + + /* + PD_ODR = PD_ODR | 0x01; // PD0 = D/nC = 1 data + PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 + + // write pixel in the window + for(y=h; y>0; y--) + { + for(x=w; x>0; x--) + { + Write_SPI(hi); + Write_SPI(lo); + + + } + } + + PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 + */ + + /*HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // D/nC = 1 data + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0*/ + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + + for(y=h; y>0; y--) + { + for(x=w; x>0; x--) + { + + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + + } + } + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 + +} + +/******************************************************************************* +* Function Name : fillScreen_TFT +* Description : fill all the screen with specified color : this take few seconds +* Input : color = 16bits RGB=(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void fillScreen_TFT(uint16_t color) +{ + fillRect_TFT(0, 0, ST7735_TFTWIDTH, ST7735_TFTHEIGHT_18, color); +} + +/******************************************************************************* +* Function Name : displayChar_TFT +* Description : Draw a character 5x7 font for size = 1 +* Input : x horizontal position = 0 to ST7735_TFTWIDTH-1-5xsize +* : y vertical position = 0 to ST7735_TFTHEIGHT-1-7xsize +* : c = 8 bits ASCII code caracter +* : color = 16bits RGB(565) soit RRRRRGGGGGGGBBBBB +* : bg back ground color = 16bits RGB(565) soit RRRRRGGGGGGGBBBBB +* : size = 1 to 10 +* Output : None +* Return : None +*******************************************************************************/ +void displayChar_TFT(uint16_t x, uint16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size) +{ + uint8_t i,j,line; + + + if((x >= ST7735_TFTWIDTH) || // Clip right + (y >= ST7735_TFTHEIGHT_18) || // Clip bottom + ((x + 6 * size - 1) < 0) || // Clip left + ((y + 8 * size - 1) < 0)) // Clip top + return; + + for (i=0; i<6; i++ ) + { + if (i == 5) + line = 0x0; + else + line = pgm_read_byte(tab_font + (c*5) + i); + + for ( j = 0; j<8; j++) + { + if (line & 0x1) + { + if (size == 1) // default size + drawPixel_TFT(x+i, y+j, color); + else + { // big size + fillRect_TFT(x+(i*size), y+(j*size), size, size, color); + } + } + else if (bg != color) + { + if (size == 1) // default size + drawPixel_TFT(x+i, y+j, bg); + else + { // big size + fillRect_TFT(x+i*size, y+j*size, size, size, bg); + } + } + line = line >> 1; + } + } +} + +/******************************************************************************* +* Function Name : drawVLine_TFT +* Description : draw a vertical line +* Input : x horizontal start position = 0 to ST7735_TFTWIDTH-1 +* : y vertical start position = 0 to ST7735_TFTHEIGHT-1-h +* : h height = 1 to ST7735_TFTHEIGHT-1-y +* : color = 16bits RGB(565) soit RRRRRGGGGGGGBBBBB +* Output : None +* Return : None +*******************************************************************************/ +void drawVLine_TFT(uint16_t x, uint16_t y, uint16_t h, uint16_t color) +{ + uint8_t hi = color >> 8, lo = color; +uint8_t i; + + // Rudimentary clipping + //if((x >= ST7735_TFTWIDTH) || // Clip right + // (y >= ST7735_TFTHEIGHT_18) ) // Clip bottom + //return; + // if((y+h-1) >= ST7735_TFTHEIGHT_18) +// h = ST7735_TFTHEIGHT_18-y; + + // select window + setAddrWindow(x, y, x, y+h-1); + +/* + PD_ODR = PD_ODR | 0x01; // PD0 = D/nC = 1 data + PC_ODR = PC_ODR & ~0x80; // PC7 = nCS = 0 + + for(i=y+h; i>=y; i--) + { + + Write_SPI(hi); + Write_SPI(lo); + + } + + PC_ODR = PC_ODR | 0x80; // PC7 = nCS = 1 +*/ + + /*HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1); // D/nC = 1 data + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0); // nCS = 0*/ + + ST7735_D_nC_PORT->BSRR = (uint32_t)ST7735_D_nC_PIN ;// D/nC = 1 data + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN<<16;// nCS = 0 + + + + for(i=y+h; i>y; i--) + { + HAL_SPI_Transmit(&hspi1, &hi, 1, 100); // + HAL_SPI_Transmit(&hspi1, &lo, 1, 100); // + } + + //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1); // nCS = 1 + ST7735_nCS_PORT->BSRR = (uint32_t)ST7735_nCS_PIN;// nCS = 1 +} + +/******************************************************************************* +* Function Name : displayLogo_TFT +* Description : draw a LOGO on screen +* Input : +* Output : None +* Return : None +*******************************************************************************/ +void displayLogo_TFT( void) +{ + uint8_t i,j,k,line; + uint16_t color=ST7735_WHITE; + + + + for(i=0;i<=120;i++) + { + + for(j=0;j<= 1;j++) + { + line=(ALL_IS_mono_120[i+120*j]); + for ( k = 0; k<8; k++) + { + if (line & 0x1) + { + + drawPixel_TFT(i, j*8+k, color); + } + line = line >> 1; + } + } + + color=ST7735_RED; + for(j=2;j<= 3;j++) + { + line=(ALL_IS_mono_120[i+120*j]); + for ( k = 0; k<8; k++) + { + if (line & 0x1) + { + + drawPixel_TFT(i, j*8+k, color); + } + line = line >> 1; + } + } + + color=ST7735_WHITE; + for(j=4;j<= 5;j++) + { + line=(ALL_IS_mono_120[i+120*j]); + for ( k = 0; k<8; k++) + { + if (line & 0x1) + { + + drawPixel_TFT(i, j*8+k, color); + } + line = line >> 1; + } + } + + } +} + diff --git a/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.h b/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.h new file mode 100644 index 0000000..30eaaf2 --- /dev/null +++ b/TP4_INIT_TFT/Drivers/TFT_ST7735/fonc_tft.h @@ -0,0 +1,65 @@ +/************************************************************************ +* TITLE: fonc_tft.h +* AUTHOR: +* DESCRIPTION: include pour afficheur graphique TFT +* VERSION : 1.1 ajout dimension ecran et caractere +* 1.2 suppression redefinition uint8_t et uint16_t +* +************************************************************************/ + + + +/* DEFINE **************************************************************/ + + +// Color definitions +#define ST7735_BLACK 0x0000 +#define ST7735_BLUE 0x001F +#define ST7735_RED 0xF800 +#define ST7735_GREEN 0x07E0 +#define ST7735_CYAN 0x07FF +#define ST7735_MAGENTA 0xF81F +#define ST7735_YELLOW 0xFFE0 +#define ST7735_WHITE 0xFFFF + +// size TFT display +#define ST7735_TFTWIDTH 128 // Width TFT display +#define ST7735_TFTHEIGHT_18 160 // Heigt TFT 1.8" display + +// size character on screen +#define DIM_CHAR_X_TFT 6 // H character dimension (5 pixel + intercaracter 1 pixel) when size=1 +#define DIM_CHAR_Y_TFT 8 // V character dimension (7 pixel + intercaracter 1 pixel) when size=1 + + +// ST7735 RST (Reset) pin +#define ST7735_RST_PORT GPIOD +#define ST7735_RST_PIN GPIO_PIN_2 + +// ST7735 (Data/Command select) pin +#define ST7735_D_nC_PORT GPIOC +#define ST7735_D_nC_PIN GPIO_PIN_2 + +// ST7735 CS (Chip Select) pin +#define ST7735_nCS_PORT GPIOC +#define ST7735_nCS_PIN GPIO_PIN_1 + + +/* PROTOTYPE *************************************************************/ + +// init screen +void init_TFT( void); + +// draw pixel +void drawPixel_TFT(uint16_t x, uint16_t y, uint16_t color); + +// fill a rectangle +void fillRect_TFT(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color); + +// fill screen +void fillScreen_TFT(uint16_t color); + +// Draw a character +void displayChar_TFT(uint16_t x, uint16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size); + +// Draw a vertical line +void drawVLine_TFT(uint16_t x, uint16_t y, uint16_t h, uint16_t color); diff --git a/TP4_INIT_TFT/STM32L152RETX_FLASH.ld b/TP4_INIT_TFT/STM32L152RETX_FLASH.ld new file mode 100644 index 0000000..c25a2cf --- /dev/null +++ b/TP4_INIT_TFT/STM32L152RETX_FLASH.ld @@ -0,0 +1,187 @@ +/* +****************************************************************************** +** +** @file : LinkerScript.ld +** +** @author : Auto-generated by STM32CubeIDE +** +** @brief : Linker script for STM32L152RETx Device from STM32L1 series +** 512KBytes FLASH +** 80KBytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +****************************************************************************** +** @attention +** +** Copyright (c) 2025 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +****************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 80K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/TP4_INIT_TFT/STM32L152RETX_RAM.ld b/TP4_INIT_TFT/STM32L152RETX_RAM.ld new file mode 100644 index 0000000..5686e2c --- /dev/null +++ b/TP4_INIT_TFT/STM32L152RETX_RAM.ld @@ -0,0 +1,187 @@ +/* +****************************************************************************** +** +** @file : LinkerScript.ld (debug in RAM dedicated) +** +** @author : Auto-generated by STM32CubeIDE +** +** @brief : Linker script for STM32L152RETx Device from STM32L1 series +** 512KBytes FLASH +** 80KBytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +****************************************************************************** +** @attention +** +** Copyright (c) 2025 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +****************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 80K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "RAM" Ram type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >RAM + + /* The program code and other data into "RAM" Ram type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >RAM + + /* Constant data into "RAM" Ram type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >RAM + + .ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >RAM + + .ARM (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >RAM + + .preinit_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >RAM + + .init_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >RAM + + .fini_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >RAM + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/TP4_INIT_TFT/TP4_INIT_TFT Debug.launch b/TP4_INIT_TFT/TP4_INIT_TFT Debug.launch new file mode 100644 index 0000000..648b7b0 --- /dev/null +++ b/TP4_INIT_TFT/TP4_INIT_TFT Debug.launch @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TP4_INIT_TFT/TP4_INIT_TFT.ioc b/TP4_INIT_TFT/TP4_INIT_TFT.ioc new file mode 100644 index 0000000..533bd72 --- /dev/null +++ b/TP4_INIT_TFT/TP4_INIT_TFT.ioc @@ -0,0 +1,145 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.CPN=STM32L152RET6 +Mcu.Family=STM32L1 +Mcu.IP0=NVIC +Mcu.IP1=RCC +Mcu.IP2=SPI1 +Mcu.IP3=SYS +Mcu.IPNb=4 +Mcu.Name=STM32L152RETx +Mcu.Package=LQFP64 +Mcu.Pin0=PC0 +Mcu.Pin1=PC1 +Mcu.Pin10=VP_SYS_VS_Systick +Mcu.Pin2=PC2 +Mcu.Pin3=PC3 +Mcu.Pin4=PA5 +Mcu.Pin5=PA6 +Mcu.Pin6=PA7 +Mcu.Pin7=PB15 +Mcu.Pin8=PD2 +Mcu.Pin9=PB7 +Mcu.PinsNb=11 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32L152RETx +MxCube.Version=6.14.1 +MxDb.Version=DB.6.0.141 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA5.Locked=true +PA5.Mode=Full_Duplex_Master +PA5.Signal=SPI1_SCK +PA6.Locked=true +PA6.Mode=Full_Duplex_Master +PA6.Signal=SPI1_MISO +PA7.Locked=true +PA7.Mode=Full_Duplex_Master +PA7.Signal=SPI1_MOSI +PB15.Locked=true +PB15.Signal=S_TIM11_CH1 +PB7.Locked=true +PB7.Signal=S_TIM4_CH2 +PC0.Locked=true +PC0.Signal=GPIO_Output +PC1.GPIOParameters=PinState +PC1.Locked=true +PC1.PinState=GPIO_PIN_SET +PC1.Signal=GPIO_Output +PC2.GPIOParameters=PinState +PC2.Locked=true +PC2.PinState=GPIO_PIN_SET +PC2.Signal=GPIO_Output +PC3.GPIOParameters=PinState +PC3.Locked=true +PC3.PinState=GPIO_PIN_SET +PC3.Signal=GPIO_Output +PD2.GPIOParameters=PinState +PD2.Locked=true +PD2.PinState=GPIO_PIN_SET +PD2.Signal=GPIO_Output +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerLinker=GCC +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32L152RETx +ProjectManager.FirmwarePackage=STM32Cube FW_L1 V1.10.5 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=TP4_INIT_TFT.ioc +ProjectManager.ProjectName=TP4_INIT_TFT +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_SPI1_Init-SPI1-false-HAL-true +RCC.AHBFreq_Value=16000000 +RCC.APB1Freq_Value=16000000 +RCC.APB1TimFreq_Value=16000000 +RCC.APB2Freq_Value=16000000 +RCC.APB2TimFreq_Value=16000000 +RCC.FCLKCortexFreq_Value=16000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=16000000 +RCC.HSE_VALUE=24000000 +RCC.HSI_VALUE=16000000 +RCC.IPParameters=AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,LSE_VALUE,LSI_VALUE,MCOPinFreq_Value,MSI_VALUE,PLLCLKFreq_Value,PWRFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIMFreq_Value,TimerFreq_Value,VCOOutputFreq_Value +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=37000 +RCC.MCOPinFreq_Value=16000000 +RCC.MSI_VALUE=2097000 +RCC.PLLCLKFreq_Value=24000000 +RCC.PWRFreq_Value=16000000 +RCC.RTCFreq_Value=37000 +RCC.RTCHSEDivFreq_Value=12000000 +RCC.SYSCLKFreq_VALUE=16000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSI +RCC.TIMFreq_Value=16000000 +RCC.TimerFreq_Value=16000000 +RCC.VCOOutputFreq_Value=48000000 +SH.S_TIM11_CH1.0=TIM11_CH1 +SH.S_TIM11_CH1.ConfNb=1 +SH.S_TIM4_CH2.0=TIM4_CH2 +SH.S_TIM4_CH2.ConfNb=1 +SPI1.CalculateBaudRate=8.0 MBits/s +SPI1.Direction=SPI_DIRECTION_2LINES +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate +SPI1.Mode=SPI_MODE_MASTER +SPI1.VirtualType=VM_MASTER +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom +isbadioc=false

TG5>XF_7qIismrWNl&eQu=wM#b@|ax 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 Y{9tRbe8K6}e~3F1^siEa8N}lL8zo4)DF6Tf literal 0 HcmV?d00001 diff --git a/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.su b/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.su new file mode 100644 index 0000000..5da287d --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/fonc_tft.su @@ -0,0 +1,12 @@ +../Drivers/TFT_ST7735/fonc_tft.c:566:6:Write_SPI 16 static +../Drivers/TFT_ST7735/fonc_tft.c:586:6:writecommand 16 static +../Drivers/TFT_ST7735/fonc_tft.c:617:6:writedata 16 static +../Drivers/TFT_ST7735/fonc_tft.c:649:6:commandList 24 static +../Drivers/TFT_ST7735/fonc_tft.c:683:6:setAddrWindow 24 static +../Drivers/TFT_ST7735/fonc_tft.c:708:6:init_TFT 16 static +../Drivers/TFT_ST7735/fonc_tft.c:768:6:drawPixel_TFT 24 static +../Drivers/TFT_ST7735/fonc_tft.c:820:6:fillRect_TFT 32 static +../Drivers/TFT_ST7735/fonc_tft.c:884:6:fillScreen_TFT 24 static +../Drivers/TFT_ST7735/fonc_tft.c:901:6:displayChar_TFT 40 static +../Drivers/TFT_ST7735/fonc_tft.c:954:6:drawVLine_TFT 32 static +../Drivers/TFT_ST7735/fonc_tft.c:1009:6:displayLogo_TFT 16 static diff --git a/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/subdir.mk b/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/subdir.mk new file mode 100644 index 0000000..69902e9 --- /dev/null +++ b/TP4_INIT_TFT/Debug/Drivers/TFT_ST7735/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Drivers/TFT_ST7735/fonc_tft.c + +OBJS += \ +./Drivers/TFT_ST7735/fonc_tft.o + +C_DEPS += \ +./Drivers/TFT_ST7735/fonc_tft.d + + +# Each subdirectory must supply rules for building sources it contributes +Drivers/TFT_ST7735/%.o Drivers/TFT_ST7735/%.su Drivers/TFT_ST7735/%.cyclo: ../Drivers/TFT_ST7735/%.c Drivers/TFT_ST7735/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32L152xE -c -I../Core/Inc -I../Drivers/STM32L1xx_HAL_Driver/Inc -I../Drivers/STM32L1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32L1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/7Seg_MAX7219 -I../Drivers/TFT_ST7735 -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Drivers-2f-TFT_ST7735 + +clean-Drivers-2f-TFT_ST7735: + -$(RM) ./Drivers/TFT_ST7735/fonc_tft.cyclo ./Drivers/TFT_ST7735/fonc_tft.d ./Drivers/TFT_ST7735/fonc_tft.o ./Drivers/TFT_ST7735/fonc_tft.su + +.PHONY: clean-Drivers-2f-TFT_ST7735 + diff --git a/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.list b/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.list new file mode 100644 index 0000000..b4aed8b --- /dev/null +++ b/TP4_INIT_TFT/Debug/TP2_INIT_DISPLAY.list @@ -0,0 +1,5454 @@ + +TP2_INIT_DISPLAY.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000013c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00001f50 0800013c 0800013c 0000113c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000002c 0800208c 0800208c 0000308c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 080020b8 080020b8 0000400c 2**0 + CONTENTS, READONLY + 4 .ARM 00000008 080020b8 080020b8 000030b8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 080020c0 080020c0 0000400c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 080020c0 080020c0 000030c0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 080020c4 080020c4 000030c4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 0000000c 20000000 080020c8 00004000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 00000078 2000000c 080020d4 0000400c 2**2 + ALLOC + 10 ._user_heap_stack 00000604 20000084 080020d4 00004084 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000400c 2**0 + CONTENTS, READONLY + 12 .debug_info 0000573e 00000000 00000000 00004035 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 0000145f 00000000 00000000 00009773 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000660 00000000 00000000 0000abd8 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 000004b4 00000000 00000000 0000b238 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 0001499e 00000000 00000000 0000b6ec 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 00006fc2 00000000 00000000 0002008a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 00081143 00000000 00000000 0002704c 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000a818f 2**0 + CONTENTS, READONLY + 20 .debug_frame 000018ac 00000000 00000000 000a81d4 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000070 00000000 00000000 000a9a80 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800013c <__do_global_dtors_aux>: + 800013c: b510 push {r4, lr} + 800013e: 4c05 ldr r4, [pc, #20] @ (8000154 <__do_global_dtors_aux+0x18>) + 8000140: 7823 ldrb r3, [r4, #0] + 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16> + 8000144: 4b04 ldr r3, [pc, #16] @ (8000158 <__do_global_dtors_aux+0x1c>) + 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12> + 8000148: 4804 ldr r0, [pc, #16] @ (800015c <__do_global_dtors_aux+0x20>) + 800014a: f3af 8000 nop.w + 800014e: 2301 movs r3, #1 + 8000150: 7023 strb r3, [r4, #0] + 8000152: bd10 pop {r4, pc} + 8000154: 2000000c .word 0x2000000c + 8000158: 00000000 .word 0x00000000 + 800015c: 08002074 .word 0x08002074 + +08000160 : + 8000160: b508 push {r3, lr} + 8000162: 4b03 ldr r3, [pc, #12] @ (8000170 ) + 8000164: b11b cbz r3, 800016e + 8000166: 4903 ldr r1, [pc, #12] @ (8000174 ) + 8000168: 4803 ldr r0, [pc, #12] @ (8000178 ) + 800016a: f3af 8000 nop.w + 800016e: bd08 pop {r3, pc} + 8000170: 00000000 .word 0x00000000 + 8000174: 20000010 .word 0x20000010 + 8000178: 08002074 .word 0x08002074 + +0800017c <__aeabi_uldivmod>: + 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18> + 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18> + 8000180: 2900 cmp r1, #0 + 8000182: bf08 it eq + 8000184: 2800 cmpeq r0, #0 + 8000186: bf1c itt ne + 8000188: f04f 31ff movne.w r1, #4294967295 @ 0xffffffff + 800018c: f04f 30ff movne.w r0, #4294967295 @ 0xffffffff + 8000190: f000 b98c b.w 80004ac <__aeabi_idiv0> + 8000194: f1ad 0c08 sub.w ip, sp, #8 + 8000198: e96d ce04 strd ip, lr, [sp, #-16]! + 800019c: f000 f806 bl 80001ac <__udivmoddi4> + 80001a0: f8dd e004 ldr.w lr, [sp, #4] + 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8] + 80001a8: b004 add sp, #16 + 80001aa: 4770 bx lr + +080001ac <__udivmoddi4>: + 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80001b0: 9d08 ldr r5, [sp, #32] + 80001b2: 468e mov lr, r1 + 80001b4: 4604 mov r4, r0 + 80001b6: 4688 mov r8, r1 + 80001b8: 2b00 cmp r3, #0 + 80001ba: d14a bne.n 8000252 <__udivmoddi4+0xa6> + 80001bc: 428a cmp r2, r1 + 80001be: 4617 mov r7, r2 + 80001c0: d962 bls.n 8000288 <__udivmoddi4+0xdc> + 80001c2: fab2 f682 clz r6, r2 + 80001c6: b14e cbz r6, 80001dc <__udivmoddi4+0x30> + 80001c8: f1c6 0320 rsb r3, r6, #32 + 80001cc: fa01 f806 lsl.w r8, r1, r6 + 80001d0: fa20 f303 lsr.w r3, r0, r3 + 80001d4: 40b7 lsls r7, r6 + 80001d6: ea43 0808 orr.w r8, r3, r8 + 80001da: 40b4 lsls r4, r6 + 80001dc: ea4f 4e17 mov.w lr, r7, lsr #16 + 80001e0: fbb8 f1fe udiv r1, r8, lr + 80001e4: fa1f fc87 uxth.w ip, r7 + 80001e8: fb0e 8811 mls r8, lr, r1, r8 + 80001ec: fb01 f20c mul.w r2, r1, ip + 80001f0: 0c23 lsrs r3, r4, #16 + 80001f2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 80001f6: 429a cmp r2, r3 + 80001f8: d909 bls.n 800020e <__udivmoddi4+0x62> + 80001fa: 18fb adds r3, r7, r3 + 80001fc: f101 30ff add.w r0, r1, #4294967295 @ 0xffffffff + 8000200: f080 80eb bcs.w 80003da <__udivmoddi4+0x22e> + 8000204: 429a cmp r2, r3 + 8000206: f240 80e8 bls.w 80003da <__udivmoddi4+0x22e> + 800020a: 3902 subs r1, #2 + 800020c: 443b add r3, r7 + 800020e: 1a9a subs r2, r3, r2 + 8000210: fbb2 f0fe udiv r0, r2, lr + 8000214: fb0e 2210 mls r2, lr, r0, r2 + 8000218: fb00 fc0c mul.w ip, r0, ip + 800021c: b2a3 uxth r3, r4 + 800021e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8000222: 459c cmp ip, r3 + 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e> + 8000226: 18fb adds r3, r7, r3 + 8000228: f100 32ff add.w r2, r0, #4294967295 @ 0xffffffff + 800022c: f080 80d7 bcs.w 80003de <__udivmoddi4+0x232> + 8000230: 459c cmp ip, r3 + 8000232: f240 80d4 bls.w 80003de <__udivmoddi4+0x232> + 8000236: 443b add r3, r7 + 8000238: 3802 subs r0, #2 + 800023a: ea40 4001 orr.w r0, r0, r1, lsl #16 + 800023e: 2100 movs r1, #0 + 8000240: eba3 030c sub.w r3, r3, ip + 8000244: b11d cbz r5, 800024e <__udivmoddi4+0xa2> + 8000246: 2200 movs r2, #0 + 8000248: 40f3 lsrs r3, r6 + 800024a: e9c5 3200 strd r3, r2, [r5] + 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000252: 428b cmp r3, r1 + 8000254: d905 bls.n 8000262 <__udivmoddi4+0xb6> + 8000256: b10d cbz r5, 800025c <__udivmoddi4+0xb0> + 8000258: e9c5 0100 strd r0, r1, [r5] + 800025c: 2100 movs r1, #0 + 800025e: 4608 mov r0, r1 + 8000260: e7f5 b.n 800024e <__udivmoddi4+0xa2> + 8000262: fab3 f183 clz r1, r3 + 8000266: 2900 cmp r1, #0 + 8000268: d146 bne.n 80002f8 <__udivmoddi4+0x14c> + 800026a: 4573 cmp r3, lr + 800026c: d302 bcc.n 8000274 <__udivmoddi4+0xc8> + 800026e: 4282 cmp r2, r0 + 8000270: f200 8108 bhi.w 8000484 <__udivmoddi4+0x2d8> + 8000274: 1a84 subs r4, r0, r2 + 8000276: eb6e 0203 sbc.w r2, lr, r3 + 800027a: 2001 movs r0, #1 + 800027c: 4690 mov r8, r2 + 800027e: 2d00 cmp r5, #0 + 8000280: d0e5 beq.n 800024e <__udivmoddi4+0xa2> + 8000282: e9c5 4800 strd r4, r8, [r5] + 8000286: e7e2 b.n 800024e <__udivmoddi4+0xa2> + 8000288: 2a00 cmp r2, #0 + 800028a: f000 8091 beq.w 80003b0 <__udivmoddi4+0x204> + 800028e: fab2 f682 clz r6, r2 + 8000292: 2e00 cmp r6, #0 + 8000294: f040 80a5 bne.w 80003e2 <__udivmoddi4+0x236> + 8000298: 1a8a subs r2, r1, r2 + 800029a: 2101 movs r1, #1 + 800029c: 0c03 lsrs r3, r0, #16 + 800029e: ea4f 4e17 mov.w lr, r7, lsr #16 + 80002a2: b280 uxth r0, r0 + 80002a4: b2bc uxth r4, r7 + 80002a6: fbb2 fcfe udiv ip, r2, lr + 80002aa: fb0e 221c mls r2, lr, ip, r2 + 80002ae: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80002b2: fb04 f20c mul.w r2, r4, ip + 80002b6: 429a cmp r2, r3 + 80002b8: d907 bls.n 80002ca <__udivmoddi4+0x11e> + 80002ba: 18fb adds r3, r7, r3 + 80002bc: f10c 38ff add.w r8, ip, #4294967295 @ 0xffffffff + 80002c0: d202 bcs.n 80002c8 <__udivmoddi4+0x11c> + 80002c2: 429a cmp r2, r3 + 80002c4: f200 80e3 bhi.w 800048e <__udivmoddi4+0x2e2> + 80002c8: 46c4 mov ip, r8 + 80002ca: 1a9b subs r3, r3, r2 + 80002cc: fbb3 f2fe udiv r2, r3, lr + 80002d0: fb0e 3312 mls r3, lr, r2, r3 + 80002d4: fb02 f404 mul.w r4, r2, r4 + 80002d8: ea40 4303 orr.w r3, r0, r3, lsl #16 + 80002dc: 429c cmp r4, r3 + 80002de: d907 bls.n 80002f0 <__udivmoddi4+0x144> + 80002e0: 18fb adds r3, r7, r3 + 80002e2: f102 30ff add.w r0, r2, #4294967295 @ 0xffffffff + 80002e6: d202 bcs.n 80002ee <__udivmoddi4+0x142> + 80002e8: 429c cmp r4, r3 + 80002ea: f200 80cd bhi.w 8000488 <__udivmoddi4+0x2dc> + 80002ee: 4602 mov r2, r0 + 80002f0: 1b1b subs r3, r3, r4 + 80002f2: ea42 400c orr.w r0, r2, ip, lsl #16 + 80002f6: e7a5 b.n 8000244 <__udivmoddi4+0x98> + 80002f8: f1c1 0620 rsb r6, r1, #32 + 80002fc: 408b lsls r3, r1 + 80002fe: fa22 f706 lsr.w r7, r2, r6 + 8000302: 431f orrs r7, r3 + 8000304: fa2e fa06 lsr.w sl, lr, r6 + 8000308: ea4f 4917 mov.w r9, r7, lsr #16 + 800030c: fbba f8f9 udiv r8, sl, r9 + 8000310: fa0e fe01 lsl.w lr, lr, r1 + 8000314: fa20 f306 lsr.w r3, r0, r6 + 8000318: fb09 aa18 mls sl, r9, r8, sl + 800031c: fa1f fc87 uxth.w ip, r7 + 8000320: ea43 030e orr.w r3, r3, lr + 8000324: fa00 fe01 lsl.w lr, r0, r1 + 8000328: fb08 f00c mul.w r0, r8, ip + 800032c: 0c1c lsrs r4, r3, #16 + 800032e: ea44 440a orr.w r4, r4, sl, lsl #16 + 8000332: 42a0 cmp r0, r4 + 8000334: fa02 f201 lsl.w r2, r2, r1 + 8000338: d90a bls.n 8000350 <__udivmoddi4+0x1a4> + 800033a: 193c adds r4, r7, r4 + 800033c: f108 3aff add.w sl, r8, #4294967295 @ 0xffffffff + 8000340: f080 809e bcs.w 8000480 <__udivmoddi4+0x2d4> + 8000344: 42a0 cmp r0, r4 + 8000346: f240 809b bls.w 8000480 <__udivmoddi4+0x2d4> + 800034a: f1a8 0802 sub.w r8, r8, #2 + 800034e: 443c add r4, r7 + 8000350: 1a24 subs r4, r4, r0 + 8000352: b298 uxth r0, r3 + 8000354: fbb4 f3f9 udiv r3, r4, r9 + 8000358: fb09 4413 mls r4, r9, r3, r4 + 800035c: fb03 fc0c mul.w ip, r3, ip + 8000360: ea40 4404 orr.w r4, r0, r4, lsl #16 + 8000364: 45a4 cmp ip, r4 + 8000366: d909 bls.n 800037c <__udivmoddi4+0x1d0> + 8000368: 193c adds r4, r7, r4 + 800036a: f103 30ff add.w r0, r3, #4294967295 @ 0xffffffff + 800036e: f080 8085 bcs.w 800047c <__udivmoddi4+0x2d0> + 8000372: 45a4 cmp ip, r4 + 8000374: f240 8082 bls.w 800047c <__udivmoddi4+0x2d0> + 8000378: 3b02 subs r3, #2 + 800037a: 443c add r4, r7 + 800037c: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8000380: eba4 040c sub.w r4, r4, ip + 8000384: fba0 8c02 umull r8, ip, r0, r2 + 8000388: 4564 cmp r4, ip + 800038a: 4643 mov r3, r8 + 800038c: 46e1 mov r9, ip + 800038e: d364 bcc.n 800045a <__udivmoddi4+0x2ae> + 8000390: d061 beq.n 8000456 <__udivmoddi4+0x2aa> + 8000392: b15d cbz r5, 80003ac <__udivmoddi4+0x200> + 8000394: ebbe 0203 subs.w r2, lr, r3 + 8000398: eb64 0409 sbc.w r4, r4, r9 + 800039c: fa04 f606 lsl.w r6, r4, r6 + 80003a0: fa22 f301 lsr.w r3, r2, r1 + 80003a4: 431e orrs r6, r3 + 80003a6: 40cc lsrs r4, r1 + 80003a8: e9c5 6400 strd r6, r4, [r5] + 80003ac: 2100 movs r1, #0 + 80003ae: e74e b.n 800024e <__udivmoddi4+0xa2> + 80003b0: fbb1 fcf2 udiv ip, r1, r2 + 80003b4: 0c01 lsrs r1, r0, #16 + 80003b6: ea41 410e orr.w r1, r1, lr, lsl #16 + 80003ba: b280 uxth r0, r0 + 80003bc: ea40 4201 orr.w r2, r0, r1, lsl #16 + 80003c0: 463b mov r3, r7 + 80003c2: fbb1 f1f7 udiv r1, r1, r7 + 80003c6: 4638 mov r0, r7 + 80003c8: 463c mov r4, r7 + 80003ca: 46b8 mov r8, r7 + 80003cc: 46be mov lr, r7 + 80003ce: 2620 movs r6, #32 + 80003d0: eba2 0208 sub.w r2, r2, r8 + 80003d4: ea41 410c orr.w r1, r1, ip, lsl #16 + 80003d8: e765 b.n 80002a6 <__udivmoddi4+0xfa> + 80003da: 4601 mov r1, r0 + 80003dc: e717 b.n 800020e <__udivmoddi4+0x62> + 80003de: 4610 mov r0, r2 + 80003e0: e72b b.n 800023a <__udivmoddi4+0x8e> + 80003e2: f1c6 0120 rsb r1, r6, #32 + 80003e6: fa2e fc01 lsr.w ip, lr, r1 + 80003ea: 40b7 lsls r7, r6 + 80003ec: fa0e fe06 lsl.w lr, lr, r6 + 80003f0: fa20 f101 lsr.w r1, r0, r1 + 80003f4: ea41 010e orr.w r1, r1, lr + 80003f8: ea4f 4e17 mov.w lr, r7, lsr #16 + 80003fc: fbbc f8fe udiv r8, ip, lr + 8000400: b2bc uxth r4, r7 + 8000402: fb0e cc18 mls ip, lr, r8, ip + 8000406: fb08 f904 mul.w r9, r8, r4 + 800040a: 0c0a lsrs r2, r1, #16 + 800040c: ea42 420c orr.w r2, r2, ip, lsl #16 + 8000410: 40b0 lsls r0, r6 + 8000412: 4591 cmp r9, r2 + 8000414: ea4f 4310 mov.w r3, r0, lsr #16 + 8000418: b280 uxth r0, r0 + 800041a: d93e bls.n 800049a <__udivmoddi4+0x2ee> + 800041c: 18ba adds r2, r7, r2 + 800041e: f108 3cff add.w ip, r8, #4294967295 @ 0xffffffff + 8000422: d201 bcs.n 8000428 <__udivmoddi4+0x27c> + 8000424: 4591 cmp r9, r2 + 8000426: d81f bhi.n 8000468 <__udivmoddi4+0x2bc> + 8000428: eba2 0209 sub.w r2, r2, r9 + 800042c: fbb2 f9fe udiv r9, r2, lr + 8000430: fb09 f804 mul.w r8, r9, r4 + 8000434: fb0e 2a19 mls sl, lr, r9, r2 + 8000438: b28a uxth r2, r1 + 800043a: ea42 420a orr.w r2, r2, sl, lsl #16 + 800043e: 4542 cmp r2, r8 + 8000440: d229 bcs.n 8000496 <__udivmoddi4+0x2ea> + 8000442: 18ba adds r2, r7, r2 + 8000444: f109 31ff add.w r1, r9, #4294967295 @ 0xffffffff + 8000448: d2c2 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044a: 4542 cmp r2, r8 + 800044c: d2c0 bcs.n 80003d0 <__udivmoddi4+0x224> + 800044e: f1a9 0102 sub.w r1, r9, #2 + 8000452: 443a add r2, r7 + 8000454: e7bc b.n 80003d0 <__udivmoddi4+0x224> + 8000456: 45c6 cmp lr, r8 + 8000458: d29b bcs.n 8000392 <__udivmoddi4+0x1e6> + 800045a: ebb8 0302 subs.w r3, r8, r2 + 800045e: eb6c 0c07 sbc.w ip, ip, r7 + 8000462: 3801 subs r0, #1 + 8000464: 46e1 mov r9, ip + 8000466: e794 b.n 8000392 <__udivmoddi4+0x1e6> + 8000468: eba7 0909 sub.w r9, r7, r9 + 800046c: 444a add r2, r9 + 800046e: fbb2 f9fe udiv r9, r2, lr + 8000472: f1a8 0c02 sub.w ip, r8, #2 + 8000476: fb09 f804 mul.w r8, r9, r4 + 800047a: e7db b.n 8000434 <__udivmoddi4+0x288> + 800047c: 4603 mov r3, r0 + 800047e: e77d b.n 800037c <__udivmoddi4+0x1d0> + 8000480: 46d0 mov r8, sl + 8000482: e765 b.n 8000350 <__udivmoddi4+0x1a4> + 8000484: 4608 mov r0, r1 + 8000486: e6fa b.n 800027e <__udivmoddi4+0xd2> + 8000488: 443b add r3, r7 + 800048a: 3a02 subs r2, #2 + 800048c: e730 b.n 80002f0 <__udivmoddi4+0x144> + 800048e: f1ac 0c02 sub.w ip, ip, #2 + 8000492: 443b add r3, r7 + 8000494: e719 b.n 80002ca <__udivmoddi4+0x11e> + 8000496: 4649 mov r1, r9 + 8000498: e79a b.n 80003d0 <__udivmoddi4+0x224> + 800049a: eba2 0209 sub.w r2, r2, r9 + 800049e: fbb2 f9fe udiv r9, r2, lr + 80004a2: 46c4 mov ip, r8 + 80004a4: fb09 f804 mul.w r8, r9, r4 + 80004a8: e7c4 b.n 8000434 <__udivmoddi4+0x288> + 80004aa: bf00 nop + +080004ac <__aeabi_idiv0>: + 80004ac: 4770 bx lr + 80004ae: bf00 nop + +080004b0 : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void affiche(uint8_t nombre) { + 80004b0: b580 push {r7, lr} + 80004b2: b084 sub sp, #16 + 80004b4: af00 add r7, sp, #0 + 80004b6: 4603 mov r3, r0 + 80004b8: 71fb strb r3, [r7, #7] + uint8_t compt_uni; + uint8_t compt_diz; + + compt_uni = nombre % 10; + 80004ba: 79fa ldrb r2, [r7, #7] + 80004bc: 4b13 ldr r3, [pc, #76] @ (800050c ) + 80004be: fba3 1302 umull r1, r3, r3, r2 + 80004c2: 08d9 lsrs r1, r3, #3 + 80004c4: 460b mov r3, r1 + 80004c6: 009b lsls r3, r3, #2 + 80004c8: 440b add r3, r1 + 80004ca: 005b lsls r3, r3, #1 + 80004cc: 1ad3 subs r3, r2, r3 + 80004ce: 73fb strb r3, [r7, #15] + compt_diz = nombre / 10; + 80004d0: 79fb ldrb r3, [r7, #7] + 80004d2: 4a0e ldr r2, [pc, #56] @ (800050c ) + 80004d4: fba2 2303 umull r2, r3, r2, r3 + 80004d8: 08db lsrs r3, r3, #3 + 80004da: 73bb strb r3, [r7, #14] + + MAX7219_DisplayChar(1, compt_diz); + 80004dc: 7bbb ldrb r3, [r7, #14] + 80004de: 4619 mov r1, r3 + 80004e0: 2001 movs r0, #1 + 80004e2: f000 fa0d bl 8000900 + MAX7219_DisplayChar(2, compt_uni); + 80004e6: 7bfb ldrb r3, [r7, #15] + 80004e8: 4619 mov r1, r3 + 80004ea: 2002 movs r0, #2 + 80004ec: f000 fa08 bl 8000900 + MAX7219_DisplayChar(3, compt_diz); + 80004f0: 7bbb ldrb r3, [r7, #14] + 80004f2: 4619 mov r1, r3 + 80004f4: 2003 movs r0, #3 + 80004f6: f000 fa03 bl 8000900 + MAX7219_DisplayChar(4, compt_uni); + 80004fa: 7bfb ldrb r3, [r7, #15] + 80004fc: 4619 mov r1, r3 + 80004fe: 2004 movs r0, #4 + 8000500: f000 f9fe bl 8000900 +} + 8000504: bf00 nop + 8000506: 3710 adds r7, #16 + 8000508: 46bd mov sp, r7 + 800050a: bd80 pop {r7, pc} + 800050c: cccccccd .word 0xcccccccd + +08000510